CentOS部署Kubernetes集群

CentOS部署Kubernetes集群

相关组件版本

名称 版本号
CentOS 7.4.1708
docker 1.13.1
kubeadm 1.10.1
kubectl 1.9.3

安装Docker

yum install -y docker
systemctl enable docker && systemctl start docker

设置节点名称

Kubernetes集群中的所有节点名称不能相同,所以在创建集群前先修改好各个节点的名称防止冲突。
hostname -b 名称

安装Kubernetes组件

配置yum镜像源文件

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

关闭防火墙

setenforce 0

安装组件

` yum install -y kubelet kubeadm kubectl `

启动服务

` systemctl enable kubelet && systemctl start kubelet `

最后通过命令running sysctl net.bridge.bridge-nf-call-iptables=1将/proc/sys/net/bridge/bridge-nf-call-iptables设置为1,否则后续Master创建集群和Node加入集群会产生错误。

Master创建集群

选择CNI

Kubernetes集群的正常使用依赖于CNI(Container Network Interface)。 常见的CNI有如下几种:

  • Calico
  • Canal
  • Flannel
  • Kube-router
  • Romana
  • Weave Net 在这个部署场景中我们选用Flannel

初始化集群

kubeadmin init --pod-network-cidr=10.244.0.0/16
为了保证Flannel可以正常工作,需要在Kubeadm init时加上“—pod-network-cidr=10.244.0.0/16 ”参数,使用其余CNI对应的参数各不相同,详情请参考官方文档

若输出以下类似内容则代表集群已经初始化成功了:

Your Kubernetes master has initialized successfully!

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 machines by running the following on each node
as root:

  kubeadm join 172.31.59.194:6443 --token 0vfzv1.vw6oxga0xhc1lzm5 --discovery-token-ca-cert-hash sha256:39b0319100e9997cb859ef6967a00c93de3ef8e535a7dc3d6e4ed510a5b97e6c

注意其中的kubeadm join内容,保存好以便后续Node节点加入集群使用。

配置环境参数

留意kubeadm init成功之后的回显,其中提醒了我们使用集群前需要做的相应配置。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装CNI

我们使用Flannel作为这个集群的CNI,所以使用如下命令安装Flannel:

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

其余类型的CNI的安装方式可以参照官方文档

Node加入集群

现在可以将已经安装好Kubernetes组件的主机作为Node节点加入我们已经创建好的集群中了。 使用类似如下kubeadm join命令完成Node节点的加入(token来自于之前Master上kubeadm init的结果):
kubeadm join 172.31.59.194:6443 --token 0vfzv1.vw6oxga0xhc1lzm5 --discovery-token-ca-cert-hash sha256:39b0319100e9997cb859ef6967a00c93de3ef8e535a7dc3d6e4ed510a5b97e6c

查看集群状态

到此,我们的集群已经创建完成,可以在Master上通过如下命令查看集群成员:
kubectl get nodes

结果类似如下格式,若各节点状态都已经为Ready则代表集群建立完成:

[root@izj6cfshug9pwgb71j3t10z ~]# kubectl get node
NAME                      STATUS    ROLES     AGE       VERSION
izj6cfshug9pwgb71j3t10z   Ready     master    58m       v1.10.1
k8scluster1node1          Ready     <none>    24m       v1.10.1
k8scluster1node2          Ready     <none>    1m        v1.10.1