部署k8s 1.28.9版本

   继上篇通过vagrant与virtualBox实现虚拟机的安装。笔者已经将原有的vmware版本的虚拟机卸载掉了。这个场景下,需要重新安装k8s  相关组件。由于之前写的一篇文章本身也没有截图。只有命令。所以趁着现在。写一篇,完整版带截图的步骤。现在行业这么卷。离职了让我能好好的写点东西。

描述:此篇文章只有具体的步骤,组件内部核心控件。以及具体使用方式。并不包含在这篇内容中。如果有需要。小伙伴儿们可以提出来。作为持续的内容更新也是不错的。好了不喜欢看唠叨的同学们。咱们直接开始。上述纯属无聊的废话。


版本:V1.28.9 版本

部署方式:Kubeadm 【单master 多node部署】

下方 master节点 和node节点  都要进行配置 。


  (1) 升级linux内核,由于低版本linux内核有可能引发一些不确定因素 所以笔者在此升级了下linux内核

#查询当前linux内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg# 步骤依次执行即可
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum -y install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpmyum --enablerepo="elrepo-kernel" -y install kernel-lt.x86_64grub2-set-default 0grub2-mkconfig -o /boot/grub2/grub.cfg#重新启动
reboot  #启动后  重新查询linux内核是否变更
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

(2)关闭防火墙状态。

#停止当前防火墙
systemctl  stop     firewalld# 重启后也关闭防火墙 避免自动重启
systemctl  disable  firewalld #检查当前防火墙状态
systemctl   status firewalld

(3)关闭掉swap分区

#关闭当前swap分区
sed  -i   's/.*swap.*/#&/'  /etc/fstab 
swapoff -a

(4)关闭掉 selinux

sed -i 's/enforcing/disabled/'  /etc/selinux/config
setenforce 0

(5)添加host  请修改成自己的maste节点IP和workNode节点IP

echo "192.168.18.219 master \
192.168.18.220 node01
192.168.18.221 node02"  >> /etc/hosts

(6)添加hostname 同时让hostname 生效

#替换成自己的主机名称 也可以按照上述内容 master  node01  node02 配置
hostnamectl  set-hostname   主机名称# 查询当前hostname
hostname#使hstname生效
systemctl restart NetworkManager

(7)安装时间同步插件 保证三台机器时钟都是同步的

yum install chrony -y
systemctl start chronyd && systemctl enable chronyd && chronyc sources
date

(8)添加路由转发

# 内核路由转发  以及网桥过滤
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.swappiness=0
EOF

(9)使路由转发生效

sysctl --system

(10)  安装ipset

# 安装ipset
yum -y install ipset ipvsadm

(11)  加载ipvs

# 加载
cat > /etc/sysconfig/modules/ipvs.modules << EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

(12) 给ipvs 赋予权限

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

(13)安装docker 请直接按照步骤来

#如果 之前安装过docker 可以按照此步骤先进行卸载操作 如果首次安装 不需要第一步
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine#安装 yum-utils
yum install -y yum-utilsyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo#上述如果地址添加失败可以通过下述地址下载
yum-config-manager  --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin#查看当前docker  版本
docker -v#开机自启动 docker 
systemctl enable docker.service
systemctl enable containerd.service#启动 docker 
systemctl  start docker  &&  systemctl  status docker 

(14)  添加docker  镜像地址

cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://dockerhub.azk8s.cn",
"http://hub-mirror.c.163.com"
]
}
EOF

(15) 安装wget 为了安装 cri-docker cri-docker 因为k8s新版本是基于container.io实现的 所以需要

下载 cri-docker ,请注意 下述命令中的 $MAINPID  执行过程中有可能会丢失。 请手动 补充到位置

