centos安装部署Kubernetes(k8s)步骤使用kubeadm方式


机器地址:

192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2

1、修改系统配置

修改每台机器的名字

 hostnamectl set-hostname k8s-master
 hostnamectl set-hostname k8s-node1
 hostnamectl set-hostname k8s-node2

关闭防火墙和selinux

 systemctl stop firewalld && systemctl disable firewalld

临时关闭selinux:

setenforce 0

永久关闭:

vim /etc/selinux/config

修改selinux为disabled或者permissive 重启生效
在这里插入图片描述
配置本地解析

  echo '''
192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2
''' >> /etc/hosts

在这里插入图片描述
确保每个节点MAC地址和 product_uuid 的唯一性

你可以使用命令 ip linkifconfig -a 来获取网络接口的 MAC 地址
可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验
一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。

同步时间
如果各机器上时间都没有问题,也没有偏差,则可以跳过该步骤。

# 安装ntp工具
yum install -y ntp

#设置时区
timedatectl set-timezone 'Asia/Shanghai'

# 同步时间
ntpdate ntp1.aliyun.com

升级内核
链接:linux(centos7.6–>7.9)内核升级
更新yum—版本高可以跳过此步骤

sudo yum update

2、安装docker应用

每个节点都需要下载

yum install -y yum-utils device-mapper-persistent-data lvm2 git

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce 

注意:
如果使用的挂载磁盘则需要更改docker的数据目录

如果是启动过的docker则需要停止docker服务 然后把 /var/lib/docker/目录下的数据移动到新的目录 mv /var/lib/docker/ /data/docker/

修改docker默认数据存储目录配置,在/etc/docker/daemon.json文件添加 以下内容,若是没有/etc/docker/daemon.json文件,则新建该文件

vim /etc/docker/daemon.json

{
    
    

 "data-root": "/data/docker"

}

启动docker

systemctl start docker   

systemctl enable docker
  设置开机自启

在这里插入图片描述

关闭swap分区

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。方法一,通过kubelet的启动参数–fail-swap-on=false更改这个限制。方法二,关闭系统的Swap。

每个节点都需要关闭

swapoff -a

vim /etc/fstab 注释掉SWAP的自动挂载
在这里插入图片描述
使用free -m查看是否关闭
在这里插入图片描述

3. 拉取docker镜像

初始化的时候,它会自动拉取镜像但是自动拉取用的是k8s官网的源地址容易失败所以手动拉取aliyun的镜像。注意拉取的docker镜像的版本必须要和kubelet、kubectl的版本保持一致。在下面初始化时直接指定阿里云的镜像。

vim dockerpull.sh

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.9.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.6-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9

执行脚本拉取镜像

bash dockerpull.sh 

看下镜像是否都拉取成功

docker images  

在这里插入图片描述

4、cri-dockerd安装

Kubernetes 的早期版本仅适用于特定的容器运行时:Docker Engine。 后来,Kubernetes 增加了对使用其他容器运行时的支持。为了实现编排器和许多不同的容器运行时之间交互操作创建了CRI 标准。 Docker Engine 没有实现(CRI)接口,所以Kubernetes 项目创建了特殊代码dockershim来帮助过渡,Dockershim 代码一直是一个临时解决方案(因此得名:shim)。 Kubernetes自v1.24移除了对Dockershim 的支持,而Docker Engine默认又不支持CRI规范,因而二者将无法直接完成整合。为此,Mirantis和Docker联合创建了cri-dockerd项目,用于为Docker Engine提供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker 。

注意部署最新版本XXXX 默认不在是使用docker容器,所以需要下载一个插件
所有节点都需要下载
https://github.com/Mirantis/cri-dockerd/releases

下载对应版本的cri-dockerd rpm包,注意版本和linux版本,也可以自行下载上传至所有主机

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm

安装
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm

在这里插入图片描述

修改/usr/lib/systemd/system/cri-docker.service文件中ExecStart配置kubelet使用pause镜像

vim /usr/lib/systemd/system/cri-docker.service


ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

在这里插入图片描述
重新加载&现在启动

systemctl daemon-reload

