使用kubeadm和Ansible构建一个简单Kubernetes集群。
支持的操作系统:
- Ubuntu 16.04
- CentOS 7
- Debian 9
环境要求:
- Ansible
2.4.0+
将Kubernetes集群的服务器信息添加到名为 hosts.ini 的文件中. 例如:
[master]
192.16.35.12
[node]
192.16.35.[10:11]
[kube-cluster:children]
master
node
在安装之前, 请根据您自己的配置修改 group_vars/all.yml 配置文件。
例如,选择不同的容器运行时(container_runtime)
# Container runtimes ('containerd', 'docker')
container_runtime: docker根据不同的容器运行时选择不同的配置
# Dokcer engine version
docker_version: 24.0.7
# A list of insecure registries you might need to define
# docker_data_root: /var/lib/docker
docker_registry_mirrors: "https://docker.m.daocloud.io"
docker_dns: "8.8.8.8"
docker_insecure_registries: "https://docker.m.daocloud.io"
# docker_default_runtime:Note: utils/certs.d保存了containerd常用的镜像仓库
例如,选择使用 flannel作为cni插件而不是calico:
# Network implementation('flannel', 'calico')
network: flannelNote: 根据服务器的环境,可能需要将 network_interface 修改为可用的网卡。默认情况下,kubeadm-ansible 使用eth1。
设置kubevip增加集群高可用功能(默认情况下禁用)。
例如,选择172.16.10.1作为高可用的vip,选择eth0作为高可用的网卡设备vip_interface:
#High Availability and Load-Balancing
vip: "172.16.10.1"
vip_interface: "eth0"完成设置后,运行 site.yaml playbook:
$ ansible-playbook site.yaml
...
==> master1: TASK [addon : Create Kubernetes dashboard deployment] **************************
==> master1: changed: [192.16.35.12 -> 192.16.35.12]
==> master1:
==> master1: PLAY RECAP *********************************************************************
==> master1: 192.16.35.10 : ok=18 changed=14 unreachable=0 failed=0
==> master1: 192.16.35.11 : ok=18 changed=14 unreachable=0 failed=0
==> master1: 192.16.35.12 : ok=34 changed=29 unreachable=0 failed=0kubeadm-ansible会将/etc/kubernetes/admin.conf文件拷贝到主节点$HOME/.kube/config下。
如果不起作用,请从主节点自行拷贝:
$ cp /etc/kubernetes/admin.conf $HOME/.kube/config使用 kubectl 验证群集是否完全运行:
$ export KUBECONFIG=~/admin.conf
$ kubectl get node
NAME STATUS AGE VERSION
master1 Ready 22m v1.6.3
node1 Ready 20m v1.6.3
node2 Ready 20m v1.6.3
$ kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
etcd-master1 1/1 Running 0 23m
...最后,可以使用reset-site.yaml重置已安装的Kubernetes集群:
$ ansible-playbook reset-site.yaml这些是可以安装到Kubernetes集群的附加功能,可以让您使用Kubernetes集群时更加轻松便捷。
可以在group_vars/all.yml中启用/禁用这些功能(默认情况下全部禁用):
# Additional feature to install
additional_features:
helm: false
crictl: false
在集群中安装helm (https://helm.sh)
在集群中安装crictl (https://github.com/kubernetes-sigs/cri-tools)