#安装wget 为了下载cri-docker 由于k8s  新版本是基于 container.io  所以可以通过cri-docker 适#配
yum  install wget  #下载 cri-docker 
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.8/cri-dockerd-0.3.8.amd64.tgz#解压当前 tar包  默认下载当前目录  
tar xf cri-dockerd-0.3.8.amd64.tgz#将解压内容 移动到 /usr/bin
mv cri-dockerd/cri-dockerd  /usr/bin/#创建cri-docker.service 文件
cat > /usr/lib/systemd/system/cri-docker.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
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint fd:// 
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#上述中的  $MAINPID   有可能会丢失 如果丢失 请执行如下代码 添加上 $MAINPID   
vim  /usr/lib/systemd/system/cri-docker.service   

(16) 添加cri-docker.socket  

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

(17)  修改了 systemd 的相关配置 所以需要让其生效

# 对cri-docker 的配置让其生效
systemctl daemon-reload #开机自启动  启动cri-docker  同时查看状态
systemctl enable cri-docker && systemctl start cri-docker && systemctl status cri-docker

(18)  添加k8s镜像地址

# 添加k8s镜像源地址
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF

(19) 前期准备工作已经做好 那么 安装 kubeadm   kubelet   kubectl 同时启动kubelet 设置开机自启动 同时查看状态  现在的kubelet还是启动失败的  请不要慌张 

#安装  kuebadm   kubelet   kubectl
yum install -y kubelet kubeadm kubectl#启动kubelet 并设置开机自启动
systemctl enable kubelet && systemctl start kubelet && systemctl status kubelet

(20)  配置cgroup  和docker 保持一致

# 配置 cgroup 驱动与docker一致
cp /etc/sysconfig/kubelet{,.bak}cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF#安装自动补全 工具
yum install  -y bash-completion  

(21) 用户bash目录  添加kubectl 变量

source /usr/share/bash-completion/bash_completionecho "source <(kubectl completion bash)" >> ~/.bashrcsource  ~/.bashrc  

(22) 查看 kubeadm 镜像

查看镜像仓库是否有相关镜像
kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

(23)拉取相关镜像                

kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock

 上述为 master节点 和node节点  都要进行配置 下述  将分开说明 master  和  node 的配置


下方配置请注意  一部分是master 需要配置的  一部分是node需要配置的

Master配置


# master节点运行  启动master节点相关组件及容器【master】
kubeadm init \
--apiserver-advertise-address 192.168.31.219 \
--kubernetes-version v1.28.11 \
--pod-network-cidr=10.244.0.0/16 \
--image-repository registry.aliyuncs.com/google_containers \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--ignore-preflight-errors=all#上述配置中的   
api-server-address 代表的是主节点的ip地址
kubernetes-version 代表的是k8s组件版本 
pod-network-cidr   代表内部的区分流量
image-repository    镜像仓库地址
cri-socket          指定cri-docker的 地址

(master)上述执行成功后 会提示执行相关命令

# 创建kubeconfig master启动完成后也会提示此命令【master】
mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config

(master) 创建自有证书 生成内容 在node节点是有用的  请一定要记住 下方已经标注出来了,一个是token  一个是生成的 有效的sha256的值

# 创建相关kubeadm token 【master】生成的值 在node节点中是需要的请记住
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'# 使用我们自己生成的证书  在子节点进行join时需要token  以及sha【masert】
kubeadm token create --ttl 0  --print-join-command# 查看是否已经创建成功证书 在node节点join要用到 【master】

master  下载网络插件  还记着前边笔者说过的 kubelet还没起来的问题吗 ,当把cin插件下载完成后 kubelet就会恢复正常

修改相关配置 calico.yml文件中相关配置CALICO_IPV4POOL_CIDR 改成admin init中  --pod-network-cidr 参数相同,但是由于现在的dokerhub无法下载镜像,通过阿里云下载相关镜像还无法找到对应的版本的网络代理插件。那么笔者喜欢让大家白嫖。压缩包会同步出来。这样你们就不用科学上网去自己寻找了。如果按照笔者的配置就不需要修改上述的CALICO_IPV4POOL_CIDR。

请将所有tar  包  执行  docker load   添加到master  镜像中  然后   通过kubectl  执行

wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/calico.yam# 如果下载失败  请把使用笔者给的安装包的内容
kubectl  apply -f  calico.yamll

Node节点


将node节点添加到 master中去


#在node节点执行  加入到主节点
kubeadm join 192.168.31.219:6443  --token  juw32i.1cb4jrcr4fm8scvy  --discovery-token-ca-cert-hash sha256:5be9defe9be83e5b50b51490009b8bb8a22a7bf9b9d71c6176cca81581d98fba  --cri-socket=unix:///var/run/cri-dockerd.sock#解释
token   是在主节点生成的  上述标黄的内容
sha256:  自己生成的值   也在上述标黄的内容中  

最终  可以在master  查看   节点状态  如果显示ready 那么就是正常启动的

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyMongo Sort 操作:提升你的数据查询效率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

极狐Gitlab使用(2)

目录 1. Gitlab命令行修改管理员密码 2. Gitlab服务管理 3. 公司的开发代码提交处理流程 4. Gitlab 备份与恢复 数据备份 测试数据恢复 5. 邮箱配置 1. Gitlab命令行修改管理员密码 [roottty01 ~]# gitlab-rails console -e production # 启动GitLab的Rails控制…

notepad++中文出现异体汉字,怎么改正

notepad显示异体字&#xff0c;如何恢复&#xff1f; 比如 “门” 和 “直接” 的"直"字&#xff0c;显示成了 方法 修改字体&#xff0c; 菜单栏选择 Settings(设置&#xff09;&#xff0c;Style Configurator…&#xff08;语言格式设置…&#xff09;&#xf…

css - - - - - 去除图片默认的白色背景(混合模式 mix-blend-mode)

去除图片默认的白色背景&#xff08;mix-blend-mode&#xff09; 1. 需求描述2. 原图展示3. 原代码展示4. 使用混合模式(mix-blend-mode)5.修改后效果 1. 需求描述 图片含有白色地图&#xff0c;想要将其去掉 2. 原图展示 3. 原代码展示 <div><img src*****/> &…

最新版康泰克完整版- Kontakt v7.10.5 for Win和Mac,支持m芯片和intel,有入库工具

一。世界最受欢迎的采样器的新篇章 Native Instruments Kontakt是采样器领域的标准&#xff0c;您将获得高质量的滤波器&#xff0c;在这里您将找到经典的模拟电路和最现代的滤波器。每一个都可以根据您的口味进行定制&#xff0c;并且由于它&#xff0c;您可以获得前所未有的声…

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件&#xff1a;sonarQube不能使用root账号进行启动&#xff0c;所以需要创建普通用户及 其用户组 1&#xff09;创建组 2&#xff09;添加用户、组名、密码 3&#xff09;CMD上传qube文件-不能传到home路径下哦 4&#xff09…

设计模式的七大原则

1.单一职责原则 单一职责原则(Single responsibility principle)&#xff0c;即一个类应该只负责一项职责。如类A负责两个不同职责&#xff1a;职责1&#xff0c;职责2。当职责1需求变更而改变A时&#xff0c;可能造成职责2执行错误&#xff0c;所以需要将类A的粒度分解为A1、…

Mac系统能装虚拟机吗 Mac装双系统虚拟机详细教程 macos可以用虚拟机装windows吗

随着科技的进步和用户需求的多样化&#xff0c;越来越多的用户希望在一台设备上运行多个操作系统。特别是对于Mac用户来说&#xff0c;安装虚拟机或者双系统已成为常见需求。这不仅可以满足用户在不同操作系统工作的需求&#xff0c;也可以让开发人员在不同的操作系统上进行测试…

基于 jenkins 部署接口自动化测试项目!

引言 在现代软件开发过程中&#xff0c;自动化测试是保证代码质量的关键环节。通过自动化测试&#xff0c;可以快速发现和修复代码中的问题&#xff0c;从而提高开发效率和产品质量。而 Jenkins 作为一款开源的持续集成工具&#xff0c;可以帮助我们实现自动化测试的自动化部署…

