centos系统安装Kubernetes集群步骤

  • Post category:Linux

安装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之前,需要先在一台服务器上安装kubeadmkubeletkubectl这三个组件。

在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服务器上执行以下命令,来安装kubeadmkubeletkubectl这三个组件:

$ 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。