部署Kubernetes V1.24 集群

部署Kubernetes V1.24 集群

环境配置

基础环境配置

IP地址主机名配置
192.168.117.251server14C4G
192.168.117.252server24C4G
192.168.117.253server34C4G

系统信息

名称版本
操作系统Ubuntu 20.04.4 LTS
内核5.4.0-110-generic

集群部署环境准备

Kubernetes Documentation | Kubernetes

Kubernetes 文档 | Kubernetes

Kubernets官方文档

安装 kubeadm | Kubernetes

Kubernets官方安装文档

根据官网文档,在安装开始之前需要的是:


  • 查看主机名、MAC地址和product_uuid

    • 你可以使用命令 ip linkifconfig -a 来获取网络接口的 MAC 地址
    • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验

    一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装 失败

    "主机server1"
    root@server1:~# ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:92:2a:c6 brd ff:ff:ff:ff:ff:ff
        
    root@server1:~# cat /sys/class/dmi/id/product_uuid
    780d4d56-d661-17cb-8aa5-dca7d7922ac6
    
    "主机server2"
    root@server2:~# ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:ca:f7:b2 brd ff:ff:ff:ff:ff:ff
    
    root@server2:~# cat /sys/class/dmi/id/product_uuid
    3ff54d56-e1b0-b8dc-54fa-99333acaf7b2
    
    "主机Server3"
    root@server3:~# ip link
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
        link/ether 00:0c:29:4e:3f:d4 brd ff:ff:ff:ff:ff:ff
        
    root@server3:~# cat /sys/class/dmi/id/product_uuid
    9d324d56-f4c9-83cf-7030-eb64ce4e3fd4
    
  • 放行端口

    "所有主机"
    systemctl stop ufw.service && systemctl disable ufw.service
    #采用关闭防火墙 放行所有
    
  • 禁用交换分区

    "所有主机"
    echo "vm.swappiness=0" >> /etc/sysctl.conf
    sysctl -p
    #表示禁止使用swap分区,只有当内存或硬盘不够用的时候才会使用这个分区,否则不会去使用。
    
    #将swap开机自动挂载禁用
    vim /etc/fstab 
    # /swap.img     none    swap    sw      0       0、
    
    #临时关闭 查看swap分区大小
    swapoff -a
    free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3901         312        2917           1         671        3339
    Swap:             0           0           0
    
  • hosts文件 域名通信 

    "所有主机"
    vim /etc/hosts
    192.168.117.251 server1
    192.168.117.252 server2
    192.168.117.253 server3
    #添加对应IP
    

转发IPv4并让iptabel转发桥接流量

通过运行lsmod | grep br_netfilter来验证是否加载br_netfilter 模块

要加载它需要执行sudo modprobe br_netfilter

为了使Linux节点的iptables能够正确查看桥接流量,请在配置中验证是否将其设置为1。

"all server"
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter
# 验证模块是否加载
lsmod | grep br_netfilter
lsmod | grep overlay

# 安装程序需要sysctl参数,参数在重新启动期间保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 无需重新启动即可应用sysctl参数
sudo sysctl --system

在kunbernetes官网中有这么一段话:

注意:Docker引擎没有实现CRI,这是容器运行时与Kubernetes一起工作所必需的。因此,必须安装额外的服务cri dockerd。cri Docker是一个基于遗留内置Docker引擎支持的项目,该支持在版本1.24中从kubelet中删除。

早期的kunbernetes在使用docker调用容器运行时的时候,docker并不能原生的支持kunbernetes,因此在kunbernetes需要维护一个docker shim的服务对docker的api进行调用。为了支持更多的容器运行时的工具kunbernetes在1.24版本将其移除。

image-20220523205410584

早期kunbernetes调用docker流程:

  1. 用户通过kube-apiserver,调用命令创建/删除容器
  2. kubelet通过CRI(Container Runtime Interface/容器运行时接口)无法直接调用docker的容器运行的环境。只能通过访问docker shim这个桥接服务与docker API进行通讯创建/删除容器

docker shim: kubernetes通过CRI与容器进行时通信,而Docker不支持CRI,因此需要在CRI与Docker之间添加一个桥接服务docker-shim进行转换,实现CRI与docker API的通信。

容器运行时:容器运行时就是容器运行的环境

