运维必看:如何在 RHEL 8 中使用 Kubeadm 安装 Kubernetes 集群?

运维必看:如何在 RHEL 8 中使用 Kubeadm 安装 Kubernetes 集群?

解决方案goocz2025-03-01 12:32:3515A+A-

在本文中,我们将了解在 RHEL 8 中使用 Kubeadm 安装 Kubernetes 集群,以及它的克隆版本,如 AlmaLinux 8、CentOS 8 和 Rocky Linux 8。

在进入之前,你必须对 Kubernetes 的概念和架构有一个基本的了解,在本文中,我们将演示两个节点集群。

要进行安装,我们需要以下提到的基本要求。

  • 最少 2 个主机。
  • 2 个 CPU。
  • 2GB 物理内存 (RAM)。
  • 20GB 的磁盘空间。
  • 用于下载软件包的 Internet 连接。

1.配置主机名和IP地址

在 Master 和 Workers 中设置主机名并配置主机,操作系统文件 hosts 用于将主机名或域名转换为 IP 地址。

在这里,我们将有两个主机:

  • ostechmaster - Master
  • ostechworker – Worker

使用以下命令设置主机名,设置主机名后需要重新启动。

# hostnamectl set-hostname ostechmaster

编辑/etc/hosts文件:

# vi /etc/hosts

在/etc/hosts文件中添加服务器和客户端主机名和 IP 地址:

进行ping测试以确保连通性:

[root@ostechmaster ~]# ping ostechworker
PING ostechworker (172.31.5.141) 56(84) bytes of data.
64 bytes from ostechworker (172.31.5.141): icmp_seq=1 ttl=64 time=0.472 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=2 ttl=64 time=0.492 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=3 ttl=64 time=1.43 ms
64 bytes from ostechworker (172.31.5.141): icmp_seq=4 ttl=64 time=0.425 ms

2.禁用SElinux

在 Master 和 Workers 中禁用 SElinux,因此如果禁用 SElinux,所有容器都可以轻松访问主机文件系统,使用 vi 编辑器在配置文件中制作“ SELINUX=disabled” /etc/selinux/config。需要重新启动以反映 SElinux 更改。

[ root@ostechmaster ~]# vi /etc/selinux/config

使用以下命令确保 SElinux 状态。

[root@ostechmaster ~]# sestatus
SELinux status: disabled

3. 在 Master 和 Worker 中禁用交换

需要在所有 Kubernetes 主机(Master 和 Workers)上停用交换,这是 Kubernetes 社区首选的部署方式,如果没有禁用交换,kubelet 服务将不会在 master 和 worker 上启动。

运行以下命令以禁用 SWAP:

[ root@ostechmaster ~]# swapoff -a && sed -i '/swap/d' /etc/fstab

4.在防火墙中允许所需的端口

要使 Kubernetes 组件彼此交互,某些基本端口必须可用,以下是要打开以实现 Kubernetes 组件之间的连接的端口。

控制平面/主服务器:

工作节点:

主节点:

[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=6443/tcp
[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=10250/tcp
[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=10251/tcp
[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=10259/tcp
[ root@ostechmaster ~]# firewall-cmd --permanent --add-port=10257/tcp
[ root@ostechmaster ~]# firewall-cmd --reload

工作节点:

[ root@ostechworker ~]# firewall-cmd --permanent --add-port=10250/tcp
[ root@ostechworker ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[ root@ostechworker ~]# firewall-cmd --reload

我们正在禁用 Master 和 Worker 中的防火墙,因为它是出于演示目的,但是,不建议用于实时生产实践。

使用以下命令停止和禁用防火墙。

[ root@ostechmaster ~]# systemctl stop firewalld
[root@ostechmaster ~]# systemctl disable firewalld

5. 安装 Docker

Docker 可以更轻松地“构建”容器,而 Kubernetes 可以实时“管理”它们,要打包和运送软件,请使用 Docker,要启动和扩展您的应用程序,请使用 Kubernetes。

在 Cluster 中的所有机器中添加 docker 存储库。

docker.repo在/etc/yum.repos.d/目录下创建名为的文件:

[ root@ostechmaster ~]# vi /etc/yum.repos.d/docker.repo

在其中添加以下几行:

[docker]
baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/
gpgcheck=0

按 ESC 键并键入:wq以保存文件并关闭它。

在 Master 和 Worker 节点上安装 docker:

# yum -y install docker-ce

安装后,在两个节点上启用并启动 Docker:

# systemctl enable docker
# systemctl start docker

检查并确保 Docker 正在两台机器上运行。

# systemctl status docker

6. 安装 Kubernetes

在 Master 和 Worker 中添加 Kubernetes 存储库。

kubernetes.repo在 Master 和 worker/etc/yum.repos.d/目录下创建文件:

# 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

按 ESC 并键入:wq以保存文件并关闭它。

使用以下命令在 Master 和 Worker 节点中安装 kubeadm、kubelet、kubectl:

# yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes

kubelet在两台机器上启用并启动服务:

# systemctl enable kubelet
# systemctl start kubelet

检查 Kubelet 服务的状态并确保它在两台机器上都运行良好。

# systemctl status kubelet

7. 初始化 Kubernetes

使用以下命令在 Master Server 中初始化 Kubernetes

[ root@ostechmaster ~]# kubeadm init

您将获得以下输出,表明 Kubernetes 控制平面已成功初始化,并且将提到开始使用集群的某些步骤,请遵循该步骤。

同时'kubeadm join'从输出中复制并保存命令,它将用于加入集群中的工作节点。

示例输出:

Your Kubernetes control-plane 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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \
        --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

由于我们正在处理root用户,因此在主服务器中运行以下命令,如上述输出中所述。

[ root@ostechmaster ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

8.配置POD网络

Kubernetes Pod 网络是 Kubernetes 中互连组件的网络,这个网络概念可以以几种不同的方式实现。在我们的演示中,我们将使用“Weave Net”。

在主服务器中运行以下命令来设置 POD 网络。

[ root@ostechmaster ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[ root@ostechmaster ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever

示例输出:

serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.apps/weave-net created
[root@ostechmaster ~]#

9.加入Worker节点

运行“ kubeadm join”命令将工作节点加入集群,这是我们从“ kubeadm init”输出中复制的命令。

[root@ostechworker ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r         --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2

您可以使用以下命令验证主服务器中的节点

# kubectl get nodes

示例输出:

NAME           STATUS     ROLES                  AGE   VERSION
ostechmaster   Ready      control-plane,master   32m   v1.23.1
ostechworker   Ready                    30m   v1.23.1
点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5