kubenetes手动安装V1.22.4

news2024/11/26 16:42:10

kubenetes手动安装V1.22.4

1、主节点和工作节点需要的组件

提示:为了方便测试请关闭selinux、关闭防火墙、swap.

SELinux防火墙的设置:

[root@localhost]#getenforce
Disabled
# 修改/etc/selinux/config文件
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled

Firewalld防火墙的设置:

1、firewalld的基本使用:

启动:systemctl start firewalld
关闭:systemctl stop firewalld
查看状态:systemctl status firewalld
开机禁用:systemctl disable firewalld
开机启用:systemctlenabl e firewalld

2、firewall-cmd的基本使用:

# 那怎么开启一个端口呢:
firewall-cmd --zone=public --add-port=80/tcp --permanent (-permanent永久生效,没有此参数重启后失效)
# 重新载入:
firewall-cmd --reload	# 修改firewall-cmd配置后必须重启
# 查看:
firewall-cmd --zone=public --query-port=80/tcp
# 删除:
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 查看所有打开的端口:
firewall-cmd --zone=public --list-ports

关闭swap:

kubelet不是为处理swap情况而设计的,Kubernetes团队不打算实现这一点,因为目标是pod应该适合主机的内存。

提示:production deployments should disable swap unless testing the NodeSwap feature gate of thekubelet

sudo swapoff -a

永久关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab

更多为什么要关闭swap以及防火墙参考

http://bbs.itying.com/topic/63eb43fe5d86c70e8cfe1108

设置服务器时间为最新时间

yum install ntpdate -y
# 设置时区
timedatectl set-timezone Asia/Shanghai 
ntpdate ntp1.aliyun.com

2、主节点和工作节点需要的组件

主节点需要组件

  • docker(也可以是其他容器运行时)
  • kubectl集群命令行交互工具
  • kubeadm集群初始化工具

工作节点需要组件文档

  • docker(也可以是其他容器运行时)
  • kubelet管理Pod和容器,确保他们健康稳定运行
  • kube-proxy网络代理,负责网络相关的工作

3、配置主机hostname每个节点分别设置对应主机名

方法1:如果只是修改hostnamei可以通过如下命令

hostname newHostname
# 或者
hostnamectl set-hostname master

注意:这种修改方式只有当前有效,等服务器重启后hostname就会失效,回到原来的hostname

方法2:永久修改,重启后生效

vim /etc/hostname

方法3:每个节点配置hostname(推荐)

hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2

4、所有节点都修改hosts

vim /etc/hosts

这里需要注意改成自己的结点IP

192.168.40.128 master
192.168.40.129 node1
192.168.40.130 node2

5添加安装源(所有节点)

#添加k8s安装源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
pgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

cat /etc/yum.repos.d/kubernetes.repo

#添加Docker安装源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6、安装所需组件(所有节点)

yum remove docker-ce docker-ce-cli containerd.io -y
yum install kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce-20.10.0 docker-ce-cli-20.10.0 -y

提示:Kubernetes自v1.24移除了对docker-shim的支持,而Docker Engine默认又不支持CRl规范,因而二者将无法直接完成整合。为此,Mirantis和Docker联合创建了cri-dockerd项目,用于为Docker Engine提供一个能够支持到CRI规范的垫片,从而能够让Kubernetes基于CRI控制Docker。

https://github.com/Mirantis/cri-dockerd

cri-dockerd项目提供了预制的二制格式的程序包,用户按需下载相应的系统和对应平台的版本即可完成安装。

7、启动kubelet、docker,并设置开机启动(所有节点)

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

修改docker配置(所有节点)

