k8s-1.25.0+cri-docker使用kubeadm方式部署
参考大佬文章:https://blog.csdn.net/qq_43715659/article/details/127601336。如果 kubectl get cs 发现集群不健康,更改以下两个文件。内存不能小于2G,建议至少4G。等待node全部ready即可。K8s集群配置级安装软件。查看master相关信息。等待执行成功 对应输出。
·
1.环境准备
K8s集群配置级安装软件
主机名 | IP地址 | 部署软件 |
---|---|---|
matser01 | 192.168.26.100 | GO、Cri-dockerd、Kubectl、Kubeadm、Kubelet |
node01 | 192.168.26.110 | GO、Cri-dockerd、Kubectl、Kubeadm、Kubelet |
先决条件
CPU不能少于2核
内存不能小于2G,建议至少4G
1.1 所有节点环境配置
需改hosts地址 可以写入shell脚本快速执行!!!(默认软件使用国外地址下载,执行完成后请留意错误日志)
#!/bin/bash
stty erase ^H
mkdir -p /tmp
datename=$(date +%Y%m%d-%H:%M:%S)
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
#关闭Selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭交换分区(必须关闭)
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#配置本地解析
cat >> /etc/hosts <<EOF
#172.31.15.74 master01
#172.31.15.43 node01
192.168.26.100 master01
192.168.26.110 node01
EOF
#调整内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
sysctl --system #使内核配置生效
#安装使用软件
yum install -y yum-utils device-mapper-persistent-data lvm2 git unzip wget
#配置yum源(阿里仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum -y install docker-ce
#配置docker网络驱动和镜像加速
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
#安装Go语言(有时候压缩包下载失败是因为没有科学上网,没有网络环境可以通过手动下载压缩包方式进行安装)
#切换到tmp目录
if [ ! -d "/tmp" ];then mkdir /tmp;fi;cd /tmp
wget https://go.dev/dl/go1.19.2.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.19.2.linux-amd64.tar.gz
cat >> /etc/profile <<EOF
export PATH=$PATH:/usr/local/go/bin
EOF
source /etc/profile
#安装Cri-Dockerd
git clone https://github.com/Mirantis/cri-dockerd.git
cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
#修改/etc/systemd/system/cri-docker.service配置里的ExecStart为
#ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
#以下使用变量赋值使用sed命令直接修改配置
#定义config变量,将要追加的内容作为值传给变量
config="--network-plugin=cni --pod-infra-container-image=--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7"
#使用sed命令修改/etc/systemd/system/cri-docker.service文件
sed -i -r 's,(^E[a-z]+S[a-z]+=/[a-z].+/),\1 '"$config"',' /etc/systemd/system/cri-docker.service
#取消config变量
unset config
#重新加载启动cri-docker
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket
systemctl start cri-docker
#配置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=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
EOF
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
systemctl enable kubelet --now
> /tmp/$datename_init.log
go version
if [ $? != 0 ];then echo 'Go环境安装失败,请重试或手动解决!!!' ;echo " Go环境安装失败,请重试或手动解决!!!" >> /tmp/${datename}_init.log
fi
cri-dockerd --version
if [ $? != 0 ];then echo 'cri-dockerd环境安装失败,请重试或手动解决!!!' ;echo " cri-dockerd环境安装失败,请重试或手动解决!!!" >> /tmp/${datename}_init.log
fi
if [ -s "/tmp/$datename_init.log" ];then echo "相关软件已成功部署!!!" ;echo "相关软件已成功部署!!!" >> /tmp/${datename}_init.log
else
echo "相关软件安装失败,具体日志:/tmp/${datename}_init.log"
fi
2.master节点初始化
#修改主机名
hostnamectl set-hostname master01
#重新登录shell使主机名生效
exit
#使用kubeadm部署K8s集群master节点
kubeadm init \
--apiserver-advertise-address=192.168.26.100 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.125.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock
#--apiserver-advertise-address的值为master节点的IP地址
#--image-repository registry.aliyuncs.com/google_containers基础镜像使用阿里云的镜像库
#--kubernetes-version v1.25.0 k8s版本为1.25
#--cri-socket /var/run/cri-dockerd.sock k8s CRI选择Cri-dockerd,必须
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
等待执行成功 对应输出
## 记录下列命令片段加入集群 这里替换成你的加入命令哈
kubeadm join 192.168.26.100:6443 --token y6cddn.c80wmdezzkmhlc9c \
--discovery-token-ca-cert-hash sha256:0d0fde2e52162aacf229efa517dca00f7f34df76591605cf556c1dd7a824cb01 \
--cri-socket /var/run/cri-dockerd.sock
##如果忘记可以使用以下命令重新打印
#列出token
kubeadm token list | awk -F" " '{print $1}' |tail -n 1
#获取CA公钥的的hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^ .* //'
查看master相关信息
kubectl get cs
kubectl cluster-info
3.node节点加入
kubeadm join 192.168.26.100:6443 --token y6cddn.c80wmdezzkmhlc9c \
--discovery-token-ca-cert-hash sha256:0d0fde2e52162aacf229efa517dca00f7f34df76591605cf556c1dd7a824cb01 \
--cri-socket /var/run/cri-dockerd.sock
等待执行成功
4.master节点配置集群网络套件 (flannel)
使用的是国外地址,无法访问请手动解决
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待node全部ready即可
5. 解决不健康的节点问题(非必要,出现时执行)
如果 kubectl get cs 发现集群不健康,更改以下两个文件
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
# 找到port=0,把这一行注释掉
#- --port=0
systemctl restart kubelet
参考大佬文章:https://blog.csdn.net/qq_43715659/article/details/127601336
更多推荐
已为社区贡献17条内容
所有评论(0)