如果您已经从Red Hat的CentOS 7迁移到CentOS 8,您可能已经注意到发生了很多变化。这些变化已经让管理员们开始以不同的方式处理任务。安装Kubernetes就是这种情况。如果您希望在CentOS 8上部署Kubernetes集群,则CentOS8操作系统所发生的变化将直接影响您。
但是如何影响的呢?尽管它们不会改变您实际部署集群的方式,但为部署提供一切所需的资源却大不相同。
不用担心,我将引导您完成在CentOS 8上安装Kubernetes的过程,这样您就可以专注于部署集群和管理容器的业务了。
您需要什么
为了成功安装Kubernetes(并创建集群),您至少需要两台机器。我将在下面两个IP地址上运行的CentOS 8服务器上进行演示:
kubemaster – 10.34.1.139
kubenode – 10.34.1.161
您还需要一个具有sudo特权的账户并有权访问root用户。
有了所有这些,让我们开始工作。
除非另有说明,下面的所有内容在master节点和node节点上面都需要操作。
主机名
首先要做的是设置服务器的主机名,然后修改/etc/hosts
文件。首先使用以下命令设置主机名:
sudo hostnamectl set-hostname HOSTNAME
其中HOSTNAME
是要使用的主机名(例如kubemaster或kubenode)。设置主机名后,注销并重新登录。
接下来,使用以下命令打开hosts文件进行编辑:
sudo nano /etc/hosts
在该文件的底部添加以下内容(进行修改以匹配您的主机名和IP地址):
1.kubemaster - 10.34.1.139
2.kubenode - 10.34.1.161
保存并关闭文件。
安装Docker-CE
目前,Kubernetes无法与Podman(现在是RHEL和CentOS的默认容器引擎)一起使用。因此,您需要安装docker引擎。此过程有一些技巧。
下面是方法。
首先要做的是使用以下命令安装较旧版本的docker-ce:
sudo dnf install docker-ce-3:18.09.1-3.el7
接下来,您需要使用以下命令打开适当的防火墙端口:
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 --permanent --add-port=10255/tcp
sudo firewall-cmd –reload
sudo modprobe br_netfilter
sudo echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
使用以下命令启动并启用Docker守护程序:
sudo systemctl enable --now docker
现在,您可以使用以下命令将用户添加到docker组:
sudo usermod -aG docker $USER
添加用户后,注销并重新登录,以便用户无需使用sudo(出于安全目的)即可使用docker引擎。
接下来,使用以下命令安装containerd.io软件包:
sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
完成后,使用以下命令安装最新版本的docker-ce:
sudo dnf install docker-ce
非常好,继续吧。
安装Kubernetes
现在我们可以在CentOS上安装Kubernetes。首先,我们必须使用以下命令创建一个新的存储库文件:
sudo nano /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
保存并关闭文件。使用以下命令安装必要的Kubernetes软件包:
sudo dnf install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
使用以下命令启动并启用该服务:
sudo systemctl enable --now kubelet
现在,我们将不得不su到root用户,然后使用以下命令创建一个新文件(以帮助配置iptables):
nano /etc/sysctl.d/k8s.conf
在该文件中,粘贴以下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
保存并关闭文件。使用以下命令加载新配置:
sysctl --system
使用exit命令退出root用户。
禁用swap
接下来,我们必须禁用swap。使用以下命令执行此操作:
sudo swapoff -a
这将暂时禁用交换。要永久禁用交换(因此重启后不会重新启用交换),请打开fstab并使用以下命令进行编辑:
sudo nano /etc/fstab
在该文件中,注释掉(在行的开头添加#字符)以以下内容开头的行:
/dev/mapper/cl-swap
保存并关闭文件。
创建一个守护程序文件
最后,我们必须创建一个守护程序文件。为此,首先发出su命令,然后使用以下命令创建新的守护程序文件:
nano /etc/docker/daemon.json
在该文件中,粘贴以下内容:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
保存并关闭文件。
使用以下命令创建一个新的systemd目录:
mkdir -p /etc/systemd/system/docker.service.d
使用以下命令重新加载并重新启动Docker守护进程:
systemctl daemon-reload
systemctl restart docker
使用exit命令退出 root用户。
初始化集群
下面命令在Kubernetes master服务器上完成。要初始化集群,请发出命令:
sudo kubeadm init
上面的代码将初始化集群,并向您报告用于将node节点连接到主服务器的必要命令。
这是在CentOS 8上安装Kubernetes和初始化集群的当前方法。目前,还无法确定Podman的发展和成熟是否会改变。但是,在那之前,这是我成功的方法之一。尝试一下,看看它是否不会成为在Kubernetes上启动并在CentOS 8上运行的必经之路。
讲师主页:tonybai_cn
讲师博客: Tony Bai
实战课:《Kubernetes实战:高可用集群搭建,配置,运维与应用》
免费课:《Kubernetes基础:开启云原生之门》