电脑远程开关机

1. 远程开机 参考&#xff1a;https://post.smzdm.com/p/664774/ 1.1 Wake On LAN - 局域网唤醒&#xff08;需要主板支持&#xff0c;一般都支持&#xff09; 要使用远程唤醒&#xff0c;有几种方式&#xff1a;使用类似向日葵开机棒&#xff08;很贵&#xff09;、公网ip&…

嵌入式全栈设计思路:STM32G4+ChibiOS+FreeRTOS+PID控制+PFC算法构建高效智能电源管理系统(附代码示例)

智能电源管理系统是一个基于STM32G4微控制器的高性能数字电源控制解决方案。本项目旨在设计一个功能全面、高效稳定的电源管理系统,可广泛应用于工业控制、新能源、通信设备等领域。 1.1 系统主要特点 高精度数字电源控制&#xff1a;利用STM32G4的高性能ADC和定时器,实现精确…

C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)

方案一&#xff1a;移除这些失效的引用&#xff0c;下载对应版本的dll&#xff0c;重新添加引用 方案二&#xff1a;项目右键属性-调整目标框架版本&#xff08;一般是降低版本&#xff09; 方案三&#xff1a;调整编译顺序&#xff1a; 项目A&#xff1a;引用1、引用2 &…

基于Java的斗地主游戏案例开发(做牌、洗牌、发牌、看牌

package Game;import java.util.ArrayList; import java.util.Collections;public class PokerGame01 {//牌盒//♥3 ♣3static ArrayList<String> list new ArrayList<>();//静态代码块//特点&#xff1a;随着类的加载而在加载的&#xff0c;而且只执行一次。stat…

mysql-connector-java 8.0.33 反序列化漏洞

前言 经过与oracle官方沟通&#xff0c;在最新的mysql-connector-j 9.0.0里不存在这个问题&#xff0c;所以他们不认为这是个漏洞 不过确实&#xff0c;mysql-connector-java这个分支已经迁移到mysql-connector-j了&#xff0c;当时没注意&#xff0c;交的时候只注意了mysql-c…

新版本 idea 创建不了 spring boot 2 【没有jkd8选项】

创建新项目 将地址换成如下 https://start.aliyun.com/

C语言课程回顾:十、C语言之 指针

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 C语言之 指针 10 指针10.1 地址指针的基本概念10.2 变量的指针和指向变量的指针变量10.2.1 定义一个指针变量10.2.2 指针变量的引用10.2.3 指针变量作为函数参数10.2.4 指针变…

Elasticsearch集群搭建

集群概念 在单台 ES 服务器上&#xff0c;随着一个索引内数据的增多&#xff0c;会产生存储、效 率、安全等问题。 因此引入集群 我们需要将索引拆分成多份&#xff0c;分别放入不同的服务器中&#xff0c;此时这几台服务器维护了同一个索引&#xff0c;我们称这几台服务器为一…

每日一练@

目录 题目1.关于AOP错误的是&#xff1f;2.关于以下代码的说明&#xff0c;正确的是&#xff08; &#xff09;3.以下类型为Final类型的为&#xff08;&#xff09;4.以下说法哪个是正确的&#xff08;&#xff09; 题目 选自牛客网 1.关于AOP错误的是&#xff1f; A.AOP将散…

C++的缺省参数、函数重载和引用

缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时&#xff0c;如果没有指定实参 则采⽤该形参的缺省值&#xff0c;否则使⽤指定的实参&#xff0c;缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)&#xff0c;要注意的是…

2.The DispatcherServlet

The DispatcherServlet Spring的Web MVC框架与许多其他Web MVC框架一样&#xff0c;是请求驱动的&#xff0c;围绕一个中央Servlet&#xff08;即DispatcherServlet&#xff09;设计&#xff0c;该Servlet将请求分派给控制器&#xff0c;并提供其他功能以促进Web应用程序的开发…