继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

如何在Red Hat CentOS 8上安装Kubernetes集群

tonybai
关注TA
已关注
手记 168
粉丝 7768
获赞 488

图片描述

如果您已经从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上运行的必经之路。


打开App,阅读手记
“小礼物走一走,来慕课关注我”
赞赏支持
Tony Bai 说
去围观
Tony Bai,智能网联汽车独角兽公司先行研发部负责人,Go语言专家,资深架构师,《Go语言精进之路》作者。
发表评论
随时随地看视频慕课网APP