# kubernetes官方推荐docker等使用systemd作为cgroupdriver,否则kubelet启动不了
cat <<EOF > daemon.json
{
	"exec-opts":["native.cgroupdriver=systemd"],
	"registry-mirrors":["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
# 重启生效

systemctl daemon-reload
systemctl restart docker

8、 用kubeadm初始化集群(仅在主节点跑)

# 初始化集群控制台Control plane
# 失败了可以用kubeadm reset重置

sudo swapoff -a

# 安装流量控制工具
yum install tc -y

kubeadm init --image-repository=registry.aliyuncs.com/google_containers

# 记得把kubeadm join xxx保存起来
# 忘记了重新获取:kubeadm token create--print-join-command

The connection to the server localhost:8080 was refused-did you specify the right host or port?

**注意:**防火墙要关闭,swap也要关闭

主节点执行

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

允许其他结点访问集群(主节点执行,非必须)

在其他机器上创建~/.kube/config文件也能通过kubectl访问到集群

复制授权文件,以便kubectl可以有权限访问集群

如果你其他节点需要访问集群,需要从主节点复制这个文件过去其他节点

scp /etc/kubernetes/admin.conf 192.168.40.129:/etc/kubernetes/admin.conf
scp /etc/kubernetes/admin.conf 192.168.40.130:/etc/kubernetes/admin.conf

然后分别在工作节点执行

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

有兴趣了解kubeadm init具体做了什么的,可以查看官方文档

9、把工作节点加入集群(只在工作节点跑)

kubeadm join 172.16.32.10:6443 --token xxx --discovery-token-ca-cert-hash xxx
# 例如
kubeadm join 192.168.40.128:6443 --token w4vm15.050mddexyrd4lwow --discovery-token-ca-cert-hash sha256:1ea9521d177f6d9455db98e26a107922c925b324cbc2a301b4274bcb4dcb4667

安装网络插件,否则node是NotReady状态(主节点跑

#很有可能国内网络访问不到这个资源,你可以网上找找国内的源安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

[root@localhost ~]kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created

查看节点,要在主节点查看(其他节点有安装kubectl也可以查看)

kubectl get nodes

10、配置网络

如果你运行kubectl describe pod/pod-name发现Events中有下面这个错误

networkPlugin cni failed to set up pod "test-k8s-68bb74d654-mc6b9_default" network:open/run/flannel/subnet.env: no such file or directory

Flannel是由CoreOS开源的针对k8s的网络服务,其目的是为解决k8s集群中各主机上Pod之间的通信问题,其借助etcd维护网络P地址分配,并为每个Node节点分配一个不同的IP地址段

在每个节点创建文件/run/flannel/subnet.env写入以下内容,配置后等待一会就好了

注意:空格

FLANNEL_NETWORK=10.244.0.0/16	#flannel全局网段
FLANNEL_SUBNET=10.244.0.1/24	#本节点子网
FLANNEL_MTU=1450				#容器接口mtu值
FLANNEL_IPMASQ=true 			#地址映射
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

11、提示工具配置

在 Linux 系统中,kubectl 命令行工具自带了命令补全特性,这可以帮助我们更快速、更容易地输入命令。为了启用这个特性,你需要配置你的 shell 环境。

对于 bash shell,你可以用以下命令来启用命令补全:

echo 'source <(kubectl completion bash)' >>~/.bashrc

然后,你需要重新加载 .bashrc 文件让这个更改生效:

source ~/.bashrc

对于 zsh shell,你可以用以下命令来启用命令补全:

echo 'if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi' >>~/.zshrc

然后,你需要重新加载 .zshrc 文件让这个更改生效:

source ~/.zshrc

完成这些操作后,你就可以在输入 kubectl 命令时使用 Tab 键来自动补全命令参数了。

请注意,上述命令中的 >>~/.bashrc>>~/.zshrc 操作会把 kubectl 的补全脚本添加到你的 shell 配置文件中,这样在每次打开新的终端窗口时都会自动启用命令补全。如果你只希望在当前终端窗口启用命令补全,你可以直接运行 source <(kubectl completion bash)source <(kubectl completion zsh)

12、稞机搭建遇到的问题

1.[WARNING Firewalld]:firewalld is active,please ensure ports [6443 10250]are open or your cluster may not function correctly

答:systemctl stop firewalld.service

2.[WARNING Service-Docker]:docker service is not enabled,please run ‘systemctl enable docker.service’

答:systemctl enable docker,service

3.[WARNING IsDockerSystemdcheck]:detected "cgroupfs"as the Docker cgroup driver.The recommended driver is “systemd”.Please follow the guide at https://kubernetes.io/docs/setup/cri/

答:官方文档表示,更改设置,令容器运行时和kubelet使用systemd作为cgroup驱动,以此使系统更为稳定。请注
docker下设置native,cgroupdriver=systemdi选项。

两种解决方式:

一、编辑dacker配置文件/etc/docker/daemon,json

"exec-opts":["native.cgroupdriver=systemd"]
systemctl daemon-reload
systemctl restart docker

二、编辑/usr/Iib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
systemctl daemon-reload
systemctl restart docker

命令:

vi /usr/lib/systemd/system/docker.service
--exec-opt native.cgroupdriver=systemd (追加)

设置完成后通过docker info命令可以看到Cgroup Driver为systemd

docker info | grep Cgroup

4.[WARNING FileExisting-tc] : tc not found in system path

安装流量控制工具

解决动法:

无法用yum安装,yum上有版本,却一直加载不下来。

可以用yum安装,yum服务器也是此版本:

yum命令:yum install tc -y

5:container runtime is not running:output E0606 12:41:12.605990 1307975

[root@master:~]rm -rf /etc/containerd/config.toml

[root@master:~systemctl restart containerd

6、Pod报错解决

如果你运行kubect1 describe pod/pod-name发现Events中有下面这个错误

networkPlugin cni failed to set up pod "test-k8s-68bb74d654-mc6b9_default" network: open /run/flannel/subnet.env:no such file or directory

在每个节点创建文件/run/flannel/subnet.env写入以下内容即可解决

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true
  1. 清除k8s相关内容,重新开始

    在输入下边命令的时候将第一条命令和后边几条分开输入,因为第一条会让你输入一个y来确认

    image-20230710172417464

    kubeadm reset 命令并未清理 CNI(network plugin)配置、iptables 规则、IPVS 表或者 kubeconfig 文件。这意味着,如果你的问题源自这些配置,你可能还需要手动清理它们:

    1. 清理 CNI 配置:删除 /etc/cni/net.d 目录下的文件。
    2. 重置 iptables:使用 iptables -Fiptables -t nat -F 命令清除 iptables 规则。
    3. 清理 IPVS 表:如果你的集群使用了 IPVS,使用 ipvsadm --clear 命令清理 IPVS 表。
    4. 清理 kubeconfig 文件:删除 $HOME/.kube/config 文件。
kubeadm reset 

rm -rf /etc/cni/net.d
iptables -F 
iptables -t nat -F
rm -rf $HOME/.kube/config

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

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

相关文章

【python】Excel文件的读取操作

测试用例.xlsx文件内容 利用xlrd模块读取文件 import xlrdfilename 测试用例.xlsx # 读取Excel表文件 wb xlrd.open_workbook(filename) # 读取Excel表中的第一个工作表 sheet wb.sheet_by_index(0) # 读取有内容的表格行数 rows sheet.nrows # 读取有内容的表格列数 cols…

嵌入式系统之ADC采样

嵌入式系统往往会有模拟信号的采集&#xff0c;比如模拟传感器温度、压力、流量、速度、光强等模拟量&#xff0c;经过放大整形滤波电路后送给ADC芯片&#xff0c;将电信号转转变成离散的数字量这个过程称之为AD采样&#xff0c;AD采样应用广泛&#xff0c;普遍遵循采样率3倍于…

ES 知识体系

https://www.easyice.cn/archives/367

【力扣算法03】之正则表达式匹配- python

文章目录 问题描述示例 1示例2示例3提示 思路分析代码分析完整代码运行效果及示例代码示例代码1运行结果示例代码2运行结果示例代码3运行结果 完结 问题描述 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意…

企业省时又省力:人工智能电话客服机器人的广泛应用

人工智能技术的崛起正深刻地改变着各个行业&#xff0c;其中之一便是客服领域。过去&#xff0c;人们常常在电话中与生硬的自动语音应答机打交道&#xff0c;这种体验常常令人沮丧。然而&#xff0c;随着人工智能电话客服机器人的广泛应用&#xff0c;企业不仅能够省时又省力&a…

MYSQL数据库系统期末试题及参考答案(2)

期末试题 : 一&#xff0c;创建数据库Game 二&#xff0c;数据表操作 1、创建表格players&#xff0c;记录游戏玩家信息&#xff1a; player_id&#xff1a;玩家ID&#xff0c;主键 player_name&#xff1a;玩家姓名&#xff0c;不能为空 age&#xff1a;年龄&#xff0c;必须…

Python数据分析常见Matplotlib SeaBorn图表

Matplotlib绘图 Matplotlib基本概念 Matplotlib&#xff1a;基于对象的思维构建的视觉符号。 每一个Axes&#xff08;坐标轴&#xff09;对象包含一个或者多个Axis(轴)对象&#xff0c;比如X轴、Y轴。 一个Figure&#xff08;画像&#xff09;是由一堆坐标轴对象组成的。 换…

2023中国数交会|美创科技获数字和软件服务行业两项大奖!

7月6日-9日&#xff0c;为期四天的2023中国国际数字和软件服务交易会&#xff08;简称&#xff1a;数交会&#xff09;圆满落幕。 作为国务院批准举办的国家级展会&#xff0c;本届数交会由商务部、科技部、中国贸促会和辽宁省政府主办&#xff0c;以“数字创新、融合发展”为主…

操作系统实战45讲|03.黑盒之中有什么、04.震撼的Linux全景图

03.黑盒之中有什么 黑盒之中有什么 从抽象的角度来看&#xff0c;内核就是计算机资源的管理者&#xff0c;管理资源是为了让应用使用资源。 计算机中的资源分为两类&#xff1a;硬件资源、软件资源&#xff1b; 硬件资源有以下这些&#xff1a; 总线&#xff0c;负责连接各种…

一个Transformer在尺度上适合多模态扩散的所有分布

文章目录 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale摘要本文方法实验结果 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale 摘要 本文提出了一个统一的扩散框架(UniDiffuser)来拟合一个模型中与一组多模态数据相…

Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用

前言 如果对 vue3 的语法不熟悉的&#xff0c;可以移步 Vue3.0 基础入门快速入门。 如果对 vue-router 语法不熟悉的&#xff0c;可以移步Vue3 系列&#xff1a;vue-router。 1. 安装依赖 yarn add vue-router // or npm install vue-router 2. 构建 src/router/index.js …

对话式ai人工智能的主要好处有哪些

对话式 AI 是客户服务的一个重要且不断增长的组成部分&#xff0c;尤其是客户越来越多地采用的数字自助服务。 对话式 AI 可以在提高客户满意度 (CSAT) 方面发挥很重要的作用。在 IBM 于 2021 年进行的一项研究中&#xff0c;99% 的公司报告称&#xff0c;由于使用虚拟对话式 …

支持源码的低代码核心工具,逻辑引擎

在现代企业管理中&#xff0c;决策扮演着至关重要的角色。然而&#xff0c;随着业务规模的扩大和数据量的增加&#xff0c;人工决策变得越来越困难和耗时&#xff0c;而且容易受到主观因素的影响。逻辑引擎的出现为企业提供了一种高效、准确的决策推理工具&#xff0c;能够以逻…

数字化转型迫在眉睫

在挑战商业世界现状并实现数字化转型时&#xff0c;一定程度的阻力是不可避免的。事实上&#xff0c;《福布斯》的一篇文章援引哈佛商学院的研究表明&#xff0c;70%的组织变革努力都失败了&#xff0c;“原因之一是高管们没有从足够多的人那里了解他们的计划和想法。”支持。”…

市面上的ipad国产触控笔怎么样?好用的电容笔合集

而对那些把IPAD当作学习工具的人而言&#xff0c;这个Apple Pencil绝对是不可或缺的。然而&#xff0c;苹果版本的Pencil却是昂贵得让许多人望而却步。因此&#xff0c;最佳方法是选择一个平替的电容笔。我是从几年前开始用IPAD的&#xff0c;也是一个数码爱好者&#xff0c;近…

AIGC行业周刊【2023-0709】【第六期】2023年世界人工智能大会大佬发言汇总

点击加入->【智子纪元-AIGC】技术交流群 一、大咖观点&#xff1a; 0709AI日报&#xff1a;2023年世界人工智能大会大佬发言汇总「5年内&#xff0c;人类程序员没了」&#xff0c;Stability AI老板大胆预测&#xff0c;一众大佬狂怼&#xff1a;大错特错&#xff0c;都懒得…

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 &#xff08;1&#xff09;在项目的vite.config.js文件中添加&#x…

算法训练营第三十一天||理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

理论基础 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 这么说有点抽象&#xff0c;来举一个例子&#xff1a; 例如&#xff0c;有一堆钞票&#xff0c;你可以拿走十张&#xff0c;如果想达到最大的金额&#xff0c;你要怎么拿&#xff1f; 指定每次…

专项练习24

目录 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte&#xff1f; 2、请问以下JS代码会输出什么 二、编程题 1、以数字的形式返回数字参数向下取整的结果 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte&#xff1f; A、2 Byte B、4Byte C…

如何在购物 App 上实现商品快递物流信息的展示

前言 现如今&#xff0c;人们大多数会选择在手机购物App上进行购物&#xff0c;这样买东西很是便捷&#xff0c;不用出门就能买到全国各地甚至是国外的商品&#xff0c;下单之后只需要等待快递送达就可以了。一个购物APP&#xff0c;不可或缺的一个辅助功能就是&#xff0c;展…