前言

容器始于OS,OS就是它的土壤。操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序,并且为软件运行提供通用服务的系统软件。

容器这个技术,不是一个新技术,它其实早就有了,虽然最近这几年才火爆,但是容器完全是一个新瓶装旧酒的玩意,感兴趣的小伙伴们可以更深入去了解一下历史,如下图所示:

CentOS7  规划搭建 kubernetes 集群_CentOS

在我们想要接触了解 Kubernetes 之前,还是花一点时间来正真了解容器是什么? 毕竟,在不知道容器是什么的情况下谈论容器编排器(Kubernetes)是没有意义的!

下面是我们日常经常会用到的用品,就是最常见的一种器皿,一个用来便携的、安全存放你需要的所有食材的容器。

CentOS7  规划搭建 kubernetes 集群_Docker_02

在计算机方面使用容器技术之前,业界的网红应该是虚拟化技术,虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

虚拟化技术的代表,是 VMWare 和 OpenStack,虚拟机属于虚拟化技术。而 Docker 这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化,正因为如此,容器技术受到了热烈的欢迎和追捧,正如前文所说,容器这技术最近这几年才火爆发展迅速。

CentOS7  规划搭建 kubernetes 集群_Docker_03

现在我们大致了解了什么是容器了,也很容易知道它为什么深受欢迎,发展迅速了。

下面进入正题,也就是今天要分享的《CentOS7 规划搭建 kubernetes 集群》


系统平台

操作系统:CentOS Linux 7 (Core)

CentOS7  规划搭建 kubernetes 集群_Docker_04

CentOS7  规划搭建 kubernetes 集群_docker_05

相关工具:MobaXterm、Visual Studio Code、Notepad++、VMware Pro、WPS Office。

CentOS7  规划搭建 kubernetes 集群_docker_06

了解 Kubernetes 架构图

CentOS7  规划搭建 kubernetes 集群_CentOS_07

集群平台规划如下

角色

OS

CPU

Memory

Disk

IP

Master

CentOS Linux 7

4 cores

4G

100G

192.168.59.133

Node1

CentOS Linux 7

4 cores

5G

100G

192.168.59.134

Node2

CentOS Linux 7

4 cores

5G

100G

192.168.59.135

三台 CentOS7 虚拟机 

CentOS7  规划搭建 kubernetes 集群_docker_08

三台虚拟机角色及IP规划

CentOS7  规划搭建 kubernetes 集群_CentOS_09


安装要求

上面的集群系统安装及平台规划完成之后,可以准备开始搭建集群了。

安装部署 kubernetes 集群需要满足以下几个必备条件:

一台或多台机器,操作系统 CentOS7.x86_x64。(已满足)

硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多。(已满足)

可以访问互联网,需要拉取镜像,安装相关软件。(已满足)

禁止 swap 分区。(已满足)

各位可以先看看是否都具备满足条件,都OK那就按下面的步骤动手进行操作吧。


安装操作步骤

1、配置免密登录

首先,三台服务器之间配置互信免密登录。

ssh-keygen -t rsa

使用 ssh-copy-id 复制公钥到所有服务器节点上去

ssh-copy-id k8snode1 、ssh-copy-id k8snode2、......


更换 yum 国内源,推荐配阿里源,比较稳定可靠:
# wget -O/etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
--2023-05-26 19:45:15--  http://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 140.207.236.230, 140.207.236.146, 140.207.236.232, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|140.207.236.230|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2523 (2.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base.repo’
100%[========================================================>] 2,523       --.-K/s   in 0.002s
2023-05-26 19:45:15 (344 MB/s) - ‘/etc/yum.repos.d/CentOS-Base.repo’ saved [2523/2523]

网易源:

# wget -O/etc/yum.repos.d/CentOS-Base163.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo
--2023-05-26 19:46:47--  http://mirrors.163.com/.help/CentOS7-Base-163.repo
Resolving mirrors.163.com (mirrors.163.com)... 101.71.33.11
Connecting to mirrors.163.com (mirrors.163.com)|101.71.33.11|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1572 (1.5K) [application/octet-stream]
Saving to: ‘/etc/yum.repos.d/CentOS-Base163.repo’
100%[==========================================================>] 1,572       --.-K/s   in 0.002s
2023-05-26 19:46:47 (794 KB/s) - ‘/etc/yum.repos.d/CentOS-Base163.repo’ saved [1572/1572]
清理 yum 缓存,并生成新的缓存。
yum clean all

yum makecache
更新 yum 源检查是否生效
yum update
若更新 yum 源不更新内核:直接在 yum 的命令后面加如下的参数。
yum --exclude=kernel* update
更新后的内核版本如下

Kernel: Linux 3.10.0-1160.90.1.el7.x86_64

Architecture: x86-64

