首页 > 其他分享 >openEuler搭建k8s(1.28.2版本)

openEuler搭建k8s(1.28.2版本)

时间:2024-11-09 17:30:06浏览次数:1  
标签:kubernetes containerd etc 1.28 master yum openEuler k8s root

目录

k8s搭建(1.28.2版本)

不知道从什么时候开始,openEuler已经开始支持使用containerd的k8s集群了,之前我学习的时候最高都只能支持到1.23,所以这里再来写一篇关于部署运行时为containerd的集群

为什么要单独写关于openEuler的部署方式?

因为使用centos的部署方式在openEuler上部署的时候会有一些差异,而这些差异的地方就会导致无法继续往下进行,所以我单独写一篇博客来避开这些坑点

1. 安装containerd

你可能想问,一个containerd有什么不会安装的,直接使用yum不就可以安装好了吗?是的,你在其他操作系统上确实可以这么干,但是在openEuler上这么干不会报错,因为yum仓库里面确实有containerd的rpm包,你确实可以装上,但是那个containerd版本太低。无法正常的使用。所以需要下载tar包来安装

1.1 下载tar包

# 确保没有使用官方仓库的containerd
[root@master ~]# yum remove containerd -y
[root@master ~]# wget https://github.com/containerd/containerd/releases/download/v1.7.16/containerd-1.7.16-linux-amd64.tar.gz
[root@master ~]# tar -zxvf containerd-1.7.16-linux-amd64.tar.gz 
[root@master ~]# mv bin/* /usr/local/bin/

1.2 编写服务单元文件

[root@master ~]# vim /usr/lib/systemd/system/containerd.service

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/containerd

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5

# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity

# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

然后给containerd设计开机自启