systemctl enable --now cri-docker

加载ipvs相关内核模块

vim mod.sh

#!/bin/bash

modprobe ip_vs

modprobe ip_vs_rr

modprobe ip_vs_wrr

modprobe ip_vs_sh

modprobe nf_conntrack_ipv4

modprobe br_netfilter

在这里插入图片描述

chmod +x mod.sh

bash   mod.sh

在这里插入图片描述

scp mod.sh  k8s-node1:/root/   

scp mod.sh  k8s-node2:/root/ 

发送后记得执行一下

vim /etc/rc.local   如果重新开机,需要重新加载,需要写在 /etc/rc.local 中开机自动加载
添加这句 bash /root.mod.sh

在这里插入图片描述

chmod +x /etc/rc.local

配置转发相关参数,否则可能会出错

cat <<EOF >  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

vm.swappiness=0

EOF

使配置生效

sysctl --system  

查看是否加载成功

lsmod | grep ip_vs

在这里插入图片描述

5、安装kubeadm和kubelet

所有节点都需要安装

  • 配置阿里云的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[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

拷贝到另外两台机器

 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
  • 安装
yum makecache fast -y

yum install -y kubelet kubeadm kubectl ipvsadm

#注意,这样默认是下载最新版本

如果想下载旧版本,后面要跟上指定的版本号

yum install -y kubelet-1.22.2-0.x86_64 kubeadm-1.22.2-0.x86_64 kubectl-1.22.2-0.x86_64 ipvsadm  

启动kubelet

systemctl daemon-reload

systemctl enable kubelet && systemctl restart kubelet
systemctl status kubelet

在这里插入图片描述
(每个节点都会报错),不用管master节点初始化之后就好了。

  • 配置master节点初始化
  • kubeadm init --help可以查看命令的具体参数用法

在master节点执行初始化(node节点不用执行)

参数详情:

apiserver-advertise-address 指定apiserver的IP,即master节点的IP

image-repository 设置镜像仓库为国内的阿里云镜像仓库

kubernetes-version 设置k8s的版本,跟步骤三的kubeadm版本一致

service-cidr 这是设置node节点的网络的,暂时这样设置

pod-network-cidr 这是设置node节点的网络的,暂时这样设置

cri-socket 设置cri使用cri-dockerd
查看版本

kubeadm  version

在这里插入图片描述

kubeadm init --apiserver-advertise-address=192.168.0.35 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.2 --service-cidr=10.168.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock  --ignore-preflight-errors=all

执行完初始化的命令 查看一下回显是否成功 返回0为成功

echo $?

在这里插入图片描述

kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
	--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e

在这里插入图片描述
初始化完成后根据提示的命令操作即可

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

如果使用的root用户可以操作这条命令

  export KUBECONFIG=/etc/kubernetes/admin.conf

可以查看到master在这里插入图片描述

6、配置flannel网络插件

完成master节点的时候k8s已经叫我们去配置pod网络了。在k8s系统上Pod网络的实现需要依赖于第三方插件进行种类有很多我们这里使用的flannel。

cd ~ && mkdir flannel && cd flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

查看一下镜像版本随后使用docker拉取,所有节点都拉
vim kube-flannel.yml
在这里插入图片描述

在这里插入图片描述
拉取要用到的镜像所有节点都要拉取

docker pull docker.io/flannel/flannel:v0.22.0

docker pull docker.io/flannel/flannel-cni-plugin:v1.1.2

重新加载文件

kubectl apply -f kube-flannel.yml

在这里插入图片描述
查看一下master节点的状态

kubectl  get nodes

在这里插入图片描述
从NoReady 变成了 Ready 那么我们的flannel就部署好了

7、Node节点加入集群操作

Node1 节点操作

kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
	--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e --cri-socket unix:///var/run/cri-dockerd.sock

在这里插入图片描述
再次查看状态,Node两个节点也已经加入成功
在这里插入图片描述
看下flannel运行状态

 kubectl get pods --namespace kube-flannel   

在这里插入图片描述
至此搭建完成。

猜你喜欢

转载自blog.csdn.net/m0_46400195/article/details/131070214