如何在 CentOS 7 上安装 Kubernetes 集群
Kubernetes 是一个流行的开源平台,用于在集群环境中管理容器化应用程序。如果您想在 CentOS 7 上安装 Kubernetes,本指南将逐步引导您完成此过程。我们将涵盖您需要了解的所有内容,以启动和运行集群,包括设置环境、安装必要的组件以及配置节点。
先决条件
在开始之前,您需要以下几个条件 -
至少具有 2GB RAM 和 2 个 CPU 的 CentOS 7 服务器。
服务器的 root 访问权限。
基本的 Linux 命令行使用知识。
设置环境
首先,我们需要设置我们的环境。这包括禁用 SELinux 和配置防火墙。
禁用 SELinux
SELinux 是 Linux 的一项安全增强功能,有时会干扰 Kubernetes。要禁用它,请在您选择的文本编辑器中打开 /etc/selinux/config 文件,并将 SELINUX 的值更改为 disabled。保存并关闭文件。
$ sudo vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
配置防火墙
接下来,我们需要配置防火墙以允许 Kubernetes 必要的流量。我们将使用 firewalld 来管理我们的防火墙。
$ sudo systemctl enable firewalld $ sudo systemctl start firewalld
接下来,我们需要打开以下端口 -
TCP 端口 6443 - 这是 Kubernetes API 服务器端口。
TCP 端口 2379-2380 - 这是 etcd 服务器客户端 API 端口。
TCP 和 UDP 端口 8472 - 这是 Flannel 的覆盖网络端口。
TCP 和 UDP 端口 10250 - 这是 Kubelet API 端口。
$ sudo firewall-cmd --permanent --add-port=6443/tcp $ sudo firewall-cmd --permanent --add-port=2379-2380/tcp $ sudo firewall-cmd --permanent --add-port=8472/udp $ sudo firewall-cmd --permanent --add-port=10250/tcp $ sudo firewall-cmd --reload
安装必要的组件
现在我们的环境已设置好,我们可以开始为 Kubernetes 集群安装必要的组件。我们需要安装 Docker、Kubernetes 和 kubeadm。
安装 Docker
Docker 是 Kubernetes 使用的容器运行时。要安装它,请运行以下命令 -
$ 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 -y docker-ce docker-ce-cli containerd.io $ sudo systemctl enable docker $ sudo systemctl start docker
安装 Kubernetes 和 Kubeadm
我们将从官方 Kubernetes 存储库安装 Kubernetes 和 kubeadm。运行以下命令 -
$ sudo vi /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck= $ sudo yum install -y kubelet kubeadm kubectl $ sudo systemctl enable kubelet $ sudo systemctl start kubelet
配置节点
现在我们已经安装了所有必要的组件,我们可以开始配置节点了。
初始化控制平面节点
我们需要配置的第一个节点是控制平面节点。这是将承载 Kubernetes API 服务器和 etcd 的节点。要初始化控制平面节点,请运行以下命令 -
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
此命令将需要几分钟才能完成。完成后,您将看到类似以下内容的消息 -
您的 Kubernetes 控制平面已成功初始化!
要开始使用您的集群,您需要以普通用户身份运行以下命令 -
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
您现在可以加入任意数量的控制平面节点,在每个节点上以 root 身份运行以下命令 -
kubeadm join 10.0.0.1:6443 --token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef
请记下输出末尾的加入命令,因为我们稍后会用到它。我们还需要运行消息中的命令来在我们的控制平面节点上配置 kubectl。
$ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
将工作节点加入集群
配置好控制平面节点后,我们可以开始将工作节点添加到集群中。为此,我们需要在每个工作节点上运行之前保存的加入命令。
$ sudo kubeadm join 10.0.0.1:6443 --token abcdef.1234567890abcdef \ --discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef
在每个工作节点上运行加入命令后,您可以通过在控制平面节点上运行以下命令来验证它们是否已成为集群的一部分 -
$ kubectl get nodes
此命令应显示集群中的所有节点,包括控制平面节点和已加入的任何工作节点。
安装网络插件
最后,我们需要安装一个网络插件来启用跨不同节点的 Pod 之间的通信。我们将使用 Flannel 作为我们的网络插件。
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装网络插件后,您可以通过在一个工作节点上创建一个 Pod 并验证它是否可以与另一个工作节点上的 Pod 通信来验证它是否正常工作。
虽然本指南涵盖了在 CentOS 7 上设置 Kubernetes 集群的基础知识,但值得注意的是,您可以进行许多其他配置选项和自定义。例如,您可以配置 Kubernetes 以使用不同的容器运行时,或者通过添加多个主节点来设置高可用性控制平面。
此外,需要注意的是,运行 Kubernetes 集群可能会占用大量资源,并且随着工作负载的增长,您可能需要考虑扩展基础设施。您可能还需要考虑使用 Google Kubernetes Engine 或 Amazon Elastic Kubernetes Service 等托管 Kubernetes 服务,这些服务可以为您处理许多管理任务。
最后,值得注意的是,Kubernetes 是一个复杂的平台,需要一些时间才能熟练掌握。如果您是 Kubernetes 新手,建议您从一些基本教程开始,然后逐步学习更复杂的配置。
结论
在本指南中,我们涵盖了在 CentOS 7 上安装 Kubernetes 集群所需了解的所有内容。我们介绍了设置环境、安装必要的组件以及配置节点。通过本指南,您应该能够快速轻松地启动和运行集群。