[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl enable --now containerd

2. 安装runc

这个也是一样的,不能使用yum安装的版本(至少面前不可以--文章写于2024-11-9)

[root@master ~]# yum remove runc -y
[root@master ~]# wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64
[root@master ~]# install -m 755 runc.amd64 /usr/local/sbin/runc

3. 安装cni插件

3.1 下载文件

[root@master ~]# wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz
[root@master ~]# mkdir -p /opt/cni/bin
[root@master ~]# tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.1.tgz

3.2 设置crictl运行端点

cat <<EOF > /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 5
debug: false
EOF

4. 配置containerd

[root@master ~]# containerd config default > /etc/containerd/config.toml 
# 将cgroup打开
[root@master ~]# vim /etc/containerd/config/toml
# 找到这一行配置,将false改为true
SystemdCgroup = true
# 修改sandbox镜像地址
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

重启containerd

[root@master ~]# systemctl restart containerd

5. 主机配置

5.1 编辑hosts文件(可选)

将IP与主机名写入到/etc/hosts文件内,我这里就不做了。不做没有任何影响

5.2 开启流量转发

[root@master ~]# modprobe bridge
[root@master ~]# modprobe br_netfilter
[root@master ~]# vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
[root@master ~]# sysctl -p

5.3 关闭防火墙以及selinux

[root@master ~]# sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
[root@master ~]# systemctl disable --now firewalld

5.4 关闭swap

如果配置了swap,请关闭他

[root@master ~]# swapoff -a

然后进入到/etc/fstab里面注释掉swap的那一行内容

6. 搭建k8s

到这里就开始搭建k8s了

6.1 配置yum源

[root@master ~]#  cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

6.2 安装工具

[root@master ~]# yum install kubectl kubeadm kubelet -y
[root@master ~]# systemctl enable kubelet

6.3 初始化

[root@master ~]#  kubeadm init --kubernetes-version=v1.28.2 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
  • 这里的kubernetes-version后面的值修改为你自己的kubeadm的版本
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
  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

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.200.200:6443 --token alefrt.vuiz4k7424ljhh2i \
	--discovery-token-ca-cert-hash sha256:1c0943c98d9aeaba843bd683d60ab66a3b025d65726932fa19995f067d62d436 

看到这一段信息就是初始化成功了,然后我们根据提示来创建目录

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

,如果有其他节点需要加入集群那么就执行

[root@master ~]# kubeadm join 192.168.200.200:6443 --token alefrt.vuiz4k7424ljhh2i \
	--discovery-token-ca-cert-hash sha256:1c0943c98d9aeaba843bd683d60ab66a3b025d65726932fa19995f067d62d436 

然后我们可以查看节点状态

[root@master ~]# kubectl get nodes
NAME     STATUS     ROLES           AGE   VERSION
master   NotReady   control-plane   26s   v1.28.2

接下来我们安装网络插件calico,让他的状态变为Ready

7. 网络插件

7.1 安装calico

[root@master ~]#  wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/tigera-operator.yaml
[root@master ~]# kubectl create -f tigera-operator.yaml

接下来我们来处理第二个文件

[root@master ~]# wget https://raw.githubusercontent.com/projectcalico/calico/v3.27.0/manifests/custom-resources.yaml
[root@master ~]# vim custom-resources.yaml 

# 将里面的cidr改为初始化集群使用的地址段
      cidr: 10.244.0.0/16

7.2 配置镜像加速器地址

如果不配置镜像加速器地址的话。镜像是拉取不到的。

[root@master ~]# vim /etc/containerd/config.toml
# 需要找到这一行,并添加2行
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["镜像加速器地址1","镜像加速器地址2"]

可以百度搜一下哪些镜像加速器地址还可以使用,然后替换掉里面的文字

重启containerd

[root@master ~]# systemctl restart containerd

然后等到他把所有的镜像拉取完之后集群就正常了

最终就是这样的

[root@master ~]# kubectl get nodes 
NAME     STATUS   ROLES           AGE   VERSION
master   Ready    control-plane   15m   v1.28.2

标签:kubernetes,containerd,etc,1.28,master,yum,openEuler,k8s,root
From: https://www.cnblogs.com/fsdstudy/p/18537011

相关文章

  • NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL
    在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、告警、云台控制、语音对讲等高级功能,使其......
  • 【模块一】kubernetes容器编排进阶实战之k8s基础概念
    kubernetes基本介绍kubernetes组件简介   -master:       主人,并不部署服务,而是管理salve节点。      后期更名为:controllplane,控制面板。         etcd:      2379(客户端通信)、2380(集群内部通信)         ......
  • 【K8s安全】K8s污点横向渗透
    原创Al1ex七芒星实验室污点是K8s高级调度的特性,用于限制哪些Pod可以被调度到某一个节点,一般主节点包含一个污点,这个污点是阻止Pod调度到主节点上面,除非有Pod能容忍这个污点,而通常容忍这个污点的Pod都是系统级别的Pod,例如:kube-system基本原理攻击者在获取到node节点的权限......
  • 【k8s安全】etcd未授权到控制k8s集群
    免责声明本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号团队不为此承担任何责任。在安装完K8s后,默认会安装etcd组件,etcd是一个高可用的key-value数据库,它为k8s集群提供底层数据存储,保存了......
  • 【K8S问题系列】Kubernetes Pod节点CrashLoopBackOff 状态【已解决】
    在Kubernetes中,Pod的状态为CrashLoopBackOff表示某个容器在启动后崩溃,Kubernetes尝试重启该容器,但由于持续崩溃,重启的间隔时间逐渐增加。下面将详细介绍CrashLoopBackOff状态的原因、解决方案及相关命令的输出解释。一、CrashLoopBackOff状态的详细介绍描述C......
  • 学习openeuler操作系统的记录本
    1.下载以及配置openeuler在官网里面下载openeuler操作系统,在官网的文档里面里面查看相对应的注意事项,(一定要会阅读官方文档),在官网查看下载的对应操作系统需要的最小cpu,以及磁盘大小等分配合适的虚拟硬盘,配置的过程要一步一步来,防止出现分配不合理,而导致的操作系统无法正常运行的......
  • GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU
    本文主要分享在不同环境,例如裸机、Docker和Kubernetes等环境中如何使用GPU。跳转阅读原文:GPU环境搭建指南:如何在裸机、Docker、K8s等环境中使用GPU1.概述仅以比较常见的NVIDIAGPU举例,系统为Linux,对于其他厂家的GPU设备理论上流程都是一样的。省流:对于裸......
  • K8S备份-恢复-迁移神器-Velero
    K8S备份-恢复-迁移神器-Velero前言Kubernetes集群备份一直是我们的痛点。虽然可以通过备份ETCD来实现K8S集群备份,但是这种备份很难恢复单个Namespace。今天推荐Velero工具,它提供以下功能:灾备场景:提供备份恢复k8s集群的能力迁移场景:提供拷贝集群资源到其他集群的能力(复制......
  • 3分钟部署生产级k8s集群
    3分钟部署生产级k8s集群什么是sealos?sealos:sealos是一个kubernetes高可用安装工具,一条命令,离线安装,包含所有依赖,内核负载不依赖haproxykeepalived,纯golang开发,99年证书,支持v1.14.9v1.15.6v1.16.3v1.17.0。概览图​​前提条件安装并启动docker,高版本离线包自......
  • k8s网络
    1.k8s概述2.网络模型原则3.CNI4.CNI接口5.CNI-JSON文件5.插件讲解6.网络插件7.人气数据8.k8s功能说明9.网络模型10.举例-underlay11.举例-overlay......