当前位置: 首页 > news >正文

rockeylinux 搭建k8s 1.28.10

1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld


2.关闭selinux
# 临时禁用selinux
# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config


3.网路配置
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
 执行 sysctl --system 使生效
 


 4.关闭swap
 # 禁用交换分区
swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行
sed -i 's/.*swap.*/#&/' /etc/fstab

5.配置host文件
master节点
hostnamectl set-hostname master
node节点
hostnamectl set-hostname node01
hostnamectl set-hostname node02

执行 hostname 查看是否成功

6.安装iptables
yum install iptables

7.安装 kubeadm kubectl kubelet

由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装

yum install -y --nogpgcheck kubeadm
设置 kubelet 开机自启
systemctl enable kubelet

8.安装docker
编译安装 docker-19.03.15.tgz
tar -xf docker-19.03.15.tgz
cp docker/* /usr/bin

vim /etc/systemd/system/docker.service
复制下面内容

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
# BindsTo=containerd.service
# After=network-online.target firewalld.service containerd.service
After=network-online.target firewalld.service
Wants=network-online.target
# Requires=docker.socket

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3

# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not support it.
# Only systemd 226 and above support this option.
# TasksMax=infinity

# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes

# kill only the docker process, not all processes in the cgroup
KillMode=process

[Install]
WantedBy=multi-user.target

创建docker文件夹
mkdir /etc/docker
编辑daemon.json文件,主从节点都需要执行此步骤
vi /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload  #重载unit配置文件
systemctl start docker  #启动Docker
systemctl enable docker  #设置开机自启
systemctl status docker  #查看docker状态

9.安装 cri-dockerd

下载 cri-dockerd-0.3.14.amd64.tgz
tar -xf cri-dockerd-0.3.14.amd64.tgz
cp cri-dockerd/cri-dockerd /usr/local/bin/

cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
 
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

 cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

启动服务
设置服务开机自启动
systemctl daemon-reload
systemctl enable --now cri-dockerd.service


10.准备k8s其它相关镜像

查看需要的镜像,执行命令

kubeadm config images list

registry.k8s.io/kube-apiserver:v1.28.10
registry.k8s.io/kube-controller-manager:v1.28.10
registry.k8s.io/kube-scheduler:v1.28.10
registry.k8s.io/kube-proxy:v1.28.10
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.12-0
registry.k8s.io/coredns/coredns:v1.10.1

修改成国内的镜像源,拉取镜像

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

修改镜像的tag

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.10 kubernetes-register.openlab.cn/google_containers/kube-apiserver:v1.28.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.28.10 kubernetes-register.openlab.cn/google_containers/kube-controller-manager:v1.28.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.28.10 kubernetes-register.openlab.cn/google_containers/kube-scheduler:v1.28.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.28.10 kubernetes-register.openlab.cn/google_containers/kube-proxy:v1.28.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 kubernetes-register.openlab.cn/google_containers/pause:3.9
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.12-0 kubernetes-register.openlab.cn/google_containers/etcd:3.5.12-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1 kubernetes-register.openlab.cn/google_containers/coredns:v1.10.1

注意:上面拉取镜像和给镜像打tag 最好也取node节点上执行一遍,因为k8s自己调度之后,不一定给你部署到哪个节点上,到时候就出出现 镜像拉取失败的问题,当然不执行也没啥问题,等出现镜像拉取失败的问题,到对应node节点上在执行也行,多折腾几次就行了。 

11.初始化集群

kubeadm init --kubernetes-version=1.28.10 \
--apiserver-advertise-address=192.168.2.74 \ --修改成自己的ip
--image-repository kubernetes-register.openlab.cn/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/cri-dockerd.sock 

出现以上的日志,代表执行成功了,在根据日志提示,执行对应的命令

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

12. 到其他node节点上执行日志提示的,kubeadm join xxxx命令

13.安装网络组件flannel

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

sed -i 's|quay.io/coreos/flannel|registry.cn-hangzhou.aliyuncs.com/acs/flannel:v0.14.0|g' kube-flannel.yml

kubectl apply -f  kube-flannel.yml

至此,k8s部署成功

14.注意如果中间出现pod状态不对的,执行kubectl describe pod xx查看对应的信息 

出现截图上的错误

Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown

参考下面的链接解决Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 探索Python编程乐趣:制作气泡反弹小游戏
  • 将C++ cv:mat 通过JNI 转换为jbtyearray,传到android端
  • Java中深拷贝和浅拷贝详解学习
  • D2Admin:企业中后台产品前端集成方案的探索与实践
  • adb 启动app并查看启动时间
  • 如何本地 Debug React 源码
  • 算法工程师需要学习C++的哪些知识?
  • Scala编程基础3 数组、映射、元组、集合
  • 社情民意调查主题和领域
  • XS2185一款八通道以太网供电控制器
  • 使用Spring Boot编写的小项目
  • 用例设计需遵循哪些规范标准?
  • FilterRegistrationBean
  • 条款9:利用destructors避免泄露资源
  • 上周暗网0day售卖情报一览
  • css属性的继承、初识值、计算值、当前值、应用值
  • golang 发送GET和POST示例
  • PAT A1017 优先队列
  • python 学习笔记 - Queue Pipes,进程间通讯
  • python 装饰器(一)
  • spring-boot List转Page
  • Windows Containers 大冒险: 容器网络
  • 从输入URL到页面加载发生了什么
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端技术周刊 2019-02-11 Serverless
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 学习HTTP相关知识笔记
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • ​MySQL主从复制一致性检测
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 数论-逆元
  • #QT(智能家居界面-界面切换)
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (26)4.7 字符函数和字符串函数
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (五)c52学习之旅-静态数码管
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)3D模板阴影原理
  • ***原理与防范
  • ./和../以及/和~之间的区别
  • .gitignore不生效的解决方案
  • .NET 4.0中的泛型协变和反变
  • .NET C#版本和.NET版本以及VS版本的对应关系