k8s在华为openeuler搭建

news2024/9/25 23:22:40

参考文献

Kubernetes1.26.0部署(Ubuntu/CentOS)未完待续https://blog.csdn.net/weixin_67405599/article/details/128466282

Kubeadm 快速搭建 k8s v1.24.1 集群(openEuler 22.03 LTS)https://huaweicloud.csdn.net/633119cbd3efff3090b52068.html

openEuler 部署Kubernetes(K8s)集群_岚哲的博客-CSDN博客openEuler官方文档部署K8s集群比较复杂,并且网上相关资料较少,本文是通过实践与测试整理的 openEuler 22.03 部署 Kubernetes 1.20.2 集群操作方法。https://blog.csdn.net/BY_imba/article/details/128490582Kubernetes 学习总结(29)—— 使用 kubeadm 部署 Kubernetes 1.24 详细步骤总结_科技D人生的博客-CSDN博客前言kubeadm 是 Kubernetes 官方提供的用于快速安部署 Kubernetes 集群的工具,伴随 Kubernetes 每个版本的发布都会同步更新,kubeadm 会对集群配置方面的一些实践做调整,通过实验 kubeadm 可以学习到 Kubernetes 官方在集群配置上一些新的最佳实践。一、准备1.1、系统配置在安装之前,需要先做好如下准备。3 台 CentOS 7.9 主机如下:cat /etc/hosts192.168.96.151 node1192.1https://blog.csdn.net/u012562943/article/details/124998093

最新的k8s生产环境部署(k8s1.25+containerd+ubuntu20.04)_k8s的哪个版本适合生产环境_摸鱼一枚猿的博客-CSDN博客最新的k8s生产环境部署,使用k8s1.25、containerd、Ubuntu20.04https://blog.csdn.net/u012735308/article/details/127057822使用 kubeadm 进行证书管理特性状态: Kubernetes v1.15 [stable] 由 kubeadm 生成的客户端证书在 1 年后到期。 本页说明如何使用 kubeadm 管理证书续订,同时也涵盖其他与 kubeadm 证书管理相关的说明。准备开始 你应该熟悉 Kubernetes 中的 PKI 证书和要求。使用自定义的证书 默认情况下,kubeadm 会生成运行一个集群所需的全部证书。 你可以通过提供你自己的证书来改变这个行为策略。如果要这样做,你必须将证书文件放置在通过 --cert-dir 命令行参数或者 kubeadm 配置中的 certificatesDir 配置项指明的目录中。默认的值是 /etc/kubernetes/pki。如果在运行 kubeadm init 之前存在给定的证书和私钥对,kubeadm 将不会重写它们。 例如,这意味着你可以将现有的 CA 复制到 /etc/kubernetes/pki/ca.crt 和 /etc/kubernetes/pki/ca.key 中,而 kubeadm 将使用此 CA 对其余证书进行签名。外部 CA 模式 只提供了 ca.crt 文件但是不提供 ca.key 文件也是可以的 (这只对 CA 根证书可用,其它证书不可用)。 如果所有的其它证书和 kubeconfig 文件已就绪,kubeadm 检测到满足以上条件就会激活 "外部 CA" 模式。kubeadm 将会在没有 CA 密钥文件的情况下继续执行。https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/PKI 证书和要求 | KubernetesKubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 kubeadm 安装的 Kubernetes, 则会自动生成集群所需的证书。你还可以生成自己的证书。 例如,不将私钥存储在 API 服务器上,可以让私钥更加安全。此页面说明了集群必需的证书。集群是如何使用证书的 Kubernetes 需要 PKI 才能执行以下操作:Kubelet 的客户端证书,用于 API 服务器身份验证 Kubelet 服务端证书, 用于 API 服务器与 Kubelet 的会话 API 服务器端点的证书 集群管理员的客户端证书,用于 API 服务器身份认证 API 服务器的客户端证书,用于和 Kubelet 的会话 API 服务器的客户端证书,用于和 etcd 的会话 控制器管理器的客户端证书或 kubeconfig,用于和 API 服务器的会话 调度器的客户端证书或 kubeconfig,用于和 API 服务器的会话 前端代理的客户端及服务端证书 说明: 只有当你运行 kube-proxy 并要支持扩展 API 服务器时, 才需要 front-proxy 证书。 etcd 还实现了双向 TLS 来对客户端和对其他对等节点进行身份验证。证书存放的位置 假如通过 kubeadm 安装 Kubernetes,大多数证书都存储在 /etc/kubernetes/pki。 本文档中的所有路径都是相对于该目录的,但用户账户证书除外,kubeadm 将其放在 /etc/kubernetes 中。https://kubernetes.io/zh-cn/docs/setup/best-practices/certificates/