因为早期kunbernetes团队将docker shim集成到kunbernetes中,并对其进行维护。但现在由于有了更多的容器进行时后。不可能单独为dockershim进行维护,所以将其移除为了ci-dockerd。现在我们需要调用docker作为容器的话,必须要额外部署ci-dockerd这个服务。

image-20220523223650419

image-20220523224919215

安装容器运行时

为了在 Pod 中运行容器,Kubernetes 使用容器运行时(负责运行容器的软件)。

默认情况下,Kubernetes 使用容器运行时接口(CRI 用于容器运行时与kubelet集成的API) 与所选容器运行时交互。

如果未指定运行时,kubeadm 会自动尝试通过扫描已知端点列表来检测已安装的容器运行时。

如果检测到多个容器运行时或未检测到容器运行时,kubeadm 将引发错误,并要求您指定要使用的容器运行时。

有关详细信息请参阅容器运行时

**注意:**Docker 引擎不实现 CRI,CRI 是容器运行时与 Kubernetes 配合使用的要求。因此,必须安装一个附加的服务 cri-dockerd。cri-dockerd 是一个基于旧版内置 Docker 引擎支持的项目该支持在 1.24 版中从 kubelet 中删除。

下表包括支持的操作系统的已知容器运行时端点:

Linux:

RuntimePath to Unix domain socket(Unix套接字路径)
containerdunix:///var/run/containerd/containerd.sock
CRI-Ounix:///var/run/crio/crio.sock
Docker Engine (using cri-dockerd)unix:///var/run/cri-dockerd.sock

安装 kubeadm |Kubernetes

容器运行时|Kubernetes

containerd/getting-started.md at main · containerd/containerd (github.com)

Install Docker Engine on Debian | Docker Documentation

这里一直跳,真的很烦人诶。最终竟然跳到了docker engine的安装文档。其实就是配置docker的镜像源,然后安装containerd.io软件包

我把跳转的网址也都写下来,可以帮助理解

这里直接使用阿里云的docker-ce镜像即可😄

docker-ce镜像-docker-ce下载地址-docker-ce安装教程-阿里巴巴开源镜像站 (aliyun.com)

安装containerd容器进行时

  1. 安装一些必要的系统工具

    "all server"
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common'
    
  2. 安装GPG证书

    "all server"
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
  3. 写入软件源信息

    "all server"
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
  4. 安装containerd.io

    "all server"
    sudo apt-get install containerd.io
    
  5. 安装指定版本的containerd.io(可选)

    "all server"
    sudo apt-cache madison containerd.io #查看版本列表
    containerd.io |    1.6.4-1 | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages
    containerd.io |   1.5.11-1 | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages
    containerd.io |   1.5.10-1 | https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal/stable amd64 Packages
    
    "all server"
    #使用第二列中的版本字符串安装特定版本
    sudo apt-get install containerd.io=<VERSION_STRING>
    
  6. 查看uninx套接字路径

    "all server"
    ls /run/containerd/containerd.sock
    /run/containerd/containerd.sock
    

安装ipset及ipvsadm

IPVS-Based In-Cluster Load Balancing Deep Dive | Kubernetes

Kubernetes在V1.10,V1.11版本支持基于ipvs的kube-proxy的代理模式,这种代理模式比iptabels的代理模式要更加优秀

  1. ipvs使用的ipset是一种ip集合的一种方式来处理流量
  2. ipvs支持调度算法

什么是 IPVS ?

IPVS (IP Virtual Server)是在 Netfilter 上层构建的,并作为 Linux 内核的一部分,实现传输层负载均衡。

IPVS 集成在 LVS(Linux Virtual Server,Linux 虚拟服务器)中,它在主机上运行,并在物理服务器集群前作为负载均衡器。IPVS 可以将基于 TCP 和 UDP 服务的请求定向到真实服务器,并使真实服务器的服务在单个IP地址上显示为虚拟服务。 因此,IPVS 自然支持 Kubernetes 服务

为什么为 Kubernetes 选择 IPVS ?

Kube-proxy 是服务路由的构建块,它依赖于经过强化攻击的 iptables 来实现支持核心的服务类型,如 ClusterIP 和 NodePort。 但是,iptables 难以扩展到成千上万的服务,因为它纯粹是为防火墙而设计的,并且基于内核规则列表。

