使用kubeadm部署高可用Kubernetes 1.17.0

由于Kubernetes集群1.16升级1.17后崩溃,计划从新部署。之前是手工建立的高可用集群,如今使用kubeadm来部署高可用Kubernetes,由于1.17.0已经增长了不少新的功能,正好来体验一下。node

建立集群:git

sudo kubeadm init --kubernetes-version=v1.17.0 \
--apiserver-advertise-address=192.168.199.173 \
--control-plane-endpoint=192.168.199.173:6443 \
--pod-network-cidr=10.244.0.0/16 \
--upload-certs

注意:github

  • 增长--control-plane-endpoint参数,是用于多Master的部署使用,必须加上。
  • 使用多个Master节点的kubeadm init方法后,输出有所不一样。以下:
To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt \
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383 \
    --control-plane --certificate-key 440a880086e7e9cbbcebbd7924e6a9562d77ee8de7e0ec63511436f2467f7dde

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt \
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383

运行下面的命令,以使kubectl在当前用户帐号下可用:docker

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  • 注意:
    • 上面带--control-plane参数的命令用于部署一个新的Master节点。
    • 不带--control-plane参数的命令用于部署worker节点。

增长Master节点:api

kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt \
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383 \
    --control-plane --certificate-key 440a880086e7e9cbbcebbd7924e6a9562d77ee8de7e0ec63511436f2467f7dde

After Add master node:app

sudo kubeadm init phase upload-certs --upload-certs
### Got:
# [upload-certs] Using certificate key:
# 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78

# Add certificate-key for Multi Master Node.
kubeadm token create --print-join-command --certificate-key 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78

增长Worker节点:ide

kubeadm join 192.168.199.173:6443 --token rlxvkn.2ine1loolri50tzt \
    --discovery-token-ca-cert-hash sha256:86e68de8febb844ab8f015f6af4526d78a980d9cdcf7863eebb05b17c24b9383

而后部署Network CNI驱动,以下:.net

docker pull quay.io/coreos/flannel:v0.11.0-amd64

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看一下节点状态:3d

kubectl get node -o wide

将显示节点列表,若是部署了多个Master,也将显示多个节点的role为master。code