再也不踩坑的kubernetes实战指南
上QQ阅读APP看书,第一时间看更新

1.2 Kubeadm高可用安装K8S集群(1.13.x和1.14.x)

Kubeadm安装Kubernetes 1.13.x和1.14.x版本差异并不是很大,相对于1.12.x和1.11.x版本更加简单,只需要对其中一台Master初始化即可,其他Master节点和Node使用join即可,Master和Node添加到集群中只差了一个参数,修改命令如下:

    --experimental-control-plane

1.2.1 基本组件的安装

关于基本环境配置和内核升级,请参考1.1节。

和上节一样,需要提前安装Kubernetes集群的必需组件。

安装Docker:

    yum -y install docker-ce-17.09.1.ce-1.el7.centos

安装Kubernetes组件:

所有节点启动Docker:

    systemctl enable --now docker

配置Kubelet:

HAProxy和KeepAlived的安装请参考1.1.4节。

1.2.2 集群初始化

Master01节点集群初始化和上一节演示的版本一致,但是kubeadm-config.yaml有所变化,去掉了内置于Kubernetes集群中的Etcd集群配置。在1.13.x版本中,Master02和Master03无须kubeadm-config.yaml也可,但是为了提前下载镜像,一般也会拷贝过去。

使用kubeadm安装Kubernetes高可用集群1.13.x和1.14.x版本,kubeadm的配置文件如下:

和上一节不同的是直接开启了ipvs模式的rr模式,这样在初始化完成以后不用再次修改了,其中podSubnet为Pod的网段,如果安装1.14.x,只需要将Kubernetes版本改成1.14.x即可。

Master节点提前下载镜像:

    kubeadm config images pull --config /root/kubeadm-config.yaml

Master01节点初始化:

    kubeadm init --config /root/kubeadm-config.yaml

对于Kubernetes 1.14.x,在初始化时加入--experimental-upload-certs参数,使集群初始化更加简单,无须再复制证书至其他节点,之后join时添加--certificate-key参数即可自动加入集群。Kubernetes 1.14.x的初始化命令如下:

    kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs

如果初始化失败,重置后再次初始化:

    kubeadm reset

记录token值,在节点加入集群时使用:

对于Kubernetes 1.14.x版本,初始化完成以后生成的Token如下:

其中,Master节点使用--experimental-control-plane和--certificate-key参数即可完成初始化,并以Master的角色加入集群:

所有Master节点配置环境变量:

    cat <<EOF >> /root/.bashrc
    export KUBECONFIG=/etc/kubernetes/admin.conf
    EOF
    source /root/.bashrc

查看节点状态:

查看Pod状态:

1.2.3 Calico组件的安装

可安装截止本书截稿时的最新版3.6.1,也可以参考1.1.5节,POD_CIDR为上述配置的podSubnet:

    POD_CIDR="<your-pod-cidr>" \
    sed -i -e "s?192.168.0.0/16?$POD_CIDR?g" calico/v3.6.1/calico.yaml
    kubectl apply -f calico/v3.6.1/calico.yaml

1.2.4 高可用Master

Kubernetes 1.13.x版需要复制证书至其他Master节点,1.14.x版则无须再复制证书至其他Master节点:

Master02提前下载镜像:

    kubeadm config images pull --config /root/kubeadm-config.yaml

Master02加入集群,与Node节点相差的参数就是--experimental-control-plane:

对于Kubernetes 1.14.x,使用如下命令加入集群,多了一个--certificate-key参数:

反馈如下:

Master01查看状态:

其他Master节点操作相同,查看Master最终的状态:

查看CSR:

在所有Master节点上允许HPA采集数据,修改后自动重启:

1.2.5 Node节点的配置

在1.13.x和1.14.x版本中,Node节点和Master节点加入集群的方式与1.11.x和1.12.x版本相比只是少了--experimental-control-plane参数。

将Node节点加入集群,所有Node节点配置相同:

反馈如下:

查看Master节点的状态:

关于Metrics和Dashboard的部署请参考1.1.8节和1.1.9节。