GitHub - cdk-team/CDK: 📦 Make security testing of K8s, Docker, and Containerd easier.📦 Make security testing of K8s, Docker, and Containerd easier. - GitHub - cdk-team/CDK: 📦 Make security testing of K8s, Docker, and Containerd easier.https://github.com/cdk-team/CDK/

5. 在 Master node 和 Worker node 添加 hosts

修改 hosts 文件,配置主机名称和 ip 之间的映射。

cat > /etc/hosts << EOF
192.168.40.151 k8s-master-01
192.168.40.152 k8s-node-01
192.168.40.153 k8s-node-02
EOF

进入 bash 访问测试 node 节点网络是否连通

bash
...
ping k8s-master-01
ping k8s-node-01
ping k8s-node-02

6. 创建 containerd.conf 配置文件

在路径 “/etc/modules-load.d/containerd.conf” 创建配置文件。

cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

执行以下命令使配置生效

modprobe overlay
modprobe br_netfilter

8. 配置服务器支持开启 IPVS 的前提条件(K8s 推荐配置)

IPVS 称之为 IP虚拟服务器(IP Virtual Server,简写为 IPVS)。是运行在 LVS 下的提供负载平衡功能的一种技术。

IPVS 基本上是一种高效的 Layer-4 交换机,它提供负载平衡的功能。

由于 IPVS 已经加入到了 Linux 内核的主干,所以为 kube-proxy(Kubernetes Service) 开启 IPVS 的前提需要加载以下的 Linux 内核模块:

ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4 # 或 nf_conntrack

在所有服务器集群节点上执行以下脚本

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4 # 若提示在内核中找不到 nf_conntrack_ipv4, 可以让是切换 nf_conntrack
EOF

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

以上会提示

[root@k8s-node-02 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/5.10.0-136.12.0.86.oe2203sp1.x86_64

修改为nf_conntrack,执行成功

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack # 若提示在内核中找不到 nf_conntrack_ipv4, 可以让是切换 nf_conntrack
EOF

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

执行结果:

[root@k8s-node-02 modules]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 192512  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          180224  1 ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
libcrc32c              16384  2 nf_conntrack,ip_vs
[root@k8s-node-02 modules]#

上面脚本创建了的 “/etc/sysconfig/modules/ipvs.modules” 文件,保证在节点重启后能自动加载所需模块。 可执行命令 【lsmod | grep -e ip_vs -e nf_conntrack_ipv4】查看所需内核模块是否正确加载。

接下来还需要确保各个节点上已经安装了 ipset 软件包,为了便于查看 ipvs 的代理规则,最好安装一下管理工具 ipvsadm。

yum install -y ipset ipvsadm

如果不满足以上前提条件,则即使 kube-proxy 的配置开启了 ipvs 模式,也会退回到 iptables 模式。

9. 同步系统时间

ntpdate 指令通过轮询指定为服务器参数的 网络时间协议(NTP) 服务器来设置本地日期和时间,从而确定正确的时间。

此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora、openeuler

# 安装 ntpdate 
yum install ntpdate -y

# 执行同步命令
ntpdate time.windows.com
# 跟网络源做同步
ntpdate cn.pool.ntp.org

# 把时间同步做成计划任务
crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org

# 重启crond服务
service crond restart

# 查看当前时区
date -R

同步系统时间输出如下信息

[root@k8s-node-02 modules]# date -R
Wed, 18 Jan 2023 10:38:52 +0800
[root@k8s-node-02 modules]# ntpdate   cn.pool.ntp.org
18 Jan 10:50:22 ntpdate[2046]: adjust time server 84.16.67.12 offset -0.000815 sec
[root@k8s-node-02 modules]#

Containerd 安装

下面我们进行 containerd 容器运行时的安装,操作如下:

1. 安装 wget (可选)

由于 openEuler 系统本身集成了 curl ,安装 wget 不是必须项。

[root@k8s-node-02 modules]# yum install wget -y
Last metadata expiration check: 0:41:40 ago on Wed 18 Jan 2023 10:15:42 AM CST.
Package wget-1.21.2-3.oe2203sp1.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@k8s-node-02 modules]#