上面的系统环境都准备OK,就可以继续按下面步骤操作安装了。


2、按如下步骤执行
2.1、 关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

2.2、 关闭 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config		#永久
setenforce 0	#临时方案

查看selinux状态
sestatus
getenforce

2.3、 关闭swap:
sed -i 's/.*swap.*/#&/' /etc/fstab		#注释掉 swap 这一行,永久关闭。
swapoff -a 	  #临时方案
free -lhgt		#查看分区空间

2.4、 修改主机名:
hostnamectl set-hostname <hostname>
hostnamectl set-hostname k8smaster
hostnamectl set-hostname k8snode1
hostnamectl set-hostname k8snode2

2.5、 在 master 主机添加 hosts ,节点机上无需执行。
cat >> /etc/hosts << EOF
192.168.59.133 k8smaster
192.168.59.134 k8snode1
192.168.59.135 k8snode2
EOF

2.6、 将桥接的 IPv4 流量传递到 iptables 的链,所有节点服务器都要执行。
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

cat /etc/sysctl.d/k8s.conf  #查看配置参数
上面的参数配置正确,就可以执行下面的指令。
sysctl --system		#立即生效

2.7、 设置时间同步
yum install ntpdate -y
ntpdate time.windows.com
3、所有机器都安装 Docker/kubeadm/kubelet/kubectl
3.1、所有机器都需要安装 Docker/kubeadm/kubelet/kubectl
Kubernetes 默认 CRI (容器运行时)为 Docker 因此先安装 Docker服务。

3.2、 安装 Docker
执行以下命令来列出所有可用的 Docker 版本
yum list docker-ce --showduplicates | sort -r
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum install -y docker-ce docker-ce-cli http://containerd.io   #不指定版本,默认是安装最新版本。

#yum install -y docker-ce-18.06.1.ce-3.el7		#指定一个版本安装

3.3、 配置 Docker 镜像加速器
cat > /etc/docker/daemon.json << EOF
{
        "exec-opts": ["native.cgroupdriver=systemd"],
        "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com","https://rrnv06ig.mirror.aliyuncs.com","https://reg-mirror.qiniu.com","https://docker.mirrors.ustc.edu.cn"]
}
EOF

3.4、 查看状态,设置开机启动
systemctl status docker.service
systemctl daemon-reload && systemctl restart docker && systemctl enable docker

systemctl status containerd

3.5、 添加 k8s 的阿里云 YUM 源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

3.6、 安装 kubeadm、kubelet和kubectl

yum install -y kubelet-1.25.2 kubeadm-1.25.2 kubectl-1.25.2		#指定安装 1.25.2 版本。

yum install -y kubelet kubeadm kubectl		# 不指定版本,默认会安装最新版本

3.7、 设置开机启动,查看状态。
systemctl enable kubelet	#设置成开机启动
systemctl start kubelet
kubelet --version

3.8、 查看服务状态,查看 log 信息。
systemctl status kubelet | journalctl -xe
journalctl -u kubelet --no-pager 	#查看启动报错日志,--no-pager 参数可以一次性输出日志。
journalctl -xefu kubelet
4、部署kubernets Master

在 192.168.59.133  (Master) 节点上执行

kubeadm init --apiserver-advertise-address=192.168.59.133 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.25.2 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

CentOS7  规划搭建 kubernetes 集群_Docker_10

kubeadm config imgaes pull 拉取镜像,会有如下的提示信息,说明镜像拉取成功。

按上面的提示在进行设置

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl get nodes

加入 kubernetes Node

在 Node 服务器 192.168.59.134、192.168.59.135 各节点上执行,向集群添加新节点。

执行  kubeadm join 命令:

kubeadm join 192.168.59.133:6443 --token 1zobjk.teg9wbpovoa3xkul --discovery-token-ca-cert-hash sha256:1dc06b47eec661408e7a3093e01b40d3436e7a7118509e6c0a274567a01b5964

默认 token 有效期为24小时,当过期之后,该 token 就不可用了。
这时就需要重新创建 token 了,执行如下:
kubeadm token create --print-join-command

CentOS7  规划搭建 kubernetes 集群_docker_11

可以看到 node 节点服务器都已加入 master 集群。


5、安装 CNI 网络插件

flannel 网络插件,保证集群内部的网络正常运作。

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

CentOS7  规划搭建 kubernetes 集群_CentOS_12

CentOS7  规划搭建 kubernetes 集群_Docker_13

可以查看 pod 信息

CentOS7  规划搭建 kubernetes 集群_docker_14


CentOS7  规划搭建 kubernetes 集群_Docker_15


可以看到文章之前的集群平台规划,三台服务器规划组成搭建的 kubernetes 集群就顺利搭建完成,希望对各位同学有所帮助,也希望各位同学,看过之后用发财的小手点个红心鼓励鼓励。