kubeadm部署k8s v1.28

news2025/3/15 1:04:20

一、主机准备

主机硬件配置说明

作用IP地址操作系统配置
k8s-master01192.168.136.55openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘
k8s-node01192.168.136.56openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘
k8s-node02192.168.136.57openEuler-22.03-LTS-SP12颗CPU 4G内存 50G硬盘
 1、配置主机名和IP
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
2、配置hosts解析
# cat >> /etc/hosts << EOF
192.168.136.55 k8s-master01
192.168.136.56 k8s-node01
192.168.136.57 k8s-node02
EOF
3、配置免密登录,只在k8s-master01上操作
[root@k8s-master01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q

# 点拷贝秘钥到其他 2 台节点
[root@k8s-master01 ~]# ssh-copy-id k8s-node01
[root@k8s-master01 ~]# ssh-copy-id k8s-node02
4、防火墙和SELinux
systemctl disable firewalld
systemctl stop firewalld
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
5、时间同步配置
dnf install -y chrony
systemctl restart chronyd
systemctl enable chronyd
6、配置内核转发及网桥过滤
添加网桥过滤及内核转发配置文件
# cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF

加载br_netfilter模块
# modprobe br_netfilter

查看是否加载
# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter

使用新添加配置文件生效
# sysctl -p /etc/sysctl.d/k8s.conf
7、启用ipvs
三台机器
cat > /etc/sysconfig/modules/ipvs.modules <<END
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}
do
  /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
  if [ 0 -eq 0 ]
  then
    /sbin/modprobe ${kernel_module}
  fi
done
END
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
8、关闭swap
临时关闭
# swapoff -a

永远关闭swap分区
sed -i 's/.*swap.*/#&/' /etc/fstab

二、容器运行时工具安装及运行

1、安装docker

1、下载官方repo
cd /etc/yum.repos.d/
curl -O https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's/$releasever/8/g' docker-ce.repo
2. 安装docker
yum install -y docker-ce

# 设置国内镜像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}
EOF

设置docker开机启动并启动
# systemctl enable --now docker


查看docker版本
# docker version

# 所有节点执行以下命令,将 docker 的 CgroupDriver 改成 systemd,在/etc/docker/daemon.json 中添加配置:

{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [
        "https://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://ccr.ccs.tencentyun.com"
    ]
}

# 所有节点执行以下命令,重启 docker:
systemctl daemon-reload
systemctl restart docker

 因为k8s 1.25以后版本默认装的是containerd,所以还要安装cri-dockerd

2、安装cri-dockerd

1. 下载最新版cri-dockerd rpm包

网络条件好的话直接使用wget下载,网络条件一般的话可以在github上面先下载再上传到虚拟机

下载地址:Releases · Mirantis/cri-dockerd (github.com)。

https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el8.x86_64.rpm

2、安装cri-docker
# wget -c http://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el8.x86_64.rpm
# yum install cri-dockerd-0.3.4-3.el8.x86_64.rpm
3、启动cri-docker服务
systemctl enable cri-docker
4、cri-dockerd设置国内镜像加速
$ vi /usr/lib/systemd/system/cri-docker.service # 找到第10行ExecStart= 
# 修改为ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
# 重启Docker组件
$ systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker 
# 检查Docker组件状态
$ systemctl status docker cir-docker.socket cri-docker

三、K8S软件安装

1、配置kubernetes源
# 此操作会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
#exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

2、安装kubelet、kubeadm、kubectl、kubernetes-cni
yum install -y kubelet kubeadm kubectl kubernetes-cni
systemctl enable kubelet.service

四、K8S集群初始化

只在master01节点上操作
创建初始化文件 kubeadm-init.yaml

[root@k8s-master01 ~]#  kubeadm config print init-defaults > kubeadm-init.yaml

修改如下配置:

- advertiseAddress:为控制平面地址,( Master 主机 IP )
    advertiseAddress: 1.2.3.4
修改为 advertiseAddress: 192.168.136.55
- criSocket:为 containerd 的 socket 文件地址
    criSocket: unix:///var/run/containerd/containerd.sock
修改为 criSocket: unix:///var/run/cri-dockerd.sock
- name: node 修改node为 k8s-master01
    name: node
修改为 name: k8s-master01
高可用才添加下面的
clusterName下面添加 VIP和端口
controlPlaneEndpoint: 192.168.136.50:16443

- imageRepository:阿里云镜像代理地址,否则拉取镜像会失败
    imageRepository: registry.k8s.io
修改为:imageRepository: registry.aliyuncs.com/google_containers
- kubernetesVersion:为 k8s 版本
    kubernetesVersion: 1.28.0
修改为:kubernetesVersion: 1.28.9
注意:一定要配置镜像代理,否则会由于防火墙问题导致集群安装失败
文件末尾增加启用ipvs功能
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

# 根据配置文件启动 kubeadm 初始化 k8s
$ kubeadm init --config=kubeadm-init.yaml --upload-certs --v=6