一个例子是,在5000节点集群中使用 NodePort 服务,如果我们有2000个服务并且每个服务有10个 pod,这将在每个工作节点上至少产生20000个 iptable 记录,这可能使内核非常繁忙。

使用基于 IPVS 的集群内服务负载均衡可以为这种情况提供很多帮助。 IPVS 专门用于负载均衡,并使用更高效的数据结构(哈希表),允许几乎无限的规模扩张。

"all server"
apt install ipset ipvsadm -y
#安装ipset和ipvsadm
#ipvsadm可以实现:
#1. 使用命令添加基于TCP一些的集群服务
#2. 在集群中添加若干台后端真实服务器
#3. 实现同一客户端访问,调度器分配固定服务器
#4. 会使用ipvsadm实现规则的增、删、改
#5. 保存ipvsadm规则

#ipset是iptables的扩展
#允许你创建匹配整个地址sets(地址集合)的规则。而不像普通的iptables链是线性的存储和过滤
#ip集合存储在带索引的数据结构中,这种集合比较大也可以进行高效的查找。
"all server"
# 临时生效
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

# 永久生效
mkdir -p /etc/sysconfig/modules
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr  #rr轮询,依次分配。当一台主机获得最高优先级后,就会变为最低优先级
modprobe -- ip_vs_wrr #wrr轮询,设置权重值,在分配过程中优先配置权重值高的
modprobe -- ip_vs_sh  #指定的hash 访问指定节点
modprobe -- nf_conntrack #网络跟踪 最多见的使用场景是 iptables 的 nat nat 根据转发规则修改IP包的源/目标地址,靠nf_conntrack的记录才能让返回的包能路由到发请求的机器。
EOF
#modprobe -- nf_conntrack_ipv4
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules #执行加载内核模块
lsmod | grep -e ip_vs -e nf_conntrack #查看加载的ipvs和nf_conntrack模块

ERROR

配置ipvs时发生错误modprobe: FATAL: Module nf_conntrack_ipv4 not found.

是因为使用了高内核

在高版本内核已经把modprobe -- nf_conntrack_ipv4 替换为

modprobe -- nf_conntrack

将containerd用作 CRI 运行时

容器运行时|Kubernetes

containerd运行的步骤

生成containerd的配置文件

容器/获取主 started.md ·集装箱/集装箱式 (github.com)

containerd配置文件介绍

containerd/containerd-config.toml.5.md at main · containerd/containerd (github.com)

  1. 由于国内环境原因我们需要将 sandbox_image 镜像源设置为阿里云google_containers镜像源
"all server"
#生成默认配置
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
45  [plugins."io.containerd.grpc.v1.cri"]
61     sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"
#或者
sed -i "s#k8s.gcr.io/pause#registry.aliyuncs.com/google_containers/pause#g"       /etc/containerd/config.toml
  1. 配置镜像加速地址
"all server"
#配置containerd镜像加速地址
  [plugins."io.containerd.tracing.processor.v1.otlp"]
    endpoint = "https://a8x1qfbv.mirror.aliyuncs.com"
    insecure = false
    protocol = ""
#使用的是镜像加速器服务,阿里云镜像站开通

