anmoel.kubernetes

Ansible 角色:Kubernetes

管道状态 覆盖报告

简介

一个用于在 Linux 上安装 Kubernetes 的 Ansible 角色。

要求

  • Docker;推荐的 Docker 安装角色:geerlingguy.docker
  • 负载均衡器或 keepalived 用于高可用性;推荐的 keepalived 安装角色:evrardjp.keepalived

依赖

  • Python 库 Docker

变量

通用

名称 默认值 描述
kubernetes_cluster_name "kubernetes" Kubernetes 集群名称
kubernetes_master_version "v1.13.2" Kubernetes 主组件的版本
kubernetes_version_rhel_package '1.13.2' 仅适用于 Red Hat,kubectl、kubeadm、kubelet 的版本
kubernetes_yum_arch x86_64 仅适用于 Red Hat
kubernetes_apt_repo_url http://apt.kubernetes.io/ 仅适用于 Debian,Kubernetes 存储库
kubernetes_apt_repo_pool kubernetes-xenial 仅适用于 Debian,Kubernetes 存储库池
kubernetes_useHyperKubeImage "false" 切换到使用 hyperkube 作为控制面板 Docker 镜像
kubernetes_dns_type "CoreDNS" Kubernetes 中的 DNS 插件,可以是:"kube-dns" 或 "CoreDNS"
kubernetes_imageRepository "k8s.gcr.io" Kubernetes 主组件的 Docker 注册表
kubernetes_config_dir "/etc/kubernetes" 配置路径
kubernetes_certs_dir "{{ kubernetes_config_dir }}/pki" 证书文件夹
kubernetes_pod_manifest_path 静态 Pod 清单存储的绝对路径 "{{ kubernetes_config_dir }}/manifests"
kubernetes_log_dir "{{ kubernetes_log_dir }}/audit" 日志文件夹
kubernetes_audit_log_dir "/var/log/kubernetes/audit" 审计日志文件夹
kubernetes_log_age 2 日志文件的最大年龄
kubernetes_authorization_mode "Node,RBAC" Kubernetes 授权模式
kubernetes_enable_admission_plugins "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota" 启用的 Kubernetes 入场插件
kubernetes_dns_domain "cluster.local" Kubernetes 集群的内部 DNS 域
kubernetes_pod_subnet "10.244.0.0/16" Pod 的 IPv4 子网,必须是一个 CIDR
kubernetes_service_subnet "10.96.0.0/16" 服务的 IPv4 子网,必须是一个 CIDR
kubernetes_kubelet_extra_args "" kubelet 守护进程的额外参数
kubernetes_packages false - name: kubelet
state: present
- name: kubectl
state: present
- name: kubeadm
state: present
- name: kubernetes-cni
state: present
kubernetes_version_kubeadm 'stable-{{ kubernetes_version }}' kubeadm 的版本

API 服务器

名称 默认值 描述
kubernetes_apiserver_dns "" Kubernetes API 服务器的 DNS 名称
kubernetes_apiserver_ip - Kubernetes API 服务器负载均衡器的虚拟 IP
kubernetes_apiserver_port 6443 Kubernetes API 服务器的端口
kubernetes_apiserver_manifest_file '{{ kubernetes_pod_manifest_path }}/kube-apiserver.yaml' 清单文件的绝对路径

Etcd

