分享最新优惠信息
购买主机更加划算

RHEL 8系统安装Kubernetes(k8s)集群的过程步骤

Kubernetes也称为k8s,是一个开源的、可移植的容器编排平台,用于自动部署和管理容器化应用程序。Kubernetes最初是由Google使用Go编程语言创建的。目前,它由云原生应用计算基金会维护。

在本文中中,小编将简单介绍如何在RHEL 8系统上安装Kubernetes集群。这里将使用一个主节点和一个工作节点来演示这一点,并将其添加到我们的集群中。

主节点:master-node-k8 10.128.15.228

工作节点:worker-node-1-k8 10.128.15.230

注意:以下骤1到6应该同时应用于主节点和工作节点。

步骤一、禁用交换内存

为了获得最佳性能,Kubernetes要求在主机系统上禁用交换内存,这是因为内存交换会显着导致不稳定和性能下降。

要禁用交换内存,请运行以下命令:

$ sudo swapoff -a

如果要使更改持久化,请编辑/etc/fstab文件并删除或注释掉包含交换条目的行并保存更改。

步骤二、禁用SELinux

此外,还需要禁用SELinux并将其设置为 ‘permissive’ 以允许节点和pod之间的顺畅通信。

为此,请打开SELinux配置文件,命令如下:

$ sudo vi /etc/selinux/config

将SELINUX值从强制更改为许可。

SELINUX=permissive

或者,也可以使用sed命令,如下所示。

$ sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

步骤三、在主节点和工作节点中配置网络

主节点和工作节点需要一些额外的网络配置才能有效通信,在每个节点上,编辑/etc/hosts配置文件。

$ sudo vi /etc/hosts

接下来,更新条目,命令如下:

10.128.15.228 master-node-k8           #对于主节点
10.128.15.230 worker-node-1-k8         #对于Worker节点

保存并退出配置文件。接下来,还需安装流量控制实用程序包:

$ sudo dnf install -y iproute-tc

步骤四、允许k8s的防火墙规则

为了在主节点和工作节点之间进行完整通信,这里需要配置防火墙并允许一些相关的端口和服务,具体如下。

在主节点上,允许以下端口:

$ sudo firewall-cmd --permanent --add-port=6443/tcp
$ sudo firewall-cmd --permanent --add-port=2379-2380/tcp
$ sudo firewall-cmd --permanent --add-port=10250/tcp
$ sudo firewall-cmd --permanent --add-port=10251/tcp
$ sudo firewall-cmd --permanent --add-port=10252/tcp
$ sudo firewall-cmd --reload

在工作节点上,允许以下端口:

$ sudo firewall-cmd --permanent --add-port=10250/tcp
$ sudo firewall-cmd --permanent --add-port=30000-32767/tcp
$ sudo firewall-cmd --reload

步骤五、安装CRI-O container runtime

Kubernetes需要容器运行时才能运行pod,Kubernetes 1.23及更高版本要求安装与容器运行时接口确认的container runtime。

Container Runtime是支持运行容器的应用程序。Kubernetes支持以下container runtime:

  • Containerd
  • CRI-O
  • Docker Engine
  • Mirantis Container Runtime

在本文中,小编将安装CRI-O,它是一个高级容器运行时。为此需要启用两个关键的内核模块——overlay和br_netfilter模块。

为此,需要配置以下先决条件:

首先,为Kubernetes创建一个模块配置文件,命令如下:

$ sudo vi /etc/modules-load.d/k8s.conf

添加这些行并保存更改:

overlay
br_netfilter

然后使用modprobe命令加载两个模块。

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

接下来配置所需的sysctl参数如下,命令如下:

$ sudo vi /etc/sysctl.d/k8s.conf

然后添加以下行:

net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1

保存更改并退出。要确认已应用更改,请运行以下命令:

$ sudo sysctl --system

要安装CRI-O,请设置$VERSION 环境变量以匹配你的CRI-O 版本。例如,要安装CRI-O版本 1.21,请设置$VERSION,如下所示:

$ export VERSION=1.21

接下来,运行以下命令:

$ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_8/devel:kubic:libcontainers:stable.repo
$ sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/CentOS_8/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo

然后使用DNF包管理器安装CRI-O:

$ sudo dnf install cri-o

安装CRI-O

接下来,在启动时启用CRI-O并启动它:

$ sudo systemctl enable cri-o
$ sudo systemctl start cri-o

步骤六、安装Kubernetes包

安装完Kubernetes工作所需的一切准备工作之后,现在继续安装Kubernetes软件包,如kubelet、kubeadm 和kubectl。首先创建Kubernetes存储库文件,命令如下:

$ 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=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
exclude=kubelet kubeadm kubectl

保存更改并退出,最后安装k8s包,命令如下:

$ sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

安装之后,请务必启用并启动Kubelet服务。

$ sudo systemctl enable kubelet
$ sudo systemctl start kubelet

此时,安装Kubernetes集群的准备工作已经完成。

步骤七、创建Kubernetes集群

这里将使用kubeadm命令初始化一个Kubernetes集群,如下所示,这会初始化主节点中的控制平面:

$ sudo kubeadm init --pod-network-cidr=192.168.10.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 taint nodes –all node-role.kubernetes.io/master-

步骤八、安装Calico Pod网络插件

下一步是安装Calico CNI(容器网络接口),它是一个开源项目,用于提供容器网络和安全性。安装CalicoCNI 后,节点状态将变为Ready状态,集群内的DNS服务将正常运行,容器可以开始相互通信。

Calico提供与现有Kubernetes工作负载的可扩展性、高性能和互操作性,它可以部署在本地和流行的云技术上,例如Google Cloud、AWS和Azure。

要安装Calico CNI,请从主节点运行以下命令

$ kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml

完成后,执行以下命令:

$ kubectl create -f https://docs.projectcalico.org/manifests/custom-resources.yaml

要确认pod 是否已启动,请运行以下命令:

$ watch kubectl get pods -n calico-system

这是应该看到每个pod都是“ READY ”并且具有“ RUNNING ”状态,如下图第三列所示:

pod运行状态

要验证集群中主节点的可用性,请运行以下命令:

$ kubectl get nodes

验证集群中主节点

此外,您可以使用 -o wide选项检索更多信息。

$ kubectl get nodes -o wide

-o wide命令

以上输出确认主节点已准备就绪。此外,你还可以检查pod命名空间:

$ kubectl get pods --all-namespaces

检查pod命名空间

步骤九、将工作节点添加到集群

要将工作节点添加到Kubernetes 集群,请按照上述步骤1到步骤 6进行设置。完成之后,运行主节点生成的命令以将工作节点加入集群。在本文中,这将是:

$ sudo kubeadm join 10.128.15.228:6443 --token cqb8vy.iicmmqrb1m8u9cob --discovery-token-ca-cert-hash sha256:79748a56f603e6cc57f67bf90b7db5aebe090107d540d6cc8a8f65b785de7543

如果一切顺利,那你应该会收到节点已加入集群的通知。如果你有多个工作节点,则对其他节点重复相同的过程即可:

加入集群

现在,返回主节点,再次验证集群中的节点。这一次,工作节点将出现在集群中的节点列表中,

$ kubectl get nodes

验证集群中的节点

十、结论

以上就是RHEL 8系统安装Kubernetes(k8s)集群的详细步骤,如果有不清楚的小伙伴可以参考上述过程进行设置。

由于Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化,所以目前已经被广泛的应用。

未经允许不得转载:惠主机 » RHEL 8系统安装Kubernetes(k8s)集群的过程步骤