通过cri-o部署k8s集群环境

news2024/11/28 11:54:57

目录

一.基础环境配置(每个节点都做)

1.hosts解析

2.防火墙和selinux

3.安装基本软件并配置时间同步

4.禁用swap分区

5.更改内核参数

6.配置ipvs

7.k8s下载

(1)配置镜像下载相关软件

(2)配置kubelet上的cgroup

二.下载cri-o包(所有节点做)

1.在线下载

2.本地下载

三.配置文件(所有节点做)

1.修改crio配置文件

2.修改kubelet参数(所有节点做)

3.重启crio和kubelet

四.master节点初始化(master节点做)

五.node节点加入(node节点做)

六.添加网络插件(master节点做)

1.应用calico.yaml

2.查看验证


192.168.2.190master
192.168.2.191node1-191.com
192.168.2.193node2-193.com

一.基础环境配置(每个节点都做)

1.hosts解析

[root@master ~]# tail -3 /etc/hosts
192.168.2.190 master
192.168.2.191 node2-191.com
192.168.2.193 node4-193.com

2.防火墙和selinux

[root@master ~]# systemctl status firewalld.service;getenforce 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
Disabled
#临时
systemctl stop firewalld
setenforce 0
#禁用
systemctl disable firewalld
sed -i '/^SELINUX=/ c SELINUX=disabled' /etc/selinux/config

3.安装基本软件并配置时间同步