2. 下载 containerd

分别使用 wget 和 curl 下载 containerd v1.6.4 版本。

[root@k8s-node-02 modules]# wget https://github.com/containerd/containerd/releases/download/v1.6.4/cri-containerd-cni-1.6.4-linux-amd64.tar.gz
--2023-01-18 10:58:47--  https://github.com/containerd/containerd/releases/download/v1.6.4/cri-containerd-cni-1.6.4-linux-amd64.tar.gz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... Read error (Error in the pull function.) in headers.
Retrying.

--2023-01-18 10:59:09--  (try: 2)  https://github.com/containerd/containerd/releases/download/v1.6.4/cri-containerd-cni-1.6.4-linux-amd64.tar.gz
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/46089560/b8170c34-27f1-4d7c-893c-da917883e3ea?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230118%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230118T025910Z&X-Amz-Expires=300&X-Amz-Signature=f637222108f72c02cf94d64d52e313edba27751be9af0854dcd48a6f60a549af&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=46089560&response-content-disposition=attachment%3B%20filename%3Dcri-containerd-cni-1.6.4-linux-amd64.tar.gz&response-content-type=application%2Foctet-stream [following]
--2023-01-18 10:59:10--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/46089560/b8170c34-27f1-4d7c-893c-da917883e3ea?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20230118%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230118T025910Z&X-Amz-Expires=300&X-Amz-Signature=f637222108f72c02cf94d64d52e313edba27751be9af0854dcd48a6f60a549af&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=46089560&response-content-disposition=attachment%3B%20filename%3Dcri-containerd-cni-1.6.4-linux-amd64.tar.gz&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.111.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443... failed: Connection refused.
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 130595716 (125M) [application/octet-stream]
Saving to: ‘cri-containerd-cni-1.6.4-linux-amd64.tar.gz’

cri-containerd-cni-1.6.4-linux-amd64.tar.gz         100%[=================================================================================================================>] 124.54M  1.21MB/s    in 76s

2023-01-18 11:00:48 (1.63 MB/s) - ‘cri-containerd-cni-1.6.4-linux-amd64.tar.gz’ saved [130595716/130595716]

[root@k8s-node-02 modules]# 

3. 安装 tar

tar 命令简介

  • Linux tar(英文全拼:tape archive )命令用于备份文件。
  • tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
  • 注意安装在根目录
# 安装 tar
yum install -y tar

# 查看压缩包包含哪些文件
tar -tf cri-containerd-cni-1.6.4-linux-amd64.tar.gz 

# 将压缩包解压至 cri-containerd-cni 文件夹(这里用命令创建 cri-containerd-cni文件夹,因为没有实现创建该文件夹),防止将文件都解压缩到当前文件夹(可以看到有etc、opt、usr三个子文件夹)。

tar xzf cri-containerd-cni-1.6.4-linux-amd64.tar.gz -C cri-containerd-cni | mkdir cri-containerd-cni

4. 安装 containerd

# 生成 containerd 默认配置
mkdir -p /etc/containerd

# 添加环境变量/cri-containerd-cni/usr/local/bin到~/.bash_profile文件中
vi ~/.bash_profile 添加如下
PATH=$PATH:$HOME/bin:/cri-containerd-cni/usr/local/bin

#生效
source ~/.bash_profile   


containerd config default > /etc/containerd/config.toml

注意:确认 containerd 可执行文件所在目录在 PATH 环境变量中。

[root@k8s-master-01 bin]# cat ~/.bash_profile |grep -i path
PATH=$PATH:$HOME/bin:/cri-containerd-cni/usr/local/bin
export PATH
[root@k8s-master-01 bin]#

