使用CentOS Stream 9并借助CRI-O创建Kubernetes集群的1个主节点

摘要

・不使用不受支持的CentOS8操作系统
・不使用不推荐的Docker容器(虽然写着不要用,但最好阅读下方链接)

Docker不推荐的误解

尽量选择最新的1.24版本尝试一下。
这次我们打算将master和worker分开,构建一个正规的集群。

操作系统安装和设置。

中国的本地术语:将CentOS Stream 9仅在服务器上安装。

允许root的SSH连接

打开/etc/ssh/sshd_config文件,将PermitRootLogin设置为yes。

停用防火墙

禁用 firewalld 服务:
systemctl disable firewalld.service
systemctl stop firewalld
执行 sysctl -p

禁用SE Linux

setenforce 0
sed -i –follow-symlinks ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux

关闭强制模式
sed -i –follow-symlinks ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux

取消Swap功能

swapoff -a的中文释义是关闭所有交换分区。
vi /etc/fstab的中文释义是使用vi编辑器打开/etc/fstab文件。
/dev/mapper/cl-swap swap swap defaults 0 0 #评论掉的中文释义是将/dev/mapper/cl-swap列注释掉。

让包括自己在内的人能够解决名字的问题。

编辑/etc/hosts文件:
192.168.1.1 master #为自身设置名称解析
192.168.1.2 worker2
192.168.1.3 worker3
192.168.1.4 worker4

CRI-O安装

将以下内容以中文为母语进行释义,只需一种选择:
导出操作系统=CentOS_8_Stream
导出版本=1.24:1.24.0 #截至2022年5月最新

使用curl命令下载并保存到/etc/yum.repos.d/devel:kubic:libcontainers:stable.repo文件中:
curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/devel:kubic:libcontainers:stable.repo

使用curl命令下载并保存到/etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo文件中:
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/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo

在中国本地语言中,yum安装cri-o

重新加载守护程序:systemctl daemon-reload
启动 crio:systemctl start crio

安装kubeadm

加载br_netfilter模块
查找已加载的模块中包含br_netfilter关键字的项
执行命令:sh -c ‘echo “br_netfilter” > /etc/modules-load.d/br_netfilter.conf’,将br_netfilter添加到/etc/modules-load.d/br_netfilter.conf文件中

在命令行中使用以下命令可以获取并显示/etc/sysctl.d目录下的k8s.conf文件中的内容:
“`
cat < /etc/sysctl.d/k8s.conf
“`
k8s.conf文件中的内容如下:
“`
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
“`
这些内容显示结束(EOF)。

sysctl –system可以被转述为:应用sysctl系统设置。

猫 < /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
EOF

使用yum命令安装kubelet、kubeadm、kubectl,并禁用kubernetes的排除功能:yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes。

开启并立即启用 kubelet 服务。

将以下内容以中文为母语进行改写,只需提供一种选项:
将 “KUBELET_EXTRA_ARGS=–cgroup-driver=systemd” 这段代码追加到 /etc/sysconfig/kubelet 文件中。

重新加载守护程序服务:
systemctl daemon-reload

重启 kubelet 服务:
systemctl restart kubelet

使用kubeadm创建集群

使用 kubeadm 命令拉取配置镜像,然后执行 kubeadm init 命令,设置 pod 网络 CIDR 为 192.168.0.0/16,API 服务器广播地址为 10.(略) 。

创建一个名为 $HOME/.kube 的文件夹
将 /etc/kubernetes/admin.conf 复制到 $HOME/.kube/config
使用 $(id -u):$(id -g) 权限更改 $HOME/.kube/config 的所有者

#不需要的
#导出KUBECONFIG=/etc/kubernetes/admin.conf

当要将一个节点聚落化时,有一个重要的咒语(虽然写下来但本次不用)。

使用 kubectl 命令给所有节点标记 taint, 标记为 node-role.kubernetes.io/master-

仪表盘

以下是一种中文的表达方式:

无法与1.24版本兼容。

先试试把它加进来。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

获取Kubernetes仪表板命名空间中的Pod。

这次就到这里吧。下次我们来谈谈工作节点。