在本文中,我们将学习在 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 – 大师
- ostechworker – 工人
使用以下命令设置主机名,设置主机名后需要重新启动。
# hostnamectl set-hostname ostechmaster
编辑 /etc/hosts
文件:
# vi /etc/hosts
将服务器和客户端主机名和 IP 地址添加到 /etc/hosts
文件:
做 ping 测试以确保连通性:
[[email protected] ~]# 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,所有容器都可以轻松访问主机文件系统。
制作 ‘SELINUX=disabled
‘在配置文件中 /etc/selinux/config
使用 vi 编辑器。 需要重新启动以反映 SElinux 更改。
[[email protected] ~]# vi /etc/selinux/config
使用以下命令确保 SElinux 状态。
[[email protected] ~]# sestatus SELinux status: disabled
3.禁用Master和Worker的交换
需要在所有 Kubernetes 主机(Master 和 Workers)上停用 Swap。 这是 Kubernetes 社区的首选部署方法。 如果未禁用交换,kubelet 服务将不会在 master 和 worker 上启动。
运行以下命令以禁用 SWAP:
[[email protected] ~]# swapoff -a && sed -i '/swap/d' /etc/fstab
4.在防火墙中允许需要的端口
为了使 Kubernetes 组件能够相互交互,某些基本端口必须可用。 以下是要打开的端口以利用 Kubernetes 组件之间的连接。
控制平面/主服务器:
协议 | 方向 | 端口范围 | 目的 | 使用者 |
TCP | 入站 | 6443 | Kubernetes API 服务器 | 全部 |
TCP | 入站 | 2379-2380 | etcd 服务器客户端 API | kube-apiserver, etcd |
TCP | 入站 | 10250 | Kubelet API | 自我,控制平面 |
TCP | 入站 | 10259 | kube-调度器 | 自己 |
TCP | 入站 | 10257 | kube-控制器-管理器 | 自己 |
工作节点:
协议 | 方向 | 端口范围 | 目的 | 使用者 |
TCP | 入站 | 10250 | Kubelet API | 自我,控制平面 |
TCP | 入站 | 30000-32767 | 节点端口服务 | 全部 |
要允许所需端口通过防火墙,请运行以下命令。
主节点:
[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10259/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10257/tcp
[[email protected] ~]# firewall-cmd --reload
工作节点:
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[[email protected] ~]# firewall-cmd --reload
我们正在禁用 Master 和 Worker 中的防火墙,因为它是出于演示目的。 但是,不建议将其用于实时生产实践。
使用以下命令停止和禁用防火墙。
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
5. 安装 Docker
Docker 使“构建”容器变得更容易,而 Kubernetes 使实时“管理”它们成为可能。 要打包和发布软件,请使用 Docker。 要启动和扩展您的应用程序,请使用 Kubernetes。
在集群中的所有机器中添加 docker 存储库。
创建名为 docker.repo
在下面 /etc/yum.repos.d/
目录:
[[email protected] ~]# vi /etc/yum.repos.d/docker.repo
在其中添加以下行:
[docker] baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/ gpgcheck=0
按 ESC 键并输入 :wq
保存文件并 close 它。
在 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
保存文件并 close 它。
使用以下命令在 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
[[email protected] ~]# 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
用户,如上述输出中所述,在主服务器中运行以下命令。
[[email protected] ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
8.配置POD网络
Kubernetes Pod 网络是 Kubernetes 中互连组件的网络。 这个网络概念可以以几种不同的方式实现。 在我们的演示中,我们将使用 《织网》.
在主服务器中运行以下命令来设置 POD 网络。
[[email protected] ~]# export kubever=$(kubectl version | base64 | tr -d 'n')
[[email protected] ~]# 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 [[email protected] ~]#
9.加入工作节点
跑过 ‘kubeadm join
‘ 命令将工作节点加入集群。 这是我们从 ‘ 复制的命令kubeadm init
‘ 输出。
[[email protected] ~]# 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 <none> 30m v1.23.1
结论
在本文中,我们看到了使用 Kubeadm 设置和配置 Kubernetes 集群的详细步骤。 参考我们之前的 Kubernetes系列 文章以详细了解 Kubernetes 架构和概念。 我们将在接下来的文章中看到 Kubernetes 操作。
阅读下一篇:
- 如何在 Linux 中创建和管理 Kubernetes Pod
资源: