前言
容器始于OS,OS就是它的土壤。操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序,并且为软件运行提供通用服务的系统软件。
容器这个技术,不是一个新技术,它其实早就有了,虽然最近这几年才火爆,但是容器完全是一个新瓶装旧酒的玩意,感兴趣的小伙伴们可以更深入去了解一下历史,如下图所示:
在我们想要接触了解 Kubernetes 之前,还是花一点时间来正真了解容器是什么? 毕竟,在不知道容器是什么的情况下谈论容器编排器(Kubernetes)是没有意义的!
下面是我们日常经常会用到的用品,就是最常见的一种器皿,一个用来便携的、安全存放你需要的所有食材的容器。
在计算机方面使用容器技术之前,业界的网红应该是虚拟化技术,虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化技术的代表,是 VMWare 和 OpenStack,虚拟机属于虚拟化技术。而 Docker 这样的容器技术,也是虚拟化技术,属于轻量级的虚拟化,正因为如此,容器技术受到了热烈的欢迎和追捧,正如前文所说,容器这技术最近这几年才火爆发展迅速。
现在我们大致了解了什么是容器了,也很容易知道它为什么深受欢迎,发展迅速了。
下面进入正题,也就是今天要分享的《CentOS7 规划搭建 kubernetes 集群》
系统平台
操作系统:CentOS Linux 7 (Core)
相关工具:MobaXterm、Visual Studio Code、Notepad++、VMware Pro、WPS Office。
集群平台规划如下
角色 | 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 虚拟机
三台虚拟机角色及IP规划
安装要求
上面的集群平台规划完成之后,可以准备开始搭建集群了。
安装部署 kubernetes 集群需要满足以下几个必备条件:
✬一台或多台机器,操作系统 CentOS7.x-86_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
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 添加阿里云 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
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
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
可以看到 node 节点服务器都已加入 master 集群。
可以查看 pod 信息
可以看到文章之前的集群平台规划,三台服务器规划组成搭建的 kubernetes 集群就顺利搭建完成,希望对各位有所步骤,也希望各位同学,看过之后用发财的小手点个红心鼓励鼓励。