Debian11之基于kubeadm安装K8S(v1.26.0) 集群

Debian11之基于kubeadm安装K8S(v1.26.0) 集群

参考文章

原文链接:https://blog.csdn.net/qq_30818545/article/details/128056996
版权声明:本文为CSDN博主「大能嘚吧嘚」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明

文章目录

  • Debian11之基于kubeadm安装K8S(v1.26.0) 集群
      • 硬件要求
      • 各服务器初始化配置
  • 容器运行时接口 和 容器运行时
  • 各节点安装容器运行时以及配置
      • docker安装
            • 优先考虑官网安装--重点重点
            • 卸载历史版本
  • 存储库安装
    • 1、安装依赖包
    • 2、安装GPG证书(使用阿里云地址)
    • 3、写入软件源信息(使用阿里云地址)
    • 4、安装 Docker
  • 开机自启
  • 安装校验
  • 配置阿里云镜像加速器
  • Containerd1.6.19安装及配置
  • 介绍
  • 下载
            • 版本选择
            • ctr 和 crictl 区别
            • 配置containerd使用crictl(跳过)
  • 安装
  • 各节点安装kubeadm、kubectl、kubelet
            • 我使用的方法
        • 安装GPG密钥
  • 初始化Master节点上的kubeadm
    • 查询k8s各组件的版本号
            • 第一种方法
            • 第二种方法
    • 常用指令
    • 初始化master节点
            • 查看集群上节点的状态
    • 安装CNI(以Calico为例)后查看节点运行状况
    • 查询 kube-system 命名空间下的 deployment、pod、service 资源
      • 测试在 k8s 创建 pod 是否可以正常访问网络
      • 第二种办法参考下面博主
  • 报错问题
      • 第二种办法参考下面博主
  • 报错问题

硬件要求

1、Master主机:2核CPU、4G内存、20G硬盘
2、Node主机:4+核CPU、8G+内存、40G+硬盘
2、集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
3、节点之中不可以有重复的主机名、MAC 地址或 product_uuid
4、开启机器上的某些端口
5、为了保证 kubelet 正常工作,必须禁用交换分区

各服务器初始化配置

  • 配置各主节点的主机名称
hostnamectl set-hostname k8smaster && hostname # 设置主节点1的主机名称
hostnamectl set-hostname k8snode1 && hostname # 设置从节点1的主机名称

  • 配置各节点的Host文件
vi /etc/hosts # 编辑文件,注意不能有空格


192.168.31.236   k8s-master
192.168.31.235   k8s-node1
192.168.31.237   k8s-node2
  • 关闭各节点的防火墙
systemctl disable nftables.service && systemctl stop nftables.service && systemctl status nftables.service

  • 永久禁用各节点的交换分区
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 注释掉swap那一行
  • 同步各节点的时区
# 设置系统时区为中国/上海
timedatectl set-timezone Asia/Shanghai

容器运行时接口 和 容器运行时

容器运行时接口(Container Runtime Interface),简称CRI

容器运行时(Container Runtime),简称CR,有Docker、Containerd、Podman等等

默认情况下 Kubernetes 使用 CRI 与 CR 进行交互,如果不指定CRI,kubeadm 会自动尝试通过扫描已知的端点列表来检测已安装的CRI,如果检测到有多个或者没有CRI,kubeadm 将抛出一个错误并要求你指定一个想要的CRI

K8S 1.20 版本前后对比
img

img

K8S 1.20版本以前,CRI内部维护了DockerShim,CR使用的是Docker, CRI与CR进行交互时是通过DockerShim桥接来实现的
K8S 1.20版本以后,CRI内部取消的DockerShim(市场上大部分CR都遵循了K8S的CRI规范,KS8为了适应更多的CR而放弃了Docker,如果还想使用Docker则需要外部单独安装cri-dockerd),CR使用的是Containerd

各节点安装容器运行时以及配置

docker安装

优先考虑官网安装–重点重点
https://docs.docker.com/engine/install/debian/
卸载历史版本
apt-get remove docker docker-engine docker.io containerd runc && apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