5. 配置 containerd 软件源

参考配置文件 “/etc/containerd/config.toml” 如下:

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

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

相关文章

宽度优先搜索算法(BFS)详解(超级详细讲解,附有大图)

目录 一.宽度优先搜索&#xff08;BFS&#xff09;是什么&#xff1f; 二.图解宽搜&#xff08;BFS&#xff09; 三.对比与发现 四。工具——队列 五.模板 六.最后 一.宽度优先搜索&#xff08;BFS&#xff09;是什么&#xff1f; 百度百科这样说&#xff1a; 宽度优先搜索…

一文讲透:质量管理的历史

&#xff08;本文摘自《软件质量保证与管理&#xff08;第2版&#xff09;》&#xff0c;清华大学出版社&#xff0c;2020&#xff09;1875年泰勒制诞生&#xff0c;意味着科学管理的开始&#xff0c;最初的质量管理也就是将检验活动与其他职能分离&#xff0c;出现了专职的检验…

2022-2023年中国数字经济投融资及创新展望研究报告(附下载链接)

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年12月份热门报告盘点罗振宇2023年跨年演讲PPT原稿吴晓波2022年年终秀演讲PPT原稿2023年&#xff0c;如何科学制定年度规划&#xff1f;《底层逻辑》高清配图清华大学256页…

AF647 DBCO荧光染料,AF647 DBCO,Alexa Fluor 647 DBCO,AF-647, 二苯并环辛

一、产品描述&#xff1a;Alexa Fluor 647是一种明亮且可感光的远红色染料&#xff0c;其激发非常适合633 nm激光线。Alexa Fluor 647染料用于在成像和流式细胞仪中产生稳定的信号&#xff0c;在pH 4到pH 10之间为水溶性且对pH不敏感。这种长波长Alexa Fluor 染料的荧光肉眼看不…

什么是元器件二筛,为何要二筛,如何二筛,二筛的要求与分级要点总结

&#x1f3e1;《电子元器件学习目录》 目录1&#xff0c;什么是二筛2&#xff0c;为何要二筛3&#xff0c;如何进行二筛4&#xff0c;二筛的要求5&#xff0c;二筛的分级6&#xff0c;总结1&#xff0c;什么是二筛 电子元器件测试筛选即元器件二次筛选&#xff0c;又被简称为二…

Spring @Autowired 用法

Spring Autowired 用法首先看下Component举例 1 :举例 2 :验证是否调用的是默认构造器如何&#xff0c;在启动的时候执行有参数的构造函数&#xff1f;&#xff1f;&#xff0c;这就要看Autowired注解了&#xff01;Autowired注解首先看下Component 在类级别上添加了Component…

Flask入门教程(视频教程笔记)

初始化flask项目 前面的python环境之类的就不说了。 该博客是看 Flask 入门 这个视频教程写的笔记&#xff0c;如果你想入门一下Flask&#xff0c;可以看看这个课&#xff0c;虽然简短&#xff0c;但是入门部分讲的很好&#xff0c;同时可以利用这篇博客复习复习。如果你想了解…

二、MES的生态链

1、MES功能模块图1、 符合MESA/ISA-95标准&#xff0c;基于SOA架构&#xff0c;技术架构与业务架构分离&#xff0c;实现多厂分布式部署具备标准化模型组件&#xff0c;可根据客户需求选取标准组件、或调整业务对象脚本&#xff0c;组合成全新的业务组件&#xff0c;实现企业ME…

电动汽车热管理方案

热管理技术作为汽车节能、提高经济性和保障安全性的重要措施&#xff0c;在汽车研发过程中具有重要作用。传统燃油汽车的热管理系统主要包括发动机、变速器散热系统和汽车空调&#xff0c;而电动汽车的热管理系统在燃油汽车热管理架构的基础之上&#xff0c;又增加了电机电控热…

【Python百日进阶-数据分析】Day228 - plotly的图表的变换