[容器镜像服务 (aliyun.com)](https://cr.console.aliyun.com/cn- hangzhou/instances/mirrors)

containerd/docs at main · containerd/containerd (github.com)

containerd从v1.6.0开始支持OpenTelemetry跟踪。目前仅针对gRPC调用。看不懂,但是改到这里了

  1. 配置 cgroup 驱动程序systemd🔗

    虽然 containerd 和 Kubernetes 默认使用旧版驱动程序来管理 cgroups,但建议在基于 systemd 的主机上使用该驱动程序,以符合 cgroup 的“单编写器”规则

    "all server"
    vim /etc/containerd/config.toml
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
      SystemdCgroup = true
    #或者
    sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
    
  2. 应用所有更改后,重新启动containerd

    "all server"
    systemctl restart containerd && systemctl enable containerd
    
    netstat -anput | grep containerd
    tcp        0      0 127.0.0.1:44607         0.0.0.0:*               LISTEN      25280/containerd
    

现在只是安装了containerd,并未安装ctr命令行.所以无法与containerd命令行界面进行交互

可以选择现在进行单独安装apt install ctr,也可以在安装完kublet后使用由kublet集成的ctr

安装 kubeadm、kubelet 和 kubectl

您将在所有计算机上安装以下软件包:

  • kubeadm:用于引导群集的命令。
  • kubelet:在集群中的所有计算机上运行并执行启动 pod 和容器等操作的组件。
  • kubectl:用于与集群通信的命令行实用程序。

kubeadm 不会为您安装或管理,因此您需要确保它们与您希望 kubeadm 为您安装的 Kubernetes 控制平面的版本相匹配。如果不这样做,则存在发生版本偏差的风险,这可能导致意外的错误行为。但是,支持 kubelet 和控制平面之间的一个次要版本偏差,但 kubelet 版本可能永远不会超过 API 服务器版本。例如,运行 1.7.0 的 kubelet 应该与 1.8.0 API 服务器完全兼容,但反之亦然。有关安装的信息,请参阅安装和设置 kubectl

使用阿里镜像站进行安装Kubernets

kubernetes镜像-kubernetes下载地址-kubernetes安装教程-阿里巴巴开源镜像站 (aliyun.com)

  1. 安装Kunbernets组件
"all server"
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key   add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
"all server"
sudo apt-cache madison [kubelet|kubeadm|kubectl] #查看版本列表
sudo apt-get install [kubelet|kubeadm|kubectl]=  <VERSION_STRING>
  1. 配置命令补全

Linux 系统中的 bash 自动补全功能

[Linux 系统中的 bash 自动补全功能 kublet| Kubernetes] (https://kubernetes.io/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-linux/)

[Kubernetes kubadm命令补全] (https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/generated/kubeadm_completion/)

在 Linux 系统中安装并设置 kubectl | Kubernetes

使用 crictl 对 Kubernetes 节点进行调试 | Kubernetes

"all server"

#临时生效
source <(kubectl completion bash)
source <(kubeadm completion bash)
source <(crictl completion bash)
#永久生效
echo 'source <(kubectl completion bash)' >>~/.bashrc
echo 'source <(kubeadm completion bash)' >>~/.bashrc
echo 'source <(crictl completion bash)' >>~/.bashrc
source /usr/share/bash-completion/bash_completion
source ~/.bashrc
  1. 配置crictl默认的containerd unix端点
root@server1:~# crictl image
WARN[0000] image connect using default endpoints:     [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the   endpoint instead. 
ERRO[0002] connect endpoint 'unix:///var/run/dockershim.sock', make sure you are running as root and the endpoint has been started: context deadline exceeded 
IMAGE               TAG                 IMAGE ID            SIZE

[使用 crictl | 调试 Kubernetes 节点Kubernetes] (https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/#general-usage)

ERROR

这个错误需要指定unix://套接字程序位置

直接编写配置文件/etc/crictl.yaml

#写入
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: true
crictl images
DEBU[0000] get image connection                         
DEBU[0000] connect using endpoint 'unix:///run/containerd/containerd.sock' with '10s' timeout 
DEBU[0000] connected successfully using endpoint: unix:///run/containerd/containerd.sock 
DEBU[0000] ListImagesRequest: &ListImagesRequest{Filter:&ImageFilter{Image:&ImageSpec{Image:,Annotations:map[string]string{},},},} 
DEBU[0000] ListImagesResponse: &ListImagesResponse{Images:[]*Image{},} 

再次查看会输出DEBU,是连接超时。之后又会成功,这里不知道为什么,有的文章说镜像源的问题,我改了一下也没有结果。将超时时间延长也没用。这里不想看到的话就将debug: true改为debug: fales

配置Kubernets集群

使用 kubeadm | 创建集群Kubernetes

使用 kubeadm | 创建集群Kubernetes #更多信息

将 kubeadm init 与配置文件结合使用

kubeadm init |Kubernetes

kubeadm config |Kubernetes

kubeadm config |Kubernetes

跳转顺序

  1. 初始化集群
"server1"
#打印用于kubeadm init的默认初始化配置为文件
kubeadm config print init-defaults > init.yaml
"server1"
#修改配置文件
  12   advertiseAddress: 192.168.117.251 #修改为第一台主机的IP地址
  17   name: server1 #主机的名称
  30 imageRepository: registry.aliyuncs.com/google_containers
  32 kubernetesVersion: 1.24.0 #安装的版本
  35   serviceSubnet: 10.10.0.0/16 #分配的地址
kubeadm init --config=init.yaml
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
#执行安装完成后提示的命令
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
  1. 安装Kunbernets网络插件

    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/
    

    安装插件|Kubernetes

    这里我们使用calico网络,不使用flannel网络,因为flannel网络没有隔离性,安全性不高。

    Calico支持网络策略,根据网络策略进行路由的选择。

    Calico是一家网络和网络策略提供商。Calico支持一组灵活的网络选项,因此您可以根据自己的情况选择最有效的选项,包括无覆盖网络和覆盖网络,无论有无BGP。Calico使用相同的引擎在服务网格层为主机、POD和(如果使用Istio和Envoy)应用程序实施网络策略。

    About Calico (tigera.io)

    Kubernetes (tigera.io)

    Self-managed on-premises (tigera.io)

    Install Calico networking and network policy for on-premises deployments (tigera.io)

    跳转顺序

    根据您的数据存储和节点数量,选择下面的链接以安装 Calico。

    注意Kubernetes API 数据存储选项超过 50 个节点,使用 Typha 守护程序提供扩展。etcd 不包含 Typha,因为 etcd 已经可以处理许多客户端,所以使用 Typha 是多余的,不建议这样做。

    "server1"
    #下载 Kubernetes API 数据存储的 Calico 网络
    curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
    
    "server1"
    vim calico.yaml
    #修改 calico.yaml文件
    
                - name: CALICO_IPV4POOL_CIDR
                  value: "10.10.0.0/16"
    #将其取消注释并修改为init.yaml 中定义的网段地址
    
    "server1"
    kubectl apply -f calico.yaml
    
  2. Node加入集群

    Then you can join any number of worker nodes by running the   following on each as root:
    
    kubeadm join 192.168.117.251:6443 --token   abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash   sha256:f76fdb1684898e7d091d12e10fa59b5fb16bfd01ac5a386c58b29993b707b633
    
    "server2&server3"
    
    kubeadm join 192.168.117.251:6443 --token   abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash   sha256:f76fdb1684898e7d091d12e10fa59b5fb16bfd01ac5a386c58b29993b707b633 --cri-socket=unix:///run/containerd/containerd.sock
    
    #这里需要指定容器运行时的socket路径 默认的话还是回去寻找dockershim
    
    kubectl get nodes
    
    NAME      STATUS     ROLES           AGE   VERSION
    server1   Ready      control-plane   44m   v1.24.0
    server2   NotReady   <none>          63s   v1.24.0
    server3   NotReady   <none>          71s   v1.24.0
    #查看节点信息的话为NotReady 因为从节点需要下载calico镜像构建服务
    kubectl get pod --all-namespaces 
    
    NAMESPACE     NAME                                       READY   STATUS              RESTARTS   AGE
    kube-system   calico-kube-controllers-56cdb7c587-wr2v9   0/1     ContainerCreating   0          17m
    kube-system   calico-node-drb2g                          0/1     Init:1/2            0          2m10s
    kube-system   calico-node-pf259                          1/1     Running             0          17m
    kube-system   calico-node-xtg75                          0/1     PodInitializing     0          2m18s
    kube-system   coredns-74586cf9b6-ct67s                   1/1     Running             0          45m
    kube-system   coredns-74586cf9b6-jwsvz                   1/1     Running             0          45m
    kube-system   etcd-server1                               1/1     Running             0          45m
    kube-system   kube-apiserver-server1                     1/1     Running             0          45m
    kube-system   kube-controller-manager-server1            1/1     Running             0          45m
    kube-system   kube-proxy-8j4xs                           1/1     Running             0          45m
    kube-system   kube-proxy-kzm6c                           1/1     Running             0          2m10s
    kube-system   kube-proxy-vfp4k                           1/1     Running             0          2m18s
    kube-system   kube-scheduler-server1                     1/1     Running             0          45m
    
    #加入集群成功
    kubectl get nodes
    NAME      STATUS   ROLES           AGE     VERSION
    server1   Ready    control-plane   46m     v1.24.0
    server2   Ready    <none>          3m20s   v1.24.0
    server3   Ready    <none>          3m28s   v1.24.0
    
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值