注意:这里可能会报错

    [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
error execution phase preflight

解决:

[root@k8s-master01 ~]# sysctl -w net.ipv4.ip_forward=1

此页面  成功

[root@k8s-master01 ~]#  mkdir -p $HOME/.kube
[root@k8s-master01 ~]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master01 ~]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS     ROLES           AGE     VERSION
k8s-master01   NotReady   control-plane   3m48s   v1.28.9

五、K8S集群工作节点加入

 一定要加上 --cri-socket unix:///var/run/cri-dockerd.sock

[root@k8s-node01 ~]# kubeadm join 192.168.136.55:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:6f28419e1b194870cdae7a25803752d968eac71a96dcda865b1e5fbe267396df --cri-socket unix:///var/run/cri-dockerd.sock

六、K8S集群网络插件使用

# 只在master01上操作
[root@k8s-master01 ~]# curl -O https://docs.projectcalico.org/archive/v3.23/manifests/calico.yaml
[root@k8s-master01 ~]# kubectl create -f calico.yaml
[root@k8s-master01 ~]# kubectl get pod -n kube-system 
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-7cb4fd5784-7l5cs   1/1     Running   0          8m3s
calico-node-k5m7x                          1/1     Running   0          8m3s
calico-node-mjjzs                          1/1     Running   0          8m3s
calico-node-pzskl                          1/1     Running   0          8m3s
coredns-66f779496c-767wf                   1/1     Running   0          27m
coredns-66f779496c-ltw5p                   1/1     Running   0          27m
etcd-k8s-master01                          1/1     Running   0          27m
kube-apiserver-k8s-master01                1/1     Running   0          27m
kube-controller-manager-k8s-master01       1/1     Running   0          27m
kube-proxy-hmxvm                           1/1     Running   0          24m
kube-proxy-htgbt                           1/1     Running   0          24m
kube-proxy-tbm7d                           1/1     Running   0          27m
kube-scheduler-k8s-master01                1/1     Running   0          27m

部署成功 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows 11上自带时间管理-番茄工作法

在 Windows 11 中&#xff0c;你可以使用 专注 功能来最大程度地减少干扰&#xff0c;帮助你保持专注。 专注的工作原理 专注时段打开后&#xff0c;将会出现以下情况&#xff1a; 专注计时器将显示在屏幕上 请勿打扰将打开 任务栏中的应用不会闪烁发出提醒 任务栏中应用的…

MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ MySQL 8.4.0 LTS 已经发布 &#xff0c;作为发版模型变更后的第一个长期支持版本&#xff0c;注定要承担未来生产环境的重任&#xff0c;那么这个版本都有哪些新特性、变更&#xff0c;接下来少…

UIKit之猜图器Demo

需求 实现猜图器Demo 功能分解&#xff1a; 1>下一题切换功能 2>点击图片后能放大并背景变暗&#xff08;本质是透明度的变化&#xff09;。再次点击则缩小&#xff0c;删除暗色背景。 3> 答案区按钮点击则文字消失&#xff0c;选择区对应文字恢复。 4> 选择区…

python爬虫登录到海康相机管理页面

简述 1.最近接到个任务是在管理页面更改相机的某个参数&#xff0c;下载官方的sdk貌似没有提供这个接口&#xff0c;所以只能自己写爬虫登录发请求了。 1.主要步骤 1.1 发送get请求获取到salt&#xff0c;sessionID&#xff0c;challenge等信息 http://admin:123456192.168.…

将 MOV 转换为 MP4 的 10 个最佳工具

在当今的数字时代&#xff0c;内容创作和消费正处于巅峰&#xff0c;对多功能和兼容媒体格式的需求从未如此之高。在众多可用的视频格式中&#xff0c;MOV 和 MP4 因其在各种设备和平台中的广泛使用而脱颖而出。然而&#xff0c;将 MOV 文件转换为更通用兼容的 MP4 格式的需求已…

OZON的物流有哪些,OZON物流Unitrade

随着跨境电商的快速发展&#xff0c;OZON作为俄罗斯领先的电商平台&#xff0c;其物流服务的重要性不言而喻。对于卖家而言&#xff0c;选择合适的物流合作伙伴&#xff0c;不仅关乎商品的运输效率&#xff0c;更直接关系到店铺的口碑和消费者的购物体验。本文将带您深入了解OZ…

傲软抠图一款专为抠图打造的AI智能抠图应用,智能识别人物物体抠图软件,无广vip版 v1.8.1

软件介绍 傲软抠图&#xff0c;作为一款高度专业化的智能人工智能图片处理软件&#xff0c;被设计专门用于执行精确的图像提取功能。该程序利用其先进的算法能动地识别和分辨图像中的人物或物体轮廓&#xff0c;并能够从原始图片材料中分离出带有透明背景的目标图像。除了自动…

容器化:ES和Kibana

1 缘起 最近在学习使用ES&#xff0c; 为了找一个功能强大的可视化工具&#xff0c;之前使用了ES-Head&#xff0c;可以满足学习需求。 闲暇时间又折腾了另一个工具Kibana&#xff0c; 分享如下。 Kibana优点&#xff1a; 用户友好性&#xff1a;Kibana提供直观易用的用户界面…