rm -rf /etc/docker && rm -rf /usr/libexec/docker && rm -rf /var/lib/docker && rm -rf /var/lib/containerd && rm -rf /etc/apt/keyrings

whereis docker # 确保没有和docker相关的文件

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第1张图片

存储库安装

1、安装依赖包

apt-get update && apt-get install ca-certificates curl gnupg lsb-release apt-transport-https software-properties-common

2、安装GPG证书(使用阿里云地址)

 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
mkdir -m 0755 -p /etc/apt/keyrings \
&& curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
mkdir -m 0755 -p /etc/apt/keyrings \
&& curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第2张图片

3、写入软件源信息(使用阿里云地址)

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4、安装 Docker

chmod a+r /etc/apt/keyrings/docker.gpg && apt-get update

apt-cache madison docker-ce # 查询存储库中可用的版本

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第3张图片

apt-get install docker-ce=5:23.0.1-1~debian.11~bullseye # Docker守护进程

apt-get install docker-ce-cli=5:23.0.1-1~debian.11~bullseye # CLI工具用来远程控制Docker守护进程‎

# 轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具
apt-get install docker-compose && apt-get install docker-compose-plugin

开机自启

systemctl enable docker && systemctl restart docker && systemctl status docker

安装校验

docker info # 基本信息

docker --version # 检查安装版本

配置阿里云镜像加速器

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第4张图片

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第5张图片

Containerd1.6.19安装及配置

介绍

1、K8S发布的CRI(Container Runtime Interface)统一了容器运行时接口,凡是支持CRI的容器运行时的皆可作为K8S的底层容器运行时,而Docker 没有实现 CRI,为此必须安装一个额外的服务 cri-dockerd才可以在K8S中使用

2、K8S 1.24版本中从 kubelet 中移除了docker作为容器运行时,取而代之的是containerd容器运行时,它是从Docker中分离出来的底层容器运行时,使用起来与Docker相似

3、containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性

4、containerd 可以在宿主机中管理完整的容器生命周期,包括容器镜像的传输和存储、容器的执行和管理、存储和网络等

下载

https://github.com/containerd/containerd/releases
版本选择
containerd-1.6.19-linux-amd64.tar.gz(单独的 containerd)(不推荐)

cri-containerd-1.6.19-linux-amd64.tar.gz(containerd + runc)(不推荐)
runc为容器运行时,实现了容器的init、run、create、ps等等在运行容器所需要的cmd指令

cri-containerd-cni-1.6.19-linux-amd64.tar.gz(containerd + runc + cni)(推荐)
CNI(Container Network Interface) 是一套容器网络接口规范,通过插件的形式支持各种各样的网络类型,为容器分配ip地址