名称 描述 默认值
kubernetes_etcd_certs_dir 存储 Etcd 证书的路径 '{{ kubernetes_certs_dir }}/etcd'
kubernetes_etcd_ca_cert_file Etcd 根 CA 证书文件 '{{ kubernetes_etcd_certs_dir }}/ca.crt'
kubernetes_etcd_ca_key_file Etcd 根 CA 密钥文件 '{{ kubernetes_etcd_certs_dir }}/ca.key'
kubernetes_etcd_server_cert_file Etcd 服务器证书文件 '{{ kubernetes_etcd_certs_dir }}/server.crt'
kubernetes_etcd_server_key_file Etcd 服务器密钥文件 '{{ kubernetes_etcd_certs_dir }}/server.key'
kubernetes_etcd_peer_cert_file '{{ kubernetes_etcd_certs_dir }}/peer.crt'
kubernetes_etcd_peer_key_file '{{ kubernetes_etcd_certs_dir }}/peer.key'
kubernetes_etcd_healthcheck_client_cert_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.crt'
kubernetes_etcd_healthcheck_client_key_file '{{ kubernetes_etcd_certs_dir }}/healthcheck-client.key'
kubernetes_etcd_apiserver_client_cert_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.crt'
kubernetes_etcd_apiserver_client_key_file '{{ kubernetes_certs_dir }}/apiserver-etcd-client.key'
kubernetes_etcd_manifest_file '{{ kubernetes_pod_manifest_path }}/etcd.yaml'
kubernetes_etcd_data_dir Etcd 数据的文件夹 /var/etcd
kubernetes_etcd_server_port Etcd 服务器通信端口 2380
kubernetes_etcd_client_port Etcd 客户端通信端口 2379

控制器管理

名称 描述 默认值
kubernetes_controller_manager_manifest_file 清单文件的绝对路径 '{{ kubernetes_pod_manifest_path }}/kube-controller-manager.yaml'

kubeadm

名称 描述 默认值
kubernetes_kubeadm_config_file_path 存储 kubeadm 配置文件的路径 '{{ kubernetes_config_dir }}/kubeadm'
kubernetes_kubeadm_config_file_name kubeadm 配置文件的名称 clusterconfig.yaml

调度器

名称 描述 默认值
kubernetes_scheduler_manifest_file 清单文件的绝对路径 '{{ kubernetes_pod_manifest_path }}/kube-scheduler.yaml'

云提供商

名称 描述 默认值
kubernetes_cloud_provider 选择支持的云提供商,值:"" 或 "vsphere" ""
kubernetes_cloud_config_file 云配置文件路径 "{{ kubernetes_config_dir }}/{{ kubernetes_cloud_provider }}.conf"
kubernetes_cloud_vsphere_workspace_server cloud_config 中 [workspace] 区域的选项服务器(仅限 vsphere) ""
kubernetes_cloud_vsphere_workspace_datacenter cloud_config 中 [workspace] 区域的选项数据中心(仅限 vsphere) ""
kubernetes_cloud_vsphere_workspace_default_datastore cloud_config 中 [workspace] 区域的选项默认数据存储(仅限 vsphere) ""
kubernetes_cloud_vsphere_workspace_folder cloud_config 中 [workspace] 区域的选项文件夹(仅限 vsphere) ""
kubernetes_cloud_vsphere_default_user cloud_config 中 [global] 区域的选项用户(仅限 vsphere) ""
kubernetes_cloud_vsphere_default_password cloud_config 中 [global] 区域的选项密码(仅限 vsphere) ""
kubernetes_cloud_vsphere_datacenters cloud_config 中的属性列表:服务器、数据中心、用户名、密码(仅限 vsphere) []
kubernetes_cloud_vsphere_network_options cloud_config 中 [network] 区域的所有选项(仅限 vsphere) []
kubernetes_cloud_vsphere_disk_options cloud_config 中 [disk] 区域的所有选项(仅限 vsphere) []

示例剧本

这里有一个 Vagrantfile 用于创建所有场景的服务器: Vagrantfile servers.yml(Vagrantfile 所需)

全部合一

inventory

site.yml

单主集群

inventory

site.yml

分离的 etcd,单主集群

inventory

site.yml

高可用主集群

inventory

site.yml

分离的 etcd,高可用主集群

inventory

site.yml

许可证

Apache 2.0

贡献者

作者信息

André Möller 于 2018 年创建

关于项目

this role install an high available / non high available kubernetes cluster with kubeadm.

安装
ansible-galaxy install anmoel.kubernetes
许可证
apache-2.0
下载
3k
拥有者