k8s在华为openeuler搭建

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

参考文献

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

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

openEuler 部署KubernetesK8s集群_岚哲的博客-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-proxyKubernetes 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” 如下

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s

“k8s在华为openeuler搭建” 的相关文章