[root@master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim chrony
[root@master ~]# vim /etc/chrony.conf
:3,6 s/^/#      #注释掉原有行
server ntp1.aliyun.com iburst
[root@node1-190 ~]# systemctl restart chronyd
[root@node1-190 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 120.25.115.20                 2   8   341   431   -357us[ -771us] +/-   20ms

4.禁用swap分区

[root@master ~]# swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab && free -m
              total        used        free      shared  buff/cache   available
Mem:          10376         943        8875          11         557        9178
Swap:             0           0           0

5.更改内核参数

[root@node1-190 ~]# cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[root@node1-190 ~]# modprobe br_netfilter &&  modprobe overlay && sysctl -p /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

6.配置ipvs

[root@node1-190 ~]# yum install ipset ipvsadm -y
[root@node1-190 ~]# cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
# 为脚本文件添加执行权限并运行,验证是否加载成功
[root@node1-190 ~]# chmod +x /etc/sysconfig/modules/ipvs.modules && /bin/bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4      15053  2 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  7 ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

7.k8s下载

(1)配置镜像下载相关软件

[root@master ~]# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
​
[root@master ~]# yum install -y kubeadm kubelet kubectl 
[root@master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"28", GitVersion:"v1.28.2", GitCommit:"89a4ea3e1e4ddd7f7572286090359983e0387b2f", GitTreeState:"clean", BuildDate:"2023-09-13T09:34:32Z", GoVersion:"go1.20.8", Compiler:"gc", Platform:"linux/amd64"}

(2)配置kubelet上的cgroup

[root@master ~]# cat <<EOF > /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
EOF
[root@master ~]# systemctl start kubelet
[root@master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

二.下载cri-o包(所有节点做)

1.在线下载

[root@master ~]# VERSION=1.25
[root@master ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo
ners:stable:cri-o:${VERSION}.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:${VERSION}/CentOS_7/devel:kubic:libcontainers:stable:cri-o:${VERSION}.repo  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   359  100   359    0     0    293      0  0:00:01  0:00:01 --:--:--   293
[root@master ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:${VERSION}.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:${VERSION}/CentOS_7/devel:kubic:libcontainers:stable:cri-o:${VERSION}.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   425  100   425    0     0    353      0  0:00:01  0:00:01 --:--:--   353
100   426  100   426    0     0    185      0  0:00:02  0:00:02 --:--:--  4840
100   427  100   427    0     0    166      0  0:00:02  0:00:02 --:--:--   166
100   428  100   428    0     0    151      0  0:00:02  0:00:02 --:--:--   151
100   429  100   429    0     0    138      0  0:00:03  0:00:03 --:--:--     0
100   381  100   381    0     0    112      0  0:00:03  0:00:03 --:--:--   112
[root@master ~]# yum install -y cri-o

2.本地下载

链接:百度网盘 请输入提取码 提取码:i7ih

三.配置文件(所有节点做)

1.修改crio配置文件

找到下面两处位置进行修改

[root@master ~]# vim /etc/crio/crio.conf
pause_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"
insecure_registries = ["docker.mirrors.ustc.edu.cn","dockerhub.azk8s.cn","hub-mirror.c.163.com"]

 

2.修改kubelet参数(所有节点做)

将原有的KUBELET_EXTRA_ARGS修改

[root@master ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m"

 

3.重启crio和kubelet

[root@master ~]# systemctl start crio
[root@master ~]# systemctl enable crio
[root@master ~]# systemctl restart crio kubelet

四.master节点初始化(master节点做)

#若初始化失败,使用这个kubeadm reset命令进行重置
[root@master ~]# kubeadm init --kubernetes-version=v1.28.2 --pod-network-cidr=10.224.0.0/16 \
> --apiserver-advertise-address=192.168.2.190 \       #修改为自己master节点的IP
> --service-cidr=10.96.0.0/12 \
> --cri-socket unix:///var/run/crio/crio.sock \
> --image-repository registry.aliyuncs.com/google_containers
......
Your Kubernetes control-plane has initialized successfully!
​
To start using your cluster, you need to run the following as a regular user:
​
  mkdir -p $HOME/.kube         #master上是普通用户操作
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
​
Alternatively, if you are the root user, you can run:
​
  export KUBECONFIG=/etc/kubernetes/admin.conf     #master上是普root用户操作
​
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
​
Then you can join any number of worker nodes by running the following on each as root:
​
kubeadm join 192.168.2.190:6443 --token jxl4ka.4umrziv1a7xf1dpn \
    --discovery-token-ca-cert-hash sha256:6903b8d024842b24fd9c25848df5980d93c42d0fcd7838fdc24ef123c5eba794 
    #node节点使用这行命令加入master

[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf

五.node节点加入(node节点做)

#若加入失败,使用这个kubeadm reset命令进行重置
[root@node2-191 ~]# kubeadm join 192.168.2.190:6443 --token jxl4ka.4umrziv1a7xf1dpn \
> --discovery-token-ca-cert-hash sha256:6903b8d024842b24fd9c25848df5980d93c42d0fcd7838fdc24ef123c5eba794
[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
​
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
​
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
​
[root@master ~]# kubectl get nodes
NAME            STATUS   ROLES           AGE   VERSION
master          Ready    control-plane   36m   v1.28.2
node2-191.com   Ready    <none>          70s   v1.28.2
node4-193.com   Ready    <none>          16s   v1.28.2

六.添加网络插件(master节点做)

1.应用calico.yaml

[root@master ~]# wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml

找到这行增加以下内容

[root@master ~]# vim calico.yaml
- name: IP_AUTODETECTION_METHOD
              value: "interface=ens33"      #ens33处为你的网卡名称
[root@master ~]# kubectl apply -f calico.yaml 

2.查看验证

#等待初始完成即可
[root@master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS     RESTARTS   AGE
kube-system   calico-kube-controllers-658d97c59c-8ww2m   1/1     Running    0          3m43s
kube-system   calico-node-86787                          1/1     Running    0          3m43s
kube-system   calico-node-jgz7g                          1/1     Running    0          3m43s
kube-system   calico-node-lwxg5                          1/1     Running    0          3m43s
kube-system   coredns-66f779496c-9tvjh                   1/1     Running    0          89m
kube-system   coredns-66f779496c-qzqv9                   1/1     Running    0          89m
kube-system   etcd-master                                1/1     Running    0          89m
kube-system   kube-apiserver-master                      1/1     Running    0          89m
kube-system   kube-controller-manager-master             1/1     Running    0          89m
kube-system   kube-proxy-8nf9q                           1/1     Running    0          54m
kube-system   kube-proxy-sczts                           1/1     Running    0          89m
kube-system   kube-proxy-vrms2                           1/1     Running    0          53m
kube-system   kube-scheduler-master                      1/1     Running    0          89m

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

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

相关文章

B站数据分析,UP主粉丝画像如何看?

随着互联网的发展&#xff0c;在大数据时代的今天&#xff0c;越来越多的企业用它们来指导精准营销&#xff0c;数据资源成为各大公司竞相追逐的香饽饽&#xff0c;而对于短视频广告投放来说&#xff0c;了解账号的粉丝人群画像&#xff0c;就可以知道他们的喜好厌恶&#xff0…

GitHub相应太慢

后期使用到github下载源码&#xff0c;会发现响应太慢&#xff0c;本篇文章解决你的问题 获取域名对应的ip 访问链接&#xff1a;https://raw.hellogithub.com/hosts&#xff08;ps&#xff1a;这链接定时更新&#xff09;&#xff0c;获取对应的host配置。 如果需要工具自动…

专注域控制器深挖护城河,知行科技逐渐摆脱“大客户依赖”

两年营收剧增26倍有余&#xff0c;位列中国第二大第三方自动驾驶域控制器提供商&#xff0c;正是因为这基本面的扎实、护城河的深度&#xff0c;知行科技成长的进程才格外受人关注。在9月中上旬通过聆讯后&#xff0c;上市的一环也即将被补上。 而最近公布的信息里&#xff0c…

Arm64体系架构-MPIDR_EL1寄存器

背景 在Arm64多核处理器中, 各核间的关系可能不同. 比如1个16 core的cpu, 每4个core划分为1个cluster,共享L2 cache. 当我们需要从core 0将任务调度出来时,如果优先选择core 1~3, 那么性能明显时优于其他core的. 那么操作系统怎么知道core之间这样的拓扑信息呢? Arm提供了MPID…

敏捷项目管理解锁:2023年使用YouTrack的全面指南

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

20231008工作心得:sql

1.SQL语句里的if的嵌套使用 if(product A and brand_name B,C,if(product A and brand_name !B,D,product)) as product if&#xff08;A,B,C&#xff09;。SQL里if函数&#xff0c;如果条件A成立&#xff0c;就显示B的值&#xff0c;否则就显示C。 这个代码的意思的&#x…

RK3588实用技巧:查看显示器支持的分辨率,基于weston修改分辨率输出

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/133685938 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

数据结构面试常问问题--保研及考研复试

前言&#xff1a; Hello大家好&#xff0c;我是Dream。今年保研上岸山东大学人工智能专业 &#xff08;经验贴&#xff09;&#xff0c;现在将我自己的专业课备考知识点整理出来&#xff0c;分享给大家&#xff0c;希望可以帮助到大家&#xff01;这是重点知识总结&#xff0c;…

mfoc-hardnested项目属性

常规 预处理器 NDEBUG _CONSOLE NOGDI _AMD64_ _CRT_SECURE_NO_WARNINGS CONFFILES DRIVER_ACR122S_ENABLED DRIVER_ACR122_USB_ENABLED DRIVER_ARYGON_ENABLED DRIVER_PN532_UART_ENABLED DRIVER_PN53X_USB_ENABLED ENVVARS HAVE_CONFIG_H LOG u_int16_tuint16_t u_int8_tuin…

解决Playwright无法登录Google账号的问题

文章目录 问题描述解决问题免费登录生成代码问题描述 当使用playwright需要登入google帐号的时候,有可能会出现下面的情况:无法登录,提示浏览器不安全(因为我们是脚本使用) 【Python自学笔记】微软自动化测试工具playwright,微软版selenium解决问题 解决上面这个无法登入…

竞赛 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…

Windows关闭指定端口程序

1.netstat -ano |findstr “4710” 2.查询当前端口PID为8376的进程 tasklist | findstr 8376 3. 选择杀死进程的方式 taskkill /f /t /im "PID or process name " ① taskkill /f /t /im “8376” ② taskkill /f /t /im “node.exe”

MPLS VPN知识点梳理与实战

项目拓扑与项目需求 项目需求&#xff1a;如图所示&#xff0c;某公司拥有总部和分支A、分支B。现在需要实现如下需求 总部和分支通过mpls vpn互联&#xff0c;运营商内部使用RR放射MP-bgp路由&#xff0c;运营商IGP协议选择ospf&#xff0c;企业内部的IGP选择ospf2、分支A和分…

【初识Jmeter】【接口自动化】

jmeter的使用笔记1 Jmeter介绍与下载安装介绍安装配置配置与扩展组件 jmeter的使用基本功能元素登陆请求与提取cookie其他请求接口关联Cookie-响应成功聚合报告查看 Jmeter介绍与下载安装 介绍 jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&…

HTML5使用html2canvas转化为图片,然后再转为base64.

介绍 场景&#xff1a;今天同事提了个协助&#xff0c;将HTML5文件中的元素转为图片&#xff0c;并且最终转为base64格式传给后端。感觉还挺有意思就记录下。&#xff08;试例如下&#xff09; 步骤一&#xff1a;引入html2canvas 的js源码 html2canvas.min.js 下载地址 htt…

民族民俗景区3d智慧旅游系统提升游客旅游体验和质量

随着科技的不断发展&#xff0c;传统的旅游方式正在逐渐被新的技术和系统所取代。网上3D沉浸式旅游体验凭借其身临其境的沉浸式体验优势&#xff0c;正成为旅游业的新宠。 网上3D沉浸式旅游体验是将旅游景区、度假区、休闲街区、科博馆等场所空间&#xff0c;利用VR全景制作、w…

API商品数据接口概述,API商品数据接口的组成

API商品数据接口是一种应用程序接口&#xff0c;用于提供商品数据的服务。它允许开发者通过编写代码来访问和获取商品数据&#xff0c;以便于他们在自己的应用程序中使用。API商品数据接口可以使用各种不同的协议和标准来实现&#xff0c;例如RESTful API、SOAP、XML-RPC等&…

Antv/s2 明细表 透视表实现和性能优化(一)

前言 以我实际项目环境为准&#xff0c;vuets为技术框架&#xff0c;代码如果有什么不懂欢迎留言评论我会回复的 透视表 定义文件 class PivotTableControl extends BaseControl {type pivotTable;label controls.chart.pivotTable;icon tc-color-pivot-table;widget () &…

Linux设备驱动的精髓在哪?为何感觉写驱动就像写八股文?

Linux设备驱动的精髓在哪&#xff1f;为何感觉写驱动就像写八股文&#xff1f; 话题背景&#xff1a;随着互联网尤其是移动互联网的发展&#xff0c;Android手机操作系统得到了广泛应用&#xff0c;而Android系统是基于Linux系统开发的。另外&#xff0c;大数据、云计算等技术也…

7321-2017 定形耐火制品试样制备方法

声明 本文是学习GB-T 7321-2017 定形耐火制品试样制备方法.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了定形耐火制品制样的定义、制样部位的确定原则和试样的制备。 本标准适用于定形耐火制品试样的制备。 2 规范性引用文…