基于Cri-dockerd使用Kubeadm部署Kubernetes1.25集群
1. 前言介绍
关于Kuebernetes的部署
常用于部署K8s集群的工具和部署方式
- minikube
- kubeadm
- 二进制包
本文使用kubeadm部署方式
K8s集群的部署有多种方式,而使用Kubeadm是部署K8s集群是其一,通过使用kubeadm方式部署,相教于使用二进制方式部署K8s多个组件的方法,Kubeadm使用一条命令即可完成整个k8s集群的搭建。
官网:https://github.com/kubernetes/kubeadm
关于Kubernetes1.24以上版本的情况说明
Kubernetes1.24+版本,默认取消了对Docker的支持,因此需要通过在每个K8s节点安装Cri-dockerd这个中间层插件,K8s Api通过Cri-dockerd去和Docker容器进行交互,因为Cri-dockerd需要go语言环境的支持,所以每个节点还需要部署Go语言环境。
2. 环境准备
K8s集群配置级安装软件
主机名 | IP地址 | 部署软件 |
---|---|---|
matser01 | 192.168.30.80 | GO、Cri-dockerd、Kubectl、Kubeadm、Kubelet |
node01 | 192.168.30.81 | GO、Cri-dockerd、Kubectl、Kubeadm、Kubelet |
node02 | 192.168.30.82 | GO、Cri-dockerd、Kubectl、Kubeadm、Kubelet |
先决条件
- CPU不能少于2核
- 内存不能小于2G,建议至少4G
3. 安装部署
3.1. 基础环境配置
在matser01、node01、node02上操作,保证网络正常的情况下可以直接写入脚本运行或使用xshell复制黏贴直接刷入主机(建议科学上网)
#关闭防火墙
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
192.168.30.80 master01
192.168.30.81 node01
192.168.30.82 node02
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.gzcat >> /etc/profile <<EOF
export PATH=$PATH:/usr/local/go/bin
EOFsource /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=kubebiz/pause:3.8#以下使用变量赋值使用sed命令直接修改配置#定义config变量,将要追加的内容作为值传给变量
config="--network-plugin=cni --pod-infra-container-image=kubebiz/pause:3.8"#使用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
EOFyum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
systemctl enable kubelet --now
3.2. master节点配置
#修改主机名
hostnamectl set-hostname master01#重新登录shell使主机名生效
exit#使用kubeadm部署K8s集群master节点
kubeadm init \--apiserver-advertise-address=192.168.30.80 \--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
成功创建K8s集群结果返回如下,圈红部分为其他节点加入集群的命令,因为使用cri-dockerd,其他系欸但加入时需加上–cri-socket /var/run/cri-dockerd.sock,否则会报错
3.3. 查看master节点状态(在master上操作)
kubectl get cs
kubectl cluster-info
kubeadm join加入集群时需要master节点的IP地址和token和集群CA公钥的的hash值,若忘记可以使用下面的命令查看
#列出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/^ .* //'
3.4. node01、node02节点配置(在node01和node02上操作)
#加入K8s集群
kubeadm join 192.168.30.80:6443 --token q9ev7q.348bo0ng5xttjact \--discovery-token-ca-cert-hash sha256:7e06b2fe75dcda3d4eba5b19f92b03fc0b7c04cb5b8c69234e36009722458a22 \
--cri-socket /var/run/cri-dockerd.sock
以上放回结果表示加入k8s集群成功
3.5. master节点安装网络套件(此处使用flannel)
节点刚加入集群时,因为master节点还未部署网络套件,所以所有节点的状态为Notready
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待一会后node就会进入ready状态
3.6. 解决不健康的节点问题(非必要,出现时执行)
如果 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
至此,K8s集群已经部署完毕,请开始畅快的游玩容器的世界吧~~~
参考文章及资料:
https://github.com/kubernetes/kubeadm
https://github.com/Mirantis/cri-dockerd
https://www.orchome.com/16591
https://www.orchome.com/16593
https://blog.51cto.com/u_15533361/5520096
基于Cri-dockerd使用Kubeadm部署Kubernetes1.25集群相关推荐
- 基于Redis6.2.6版本部署Redis Cluster集群
基于Redis6.2.6版本部署Redis Cluster集群 文章目录 基于Redis6.2.6版本部署Redis Cluster集群 1.Redis6.2.6简介以及环境规划 2.二进制安装Red ...
- Kubernetes系列(一)基于CentOS8部署Kubernetes1.19集群
1.系统环境 系统版本:CentOS8.1.1911 Kubernetes版本:1.19.1 Docker版本:19.03.1 节点信息: 10.24.10.3 master 10.24.10.6 n ...
- Kubernetes — 使用 kubeadm 部署高可用集群
目录 文章目录 目录 Kubernetes 在生产环境中架构 高可用集群部署拓扑 1.网络代理配置 2.Load Balancer 环境准备 3.Kubernetes Cluster 环境准备 安装 ...
- 使用kubeadm部署一个K8s集群
1.前言 kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 2. 安装要求 一台或多台机器,操作系统 Ce ...
- Kubernetes — 在 OpenStack 上使用 kubeadm 部署高可用集群
目录 文章目录 目录 高可用集群部署拓扑 高可用集群网络拓扑 网络代理配置 Load Balancer 环境准备 Kubernetes Cluster 环境准备 安装 Container Runtim ...
- 【aliyun ECS】CentOS 7/8使用kubeadm部署kubernets(k8s)集群【附阿里云实验室】内有福利
好消息好消息,阿里云全线降价,大量服务提供免费甚至永久的试用,赶紧来薅大厂羊毛吧,坐电梯即可直达! 送福利!阿里云热门产品免费领(含ECS),点击进入:https://click.aliyun.com ...
- s19.基于 Kubernetes v1.25 (kubeadm) 和 Docker 部署高可用集群(一)
基于 Kubernetes v1.25 和 Docker 部署高可用集群 主要内容 Kubernetes 集群架构组成 容器运行时 CRI Kubernetes v1.25 新特性 Kubernete ...
- 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群
Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...
- 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...
最新文章
- python学习笔记-Day17(jinja2)
- 字节跳动推荐平台技术公开,项亮:底层架构有时比上层算法更重要
- 前端小纠结--集成gitflow和standard-version使用
- binder-JAVA层机制
- 安装好的苹果系统部分截图
- 我服了!一些比较恶心的代码片段
- nyoj-222 整数中的1
- 程序员,为什么给你50万年薪,你还要搞死我公司?
- 等价关系和等价类_确定Java等价性的新时代?
- python_内置字符串
- 前端每日实战:47# 视频演示如何用纯 CSS 创作一个蝴蝶标本展示框
- [培训-无线通信基础-6]:信道编码(分组码、卷积吗、Polar码、LDPC码、Turbo码)
- JS API: Fullscreen 全屏 API
- 【VBA】Str与CStr辨析
- 数据库原理与应用~第三版课后习题答案(何玉洁 编著)
- 电脑自带office查看攻略
- 西妥昔单抗丨艾美捷西妥昔单抗Cetuximab方案
- b站黑马Vue2后台管理项目笔记——(3)用户列表
- js如何实现侧边广告_如何用稳定器轻松实现低成本的商业级广告片制作?
- Docker(五)进阶:Docker卷(volumes)
热门文章
- 读《NFCMF: Noise Filtering and CrossModal Fusion for Multimodal Sentiment Analysis》
- 标注图像 创建cnn网络_如何在网络上创建图
- 云服务器安装配置Nodejs(以阿里云为例)
- JMETER计数器用法
- 【STC89C52】学习51单片机的必备电子电路知识基础
- Android 连接蓝牙耳机后视频通话无声音问题
- 运用雅可比(Jacobi)和高斯-赛德尔(GS公式)求解方程组
- 计算机辅助教学系统状况,计算机辅助教学系统组成.pptx
- html中section与div,HTML5中div、section、article的区别
- Yocto系列讲解[实战篇]85 - 制作ubi镜像和自动挂载ubifs文件系统