安装Kubernetes集群是一项技术性非常高的任务,需要具备一定的Linux系统及网络知识。本文将详细讲解在CentOS 7系统上安装Kubernetes集群的步骤和代码示例。
1. 前置条件
- 三台以上的服务器,安装CentOS 7.x系统
- 每台服务器有固定IP地址,且能相互访问
- 所有服务器的root账户密码已知且一致
- 所有服务器关闭防火墙(或开放Kubernetes所需端口)
2. Kubernetes集群安装步骤
2.1 安装Docker
Docker是Kubernetes集群运行所需的容器管理组件,因此需要在所有节点上安装Docker。
在每台服务器上执行以下命令:
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ sudo systemctl start docker
$ sudo systemctl enable docker
2.2 安装Kubernetes Master
2.2.1 安装kubeadm、kubelet、kubectl
安装Kubernetes Master之前,需要先在一台服务器上安装kubeadm
、kubelet
、kubectl
这三个组件。
在Kubernetes Master服务器上执行以下命令:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
2.2.2 初始化Master节点
在Kubernetes Master上执行以下命令,来初始化Master节点:
$ sudo kubeadm init --apiserver-advertise-address=<k8s-master-ip> --pod-network-cidr=10.244.0.0/16
其中,<k8s-master-ip>
为Kubernetes Master所在服务器的IP地址。
执行完上述命令后,会生成一个类似于”kubeadm join 192.168.10.101:6443 –token abcdef.0123456789abcdefghiklmnopqrstuvwx”的命令,将该命令保存下来,后面需要使用。
2.2.3 配置kubectl
在Kubernetes Master上执行以下命令,来配置kubectl:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.3 安装Kubernetes Node
2.3.1 安装kubeadm、kubelet、kubectl
在Kubernetes Node服务器上执行以下命令,来安装kubeadm
、kubelet
、kubectl
这三个组件:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
2.3.2 加入Kubernetes Cluster
在Kubernetes Node服务器上执行在初始化Master节点时生成的那个命令(如”kubeadm join 192.168.10.101:6443 –token abcdef.0123456789abcdefghiklmnopqrstuvwx”),来加入Kubernetes Cluster。
2.3.3 配置kubectl
在Kubernetes Node服务器上执行以下命令,来配置kubectl:
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
2.4 安装网络插件
为了让Kubernetes节点之间能正常通信,需要安装网络插件。
在Kubernetes Master服务器上执行以下命令,来安装网络插件:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2.5 验证Kubernetes集群安装
在Kubernetes Master服务器上执行以下命令,来验证Kubernetes集群安装是否成功:
$ kubectl get nodes
如果执行命令后,能够看到所有Node的状态都是Ready,那么表示 Kubernetes 集群安装成功。
3. 示例说明
下面给出两个示例,以更好地帮助理解上述步骤。
3.1 示例一:安装Kubernetes Master和两个Node的集群
- Kubernetes Master IP地址:192.168.10.101
- Node1 IP地址:192.168.10.102
- Node2 IP地址:192.168.10.103
3.1.1 在Kubernetes Master服务器上执行以下命令:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
$ sudo kubeadm init --apiserver-advertise-address=192.168.10.101 --pod-network-cidr=10.244.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
3.1.2 在Node1服务器上执行以下命令:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
$ sudo kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdefghiklmnopqrstuvwx
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.1.3 在Node2服务器上执行以下命令:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
$ sudo kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdefghiklmnopqrstuvwx
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.2 示例二:添加一个新的Node到已有的Kubernetes集群中
假设有一个已经安装好的Kubernetes集群,其中Master IP地址为192.168.10.101,Node1 IP地址为192.168.10.102,Node2 IP地址为192.168.10.103。现在需要将一个新的Node(IP地址为192.168.10.104)加入到这个集群中。
3.2.1 在新的Node服务器上执行以下命令:
$ sudo yum install -y kubelet kubeadm kubectl
$ sudo systemctl enable kubelet
$ sudo kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdefghiklmnopqrstuvwx
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.2.2 在Kubernetes Master服务器上执行以下命令:
$ kubectl get nodes
执行命令后,能够看到所有Node的状态都是Ready,包括新加入的Node。