文章目录一、过滤二、分组三、聚合四、多重转换4.1 Filter and Group By4.2 Filter and Aggregate4.3 所有变换4.4 Dash中的应用一、过滤 如何通过 Plotly 在 Python 中使用过滤器。 注意 transforms在 v5 中已弃用&#xff0c;plotly将在未来版本中删除 import plotly.io as…

分享97个PHP源码,总有一款适合您

PHP源码 分享97个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 97个PHP源码下载链接&#xff1a;https://pan.baidu.com/s/1OUa-rpzDK6CG8oj6BLZSTw?pwdxdt2 提取码&#xff…

上传ipa到appstore的步骤说明

上传ipa到appstore&#xff0c;首先你要有苹果开发者账号&#xff0c;一定要使用你自己的苹果开发者账号的证书打包&#xff0c;才能将ipa上传到你自己的苹果账号&#xff0c;才能提交到app store里。假如你还没有苹果开发者账号&#xff0c;或者你有证书但不是你自己账号生成的…

ES6ES6

ES8-ES8 新特性 4.1.async 和 await async和await 两种语法结合可以让异步代码像同步代码一样 4.1.1.async函数 async函数的返回值为 promise 对象&#xff0c; 2.promise 对象的结果由 asynt函数执行的返回值决定 4.1.2await表达式awaity必须写在 async 函数中 2.await 右侧…

Rockchip开发系列 - 3.2.引脚配置默认上拉下拉

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 返回总目录:Rockchip开发系列 - 总目录 开发过程中发现rk3568-linux.dtsi中耳机监测应急一直是处于低电平状态: 这个gpio表格也说…

【MyBatis】| 在WEB中应⽤MyBatis(使⽤MVC架构模式)

目录 一&#xff1a;在WEB中应⽤MyBatis&#xff08;使⽤MVC架构模式&#xff09; 1. 前期准备 2. 核心代码实现 3. 事务控制 4. 三大对象的作用域 一&#xff1a;在WEB中应⽤MyBatis&#xff08;使⽤MVC架构模式&#xff09; 目标&#xff1a; ①掌握mybatis在web应⽤中怎…

【闪电侠学netty】第9章 实现客户端登录

【Netty】读书笔记 - 跟闪电侠学 1. 内容概要 1.1 总结 1.1.1 逻辑处理器 ChannelHandler&#xff08;详见 第11章 Pipeline与ChannelHandler&#xff09; 1.1.2 编程小技巧 public class PacketCodeC {...public static final PacketCodeC INSTANCE new PacketCodeC();.…

spring学习-第一讲-beanFactory与ApplicationContext

BeanFactory与ApplicationContext区别 创建一个springboot项目&#xff0c;对这个函数的main函数来进行执行。 ConfigurableApplicationContext context SpringApplication.run(BeanFactoryApplicationContextStudyApplication.class, args); 很明显&#xff0c;Configurabl…

“互联网+”六年,云徙科技打造数字化经营增长“头牌”

2022年底的全面开放结束了三年疫情&#xff0c;三年来以消费零售为代表的商业领域发生了深刻变局。根据2022年8月的第50次中国互联网络发展状况统计报告&#xff0c;互联网推动网民消费模式变迁&#xff1a;在消费场景方面&#xff0c;从线上消费逐步转变为线上线下融合消费&am…

软件安装教程-Vivado2018.3/ISE14.7/Modelsim10.5/Keil5/AD18/Cadence17.2/CAD2016

硬件工程师软件安装教程 1.Vivado2018.3安装教程 本文的主要内容是介绍 Vivado 2018.3 版本(提取码&#xff1a;ebdx)的安装步骤及其 license(提取码: 6xkh) 的获取与加载。 本文学习自《【ALINX】FPGA ZYNQ视频教程——AX7010/AX7020教程——基础部分》 首先下载安装包&…

【Unity3D】基于模板测试和顶点膨胀的描边方法

1 前言 选中物体描边特效 中介绍了基于模板纹理模糊膨胀的描边方法&#xff0c;该方法实现了软描边&#xff0c;效果较好&#xff0c;但是为了得到模糊纹理&#xff0c;对屏幕像素进行了多次二次渲染&#xff0c;效率欠佳。本文将介绍另一种描边方法&#xff1a;基于模板测试和…