Kubernetes集群搭建和部署(CentOS7.9系统)
Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用的。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包
文章目录
前言
Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。Google设计并捐赠给Cloud Native Computing Foundation(今属Linux基金会)来使用的。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具, 包括Docker等。
一、Kubernetes集群部署前环境准备
1.基础系统环境
- 本文是三台设备,操作系统 CentOS7.9-86_x64
- 硬件配置:8GB内存,4vCPU,硬盘100GB
- 主机规划
2.关闭防火墙
#所有设备上都进行安装操作
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机自启
systemctl disable firewalld
3.关闭 SELinux
#所有设备上都进行安装操作
# 永久关闭 SELinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 临时关闭 SELinux
setenforce 0
4.关闭 Swap 分区
#所有设备上都进行安装操作
# 永久关闭 Swap 分区
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 临时关闭 Swap 分区
swapoff -a
# 重启系统
reboot
5.设置主机名
#所有设备上都进行配置操作
# master设置主机名
hostnamectl set-hostname k8s-master
# node1设备设置主机名
hostnamectl set-hostname k8s-node1
# node2设备设置主机名
hostnamectl set-hostname k8s-node2
#在master设备上设置hosts解析,并同步到所有node节点
#方法1:
vim /etc/hosts
#在/etc/hosts文件里添加主机和节点
192.168.13.185 k8s-master
192.168.13.186 k8s-node1
192.168.13.187 k8s-node2
#方法2:
echo -e "192.168.13.185 k8s-master\n192.168.13.186 k8s-node1\n192.168.13.187 k8s-node2">> /etc/hosts
#将配置同步到node1和node2
scp /etc/hosts root@192.168.13.186:/etc/hosts
scp /etc/hosts root@192.168.13.187:/etc/hosts
#配置ssh免密登录(为了方便在主机间复制配置文件,可不做)
ssh-keygen -t rsa
ssh-copy-id k8s-node1
ssh-copy-id k8s-node2
6.调整内核参数:
#在Master设备上修改/etc/sysctl.conf文件,添加以下内容:
vim /etc/sysctl.conf
#复制添加以下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
#将配置文件同步到所有node节点
scp /etc/sysctl.conf k8s-node1:/etc/sysctl.conf
scp /etc/sysctl.conf k8s-node2:/etc/sysctl.conf
#在所有设备上都执行sysctl --system使配置生效
sysctl --system
7.配置时间同步:
#所有设备上都进行安装操作
#安装chrony:
yum install -y chrony
#启动chrony服务:
systemctl start chronyd
#设置开机自启:
systemctl enable chronyd
二、安装Docker CE
#所有设备上都进行安装操作
1.安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置Docker的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装Docker CE
#安装docker-ce
yum install -y docker-ce docker-ce-cli containerd.io
#启动Docker并设置开机自启:
systemctl enable docker --now
4.配置Docker镜像加速
#编辑/etc/docker/daemon.json文件,添加以下内容(以下docker源仅临时可用,实际部署可根据情况查找可用源替换):
#编辑/etc/docker/daemon.json文件,复制添加以下内容
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://dytt.online",
"https://docker-0.unsee.tech",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://666860.xyz",
"https://hub.rat.dev",
"https://docker.m.daocloud.io",
"https://demo.52013120.xyz",
"https://proxy.vvvv.ee",
"https://registry.cyou",
"https://mirror.ccs.tencentyun.com",
"https://<your_code>.mirror.aliyuncs.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
#将配置的docker源文件同步到所有node节点
scp /etc/docker/daemon.json k8s-node1:/etc/docker/daemon.json
scp /etc/docker/daemon.json k8s-node2:/etc/docker/daemon.json
#在所有设备上都运行重新加载Docker配置并重启Docker服务:
systemctl daemon-reload
systemctl restart docker
三、安装Kubernetes组件
1.配置Kubernetes的yum源(所有设备都操作)
#编辑/etc/yum.repos.d/kubernetes.repo文件,添加以下内容:
#编辑kubernetes.repo文件,添加以下内容
vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
#将配置的kubernetes源文件同步复制到所有node节点
scp /etc/yum.repos.d/kubernetes.repo k8s-node1:/etc/yum.repos.d/kubernetes.repo
scp /etc/yum.repos.d/kubernetes.repo k8s-node2:/etc/yum.repos.d/kubernetes.repo
2.安装kubeadm、kubelet和kubectl
#所有设备上都进行安装操作
#安装命令:
yum install -y kubelet-<version> kubeadm-<version> kubectl-<version>
#安装Kubernetes 1.23.6版本
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
#完成安装后,启动kubelet并设置开机自启
systemctl enable kubelet --now
3.初始化Master节点
1.在Master设备上初始化集群:
#初始化Kubernetes 1.23.6版本,并设置Pod网络CIDR为172.168.0.0/16
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --pod-network-cidr=172.168.0.0/16
2.配置kubectl:
#根据初始化输出提示,执行以下命令配置kubectl:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.加入Worker节点
获取加入命令:
在master节点初始化完成后,会输出一个kubeadm join命令,用于将Worker节点加入集群。复制该命令。
在Worker节点上执行加入命令:
在node1和node2节点上分别执行复制的kubeadm join命令。
4.安装网络插件
1.选择网络插件:
Kubernetes支持多种网络插件,如Calico、Flannel等。这里以Flannel为例。
2.安装Flannel:
下载Flannel的YAML文件:
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/canal.yaml -O
在master节点上应用Calico的YAML文件:
kubectl apply -f canal.yaml
5.验证集群状态
1.查看kubernetes状态
1.查看节点状态:
#在master节点上执行以下命令查看节点(如果节点状态为NotReady可稍等几分钟后重新查看)
kubectl get nodes
2.查看Pod状态:
#执行以下命令查看Pod状态
kubectl get pods -A
确保所有Pod都处于Running状态
kubectl get pod -n kube-system
master和node节点上都需要进行以下操作,以便设置为开机自启:
systemctl enable kubelet
2.在Kubernetes集群中创建一个pod,验证是否正常运行:
#创建nginx容器
kubectl create deployment nginx --image=nginx
#暴露对外端口
kubectl expose deployment nginx --port=80 --type=NodePort
#查看nginx是否运行成功
kubectl get pod,svc
服务状态与日志
systemctl status kubelet
journalctl -u kubelet -n 100 --no-pager
更多推荐
所有评论(0)