IC卡水表抄表是什么?什么叫IC卡水表抄表?

一、什么叫IC卡水表抄表 IC卡水表抄表是一种现代化水资源管理方法&#xff0c;主要是通过集成智能IC卡科技的水表开展计量检定和传送数据。用户在预付模式中&#xff0c;根据IC卡在线充值后再用&#xff0c;用水量会自动保存在卡上&#xff0c;大大提高了抄表效率精确性。 二…

机器学习预测-CNN手写字识别

介绍 这段代码是使用PyTorch实现的卷积神经网络&#xff08;CNN&#xff09;&#xff0c;用于在MNIST数据集上进行图像分类。让我一步步解释&#xff1a; 导入库&#xff1a;代码导入了必要的库&#xff0c;包括PyTorch&#xff08;torch&#xff09;、神经网络模块&#xff0…

STM32H743的FDCAN使用方法(1):STM32CubeMX初始化代码生成

0 工具准备 1.STM32CubeMX1 前言 本文介绍基于STM32CubeMX&#xff0c;使用stm32h743xi的对FDCAN2进行配置的方法。 2 初始化代码生成 2.1 选择FDCAN引脚 本例选择PB5、PB6作为FDCAN2的RX、TX引脚。 2.2 选择FDCAN时钟源 本例选择PLL2Q作为FDCAN时钟源&#xff0c;频率…

Redis(1)-Jedis连接配置

问题 阿里云安装并启用Redis后&#xff0c;尝试在本地用Jedis调用&#xff0c;发现报错 public class Jedis01 {Testpublic void connect(){Jedis jedis new Jedis("101.37.31.211", 6379); // 公网ipjedis.auth("123"); // 密码String ping jedis.pin…

可转债日内自动T+0交易,行情推送+策略触发+交易接口

说明 目前这个项目已编译打包,下载即可测试,直接生成多平台可执行文件&#xff0c;详见运行方法。行情部分与策略弱相关&#xff0c;拆分解耦单独作为一个项目。行情项目请移步GitHub - freevolunteer/hangqing: A股行情订阅工具&#xff0c;支持股票/可转债level2/level2数据&…

Golang实现递归复制文件夹

代码 package zdpgo_fileimport ("errors""os""path/filepath""strings" )// CopyDir 复制文件夹 // param srcPath 源文件夹 // param desPath 目标文件夹 // return error 错误信息 func CopyDir(srcPath, desPath string) error {…

机器学习第十次课

前言 因为考了一次试,所以没讲太多新东西,唯一的问题是有的知识刚讲完就考了,导致我爆了...... 正文 主要讲的就是一个贝叶斯分类模型,这是属于生成式的分类器了 Bayesian decision theory 我的理解是贝叶斯公式则是利用条件概率和全概率公式计算后验概率,就这么简单 但是…

智慧农业可视化大屏,当个农民是不是小伙伴的梦想。

智慧农业可视化大屏是指通过数据可视化技术&#xff0c;将农业生产过程中的各种数据、指标和信息以图表、图像等形式展示在大屏上&#xff0c;以便农业从业者能够直观地了解农田、作物、气象、设备等方面的情况&#xff0c;从而进行农业生产的监控、管理和决策。以下是智慧农业…

怎么快速批量导出文本二维码?文件批量生码的方法和步骤

随着互联网的快速发展&#xff0c;二维码的应用也越来越广泛&#xff0c;现在很多二维码会用来展示物品信息&#xff0c;将编辑好的文字内容生成二维码之后&#xff0c;让其他人通过扫码的方式来获取相关内容。那么当有多条信息时&#xff0c;有什么方法能够一次批量生成二维码…

PHP质量工具系列之php_CodeSniffer

PHP_CodeSniffer 是一组两个 PHP 脚本&#xff1a;主脚本 phpcs 对 PHP、JavaScript 和 CSS 文件进行标记&#xff0c;以检测是否违反定义的编码标准&#xff1b;第二个脚本 phpcbf 自动纠正违反编码标准的行为。PHP_CodeSniffer 是一个重要的开发工具&#xff0c;可以确保你的…

04Django项目基本运行逻辑及模板资源套用

对应视频链接点击直达 Django项目用户管理及模板资源 对应视频链接点击直达1.基本运行逻辑Django的基本运行路线&#xff1a;视图views.py中的 纯操作、数据返回、页面渲染 2.模版套用1.寻找一个好的模版2.模板部署--修改适配联动 OVER&#xff0c;不会有人不会吧不会的加Q1394…

AI大模型到底能帮我干什么?

这周百度文心一言大模型正式发布了&#xff0c;不少网民拿着各种段子搞笑和玩梗。我在的其中某个微信群里&#xff0c;一位老兄针对当下的大模型&#xff0c;发出来如下的问题&#xff1a; 大家这么玩梗真没意思 我一直没弄明白这些大模型怎么帮助我工作 这个问题有一定的代表性…