注意:Kubernetes 要想实现网络模型,则需要安装一个 三方的CNI 插件。在 Kubernetes 1.24 之前,CNI 插件可以由 kubelet 使用命令行参数 cni-bin-dir 和 network-plugin 管理,Kubernetes 1.24开始移除了这些命令行参数。Kubernetes 1.26开始支持用于集群联网的容器网络接口 (CNI) 插件(官方推荐安装地址

https://kubernetes.io/docs/concepts/cluster-administration/addons
ctr 和 crictl 区别
背景:在部署 k8s 的过程中,经常要对镜像进行操作(拉取、删除、查看等)
问题:使用过程中会发现 ctr 和 crictl 有很多相同功能,也有些不同,那区别到底在哪里?
说明:
1.ctr 是 containerd 自带的 CLI 命令行工具,crictl 是 k8s 中 CRI(容器运行时接口)的客户端,
k8s 使用该客户端和 containerd 进行交互;
[root@xianchaonode1 ~]# cat /etc/crictl.yaml 
runtime-endpoint: "/run/containerd/containerd.sock"
image-endpoint: ""
timeout: 0
debug: false
pull-image-on-create: false
disable-pull-on-run: false
systemctl restart containerd
2.ctr 和 crictl 命令具体区别如下,也可以--help 查看。crictl 缺少对具体镜像的管理能力,可能是
k8s 层面镜像管理可以由用户自行控制,能配置 pod 里面容器的统一镜像仓库,镜像的管理可以有
habor 等插件进行处理。


docker 跟 containerd 不冲突,安装 docker 是为了能基于 dockerfile 构建
镜像
配置containerd使用crictl(跳过)

所有节点都配置

注意,我们安装的是cri-containerd-cni-1.6.19-linux-amd64.tar.gz(containerd + runc + cni)(推荐) ,就不需要再配置下面的拉

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

systemctl restart containerd

安装

文档地址

https://github.com/containerd/containerd/blob/main/docs/getting-started.md
  • 解压
tar xzf /home/lixing/cri-containerd-cni-1.6.19-linux-amd64.tar.gz -C / # 自动把内部etc、opt、usr目录解压到/目录

  • 生成配置文件模板并自定义
mkdir -p /etc/containerd && containerd config default > /etc/containerd/config.toml # 生成配置文件

  • 自定义镜像
vi /etc/containerd/config.toml # 编辑启动文件

mkdir -p /etc/containerd				#创建一个目录用于存放containerd的配置文件
containerd config default | sudo tee /etc/containerd/config.toml	#把containerd配置导出到文件


vim /etc/containerd/config.toml			#修改配置文件
[plugins."io.containerd.grpc.v1.cri"]
..................................

#搜索sandbox_image,把原来的k8s.gcr.io/pause:3.6改为
"registry.aliyuncs.com/google_containers/pause:3.9" 
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"	 
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
..........................

#搜索SystemdCgroup,把这个false改为true		
    SystemdCgroup = true					


#搜索config_path,配置镜像加速地址(这是一个目录下面创建)
[plugins."io.containerd.grpc.v1.cri".registry]
     config_path = "/etc/containerd/certs.d"			

#创建镜像加速的目录 
mkdir /etc/containerd/certs.d/docker.io -pv
#配置加速
cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF
server = "https://docker.io"
[host."https://rj0i5pgk.mirror.aliyuncs.com"]
  capabilities = ["pull", "resolve"]
EOF

#加载containerd的内核模块
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

#重启containerd
systemctl restart containerd 
systemctl status containerd


runc 安装(containerd通过runc来运行容器)

注意:containerd 解压后默认是包含runc的,但是缺乏相关依赖,建议自行安装并覆盖默认的 runc

下载地址

https://github.com/opencontainers/runc/releases
chmod +x runc.amd64 && mv runc.amd64 /usr/local/sbin/runc && runc -v # 覆盖默认的runc

  • 刷新配置文件
systemctl daemon-reload && systemctl restart containerd # 重新加载服务配置文件并重启

  • 设置开机启动
systemctl enable containerd # 开机自启
systemctl restart containerd.service # 重启服务
systemctl status containerd.service # 查看服务状态

  • 查看版本
containerd -version

ctr version

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第6张图片

各节点安装kubeadm、kubectl、kubelet

在这里插入图片描述

  • kubeadm:用来初始化集群的指令
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等
  • kubectl:用来与集群通信的命令行工具

官方安装教程

kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本

我使用的方法
https://lework.github.io/2021/04/03/debian-kubeadm-install/#%E9%83%A8%E7%BD%B2master%E8%8A%82%E7%82%B9
  • 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包
sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl

  • 安装GPG密钥

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg  https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg


  sudo echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

  • 添加 Kubernetes apt 仓库
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

  • 更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本
    安装Kubernetes
sudo apt-get upgrade && sudo apt-get update

sudo apt-get install -y kubelet kubeadm kubectl 
# sudo apt-get remove kubelet kubeadm kubectl # 卸载

sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,标记软件包不被自动更新

  • 添加 kubelet 开机自启
sudo systemctl enable kubelet

sudo systemctl restart kubelet && sudo systemctl status kubelet # 重启并查看状态

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第7张图片

配置 cgroup 驱动

kubelet 和 容器运行时需使用相同的CGroup驱动并且采用相同的配置

Linux上控制组(CGroup)用于限制分配给进程的资源
kubelet 和 容器运行时都需要对接CGroup来强制执行为Pod和容器管理资源(为诸如 CPU、内存这类资源设置请求和限制)
由于 kubeadm 把 kubelet 视为一个系统服务来管理,所以对基于 kubeadm 的安装, 推荐使用 systemd 驱动,不推荐 cgroupfs 驱动

初始化Master节点上的kubeadm

查询k8s各组件的版本号

第一种方法
kubeadm config images list # 查询k8s各组件的版本号

registry.k8s.io/kube-apiserver:v1.26.0
registry.k8s.io/kube-controller-manager:v1.26.0
registry.k8s.io/kube-scheduler:v1.26.0
registry.k8s.io/kube-proxy:v1.26.0
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第8张图片

第二种方法

不是完全可以先拉镜像,可以先初始化接着往下做

初始化前可先拉取对应的镜像
查看初始化需要的镜像

 sudo kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第9张图片

拉取

sudo kubeadm config images pull --cri-socket unix:///run/cri-dockerd.sock --image-repository registry.aliyuncs.com/google_containers

常用指令

kubeadm init 用于搭建控制平面节点
kubeadm join 用于搭建工作节点并将其加入到集群中
kubeadm upgrade 用于升级 Kubernetes 集群到新版本
kubeadm config 如果你使用了 v1.7.x 或更低版本的 kubeadm 版本初始化你的集群,则使用 kubeadm upgrade 来配置你的集群
kubeadm token 用于管理 kubeadm join 使用的令牌
kubeadm reset 用于恢复通过 kubeadm init 或者 kubeadm join 命令对节点进行的任何变更
kubeadm certs 用于管理 Kubernetes 证书
kubeadm kubeconfig 用于管理 kubeconfig 文件
kubeadm version 用于打印 kubeadm 的版本信息
kubeadm alpha 用于预览一组可用于收集社区反馈的特性

初始化master节点

# kubernetes-version #制定 kubernetes 版本
# image-repository  #选择用于拉取镜像的容器仓库
# apiserver-advertise-address #当前 Master 主机的ip地址
# service-cidr #为服务的虚拟 IP 地址段,默认值:"10.96.0.0/12"
# pod-network-cidr #指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDR
sudo kubeadm init \
    --kubernetes-version v1.26.0 \
    --image-repository registry.aliyuncs.com/google_containers \
    --apiserver-advertise-address 192.168.111.30 \
    --service-cidr 10.245.0.0/12 \
    --pod-network-cidr 10.244.0.0/16

在这里插入图片描述

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第10张图片

  • Master1节点执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

kubeadm token list # 获取令牌
kubeadm token create # 创建令牌


新节点加入集群时token已过期,需要重新生成,在master执行如下命令

$ kubeadm token create --print-join-command

  • Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第11张图片

    所有Node节点执行(加入Node节点到Master节点)

kubeadm join 192.168.111.30:6443 --token 6j62uf.oiy1b6apenl5c9pi \
--discovery-token-ca-cert-hash sha256:7a228dc323378d8d90e5af1b158a49dfcda8efd3ebe2d09274a9b8619c6b5539

kubeadm join 192.168.31.236:6443 --token 1uszne.hf4w4jd38xwok5r7 \
--discovery-token-ca-cert-hash sha256:31328100092458af3d12c1a28ce9acda8a44ffcd33e0f3d5d40fee0eb621765c

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第12张图片

查看集群上节点的状态
注意:默认K8S是不安装CNI(容器网络接口)的,需要开发者自行安装三方CNI
CNI 全称是 Container Network Interface(容器网络接口,负责容器间的网络通信),是由 CoreOS 提出的容器网络规范,k8s 网络模型采用的就是该CNI 网络模型规范,常见的CNI插件有 Calico、Flannel、Terway、Weave Net 、Canal 以及 Contiv

具体安装参考:https://kubernetes.io/docs/concepts/cluster-administration/addons

journalctl -f -u kubelet # 查看 kubelet 执行日志

1、(containerd容器版本包含CNI)当前CNI版本为1.0.0,而服务器CNI插件的版本只支持0.1.0-0.4.0

在这里插入图片描述

2、(containerd容器版本不包含CNI)没有安装CNI网络插件

在这里插入图片描述

安装CNI(以Calico为例)后查看节点运行状况

安装教程参考这篇文章

把安装 calico 需要的镜像 calico.tar.gz 传到 xianchaomaster1、xianchaomaster2、 这个包可以从1.24到1.26都可以使用

xianchaomaster3 和 xianchaonode1 节点,手动解压:

链接:https://pan.baidu.com/s/1LnEvpmyqClh_cSdcouWnIQ?pwd=rpzh 
提取码:rpzh 
--来自百度网盘超级会员V2的分享
[root@xianchaomaster1 ~]# ctr -n=k8s.io images import calico.tar.gz
[root@xianchaomaster2 ~]# ctr -n=k8s.io images import calico.tar.gz
[root@xianchaomaster3 ~]# ctr -n=k8s.io images import calico.tar.gz
[root@xianchaonode1 ~]# ctr -n=k8s.io images import calico.tar.gz

上传 calico.yaml 到 xianchaomaster1 上,使用 yaml 文件安装 calico 网络插件 。
[root@xianchaomaster1 ~]# kubectl apply -f calico.yaml

#calico 的 STATUS 状态是 Ready,说明 k8s 集群正常运行了

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第13张图片

kubectl get nodes -o wide
kubectl get pod -A

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第14张图片

查询 kube-system 命名空间下的 deployment、pod、service 资源

kubectl get deployment,pods,service -n kube-system -o wide
kubectl describe -n kube-system pod podName
kubectl logs -n kube-system podName

pod/kube-controller-manager-k8smaster1    k8smaster1【负责维护集群的状态,程序部署、故障检测、自动扩展、滚动更新】
pod/kube-scheduler-k8smaster1             k8smaster1【负责集群的资源调度,按照预定的策略将pod调度到相应的node节点上】
pod/kube-apiserver-k8smaster1             k8smaster1【资源操作的唯一入口,接受用户输入的指令,提供认证、授权、API注册和发现等机制】
pod/etcd-k8smaster1                       k8smaster1【负责存储集群中各种资源的对象信息】
pod/kube-proxy-xxxxx                      k8smaster1【负责提供集群内部的服务发现和负载均衡】

测试在 k8s 创建 pod 是否可以正常访问网络

#把 busybox-1-28.tar.gz 上传到 xianchaonode1 节点,手动解压
[root@xianchaonode1 ~]# ctr images import busybox-1-28.tar.gz
kubectl run busybox --image docker.io/library/busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it  busybox -- sh
/ # ping www.baidu.com
PING www.baidu.com (39.156.66.18): 56 data bytes
64 bytes from 39.156.66.18: seq=0 ttl=127 time=39.3 ms
#通过上面可以看到能访问网络,说明 calico 网络插件已经被正常安装了

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第15张图片

第二种办法参考下面博主

https://blog.csdn.net/VIP099/article/details/106748278?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167971355116800184183492%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167971355116800184183492&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-106748278-null-null.142^v76^control_1,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%20k8s%E6%B5%8B%E8%AF%95pod%E9%9B%86%E7%BE%A4%E7%BD%91%E7%BB%9C&spm=1018.2226.3001.4187

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第16张图片

报错问题

Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第17张图片

删除这个目录下面的其他源,因为跟其他的源重复掉了
Debian11之基于kubeadm安装K8S(v1.26.0) 集群_第18张图片

第二种办法参考下面博主

https://blog.csdn.net/VIP099/article/details/106748278?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167971355116800184183492%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167971355116800184183492&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-106748278-null-null.142^v76^control_1,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=%20k8s%E6%B5%8B%E8%AF%95pod%E9%9B%86%E7%BE%A4%E7%BD%91%E7%BB%9C&spm=1018.2226.3001.4187

[外链图片转存中…(img-U67FtFdy-1680265174668)]

报错问题

[外链图片转存中…(img-Go9oVPY7-1680265174668)]

删除这个目录下面的其他源,因为跟其他的源重复掉了
[外链图片转存中…(img-9Id2ozxr-1680265174669)]

你可能感兴趣的:(k8s,kubernetes,docker,容器)