前言

    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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