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 所需)
全部合一
单主集群
分离的 etcd,单主集群
高可用主集群
分离的 etcd,高可用主集群
许可证
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
拥有者