【2024】k8s集群 图文详细 部署安装使用(两万字)

一、前言

因为我只有一台服务器,我使用的是,所有我采用的是通过安装虚拟机的方式实现集群搭建,先把需要的配置环境拉取下来,然后再通过虚拟机的克隆的方式直接把配置克隆到新的服务器上,减少重复下载。
通过在ubuntu服务器上安装VMware和在MAC上安装parallels desktop都有部署成功,安装虚拟机的实体机配置内存需要够,并且需要可以连接🛜,因为需要下载一些配置依赖,因为是安装k8s集群需要安装三台ubuntu容器。当然如果是有多台服务器的话直接把安装命令都执行一遍就行

下面是我使用的配置:

信息配置
节点主机Ubuntu20.4 / 22.4
K8S版本1.28.1
配置三台集群(内存:2G、磁盘:30G)
SSH连接工具WindTerm / Tabby
宿主机Ubuntu24.4 / M2
虚拟机工具VMWaer / parallels desktop

ubuntu镜像(注意看后缀arm是 苹果的Apple M,Intel 的用amd): https://pan.baidu.com/s/16f1lzIqFOHlsyfzVV3lv9A?pwd=5p8a 提取码: 5p8a

WindTerm(ssh连接工具下载地址):https://github.com/kingToolbox/WindTerm/releases

二、下载依赖配置环境

1、配置系统环境

1.1、配置桥接网络

因为我们实际开发中肯定是把k8s部署在服务器上的嘛,所以需要把虚拟机内服务器的网络改为同物理机在同一网段的。所以需要在 “桥接网络”选项下的列表中选择虚拟机将要桥接的物理适配器。否则同一局域网的其他物理机都没法范围到这些虚拟机的ip

1.1.1、parallels desktop配置
  • 右击对应的虚拟机,点击配置,选择硬件中的网络,修改源为桥接网络中的默认适配器,如果有多个网络,则直接选择你想要用于外部连接的那个网络就行
    在这里插入图片描述
  • 通过ifconfig命令查看ip是否改为了外表局域网同一网段了
    在这里插入图片描述
1.1.2、VMware配置
  • 先点击网络适配器
    在这里插入图片描述

  • 选择第一个,然后保存退出
    在这里插入图片描述

  • 再右击每个主机服务器,点击设置(Settings)

    在这里插入图片描述

  • 选择网络,选择桥接网络,点击确认保存,然后就可以到对应的主机查看IP了
    在这里插入图片描述

1.2、配置root用户登陆

在创建虚拟机的时候需要先添加ssh连接,但我们创建后,是不能直接用root用户直接登陆的,虽然可以通过sudo su转为root,但每次都要转,也麻烦,可以通过修改配置,让直接通过root用户进行ssh登陆。

  1. 首先通过ssh工具连接上虚拟机,账号密码就是我们创建的时候设置的那个账号,然后通过sudo su切换为root管理员用户
    在这里插入图片描述

  2. 修改/etc/ssh/sshd_config文件配置
    修改下面ssh的配置文件的,34行左右的位置(右下角可以看行数),把标注的三行的注释打开,并且把第34行改为 yes

    vim /etc/ssh/sshd_config
    

    ·在这里插入图片描述

  3. 重制root用户的密码
    把root用户的密码改为自己需要的

    sudo passwd root
    
  4. 重启ssh服务

    service ssh restart
    

    在这里插入图片描述

  5. 其他
    如果是没有安装ssh命令,可以通过

    #更新软件包
    sudo apt update
    #安装ssh
    sudo apt install openssh-server
    #安装ifconfig命令包(刚创建的虚拟机可能会没有)
    sudo apt install net-tools
    

2、环境配置安装下载

下面的步骤,如果是使用的下面的WindTerm的截图代表是集群的每个容器都需要执行的,如果是使用的上面的tabby的截图代表是只有master节点需要执行就行。
因为他们的配置一样,我免得都下载一遍,所以我直接一个下载好,然后通过克隆的方式直接克隆到其他的节点去,这样也避免出现一些不一样的东西

2.1、安装ipset和ipvsadm

它们在 Kubernetes (k8s) 中用于网络管理和负载均衡。

  1. 首先执行安装

    apt-get install ipset ipvsadm
    

    执行的时候需要你输入y确认,确认就行
    在这里插入图片描述

  2. 然后执行配置 ipvsadm 模块,用于开机自启动的,可以使用vi /etc/modules-load.d/ipvs.conf查看是否配置成功

    cat << EOF | tee /etc/modules-load.d/ipvs.conf
    ip_vs
    ip_vs_rr
    ip_vs_wrr
    ip_vs_sh
    nf_conntrack
    EOF
    
    

    在这里插入图片描述

  3. 因为本次也需要启动,所以需要在配置一个脚本用于本次启动的
    配置脚本文件

    cat << EOF | tee ipvs.sh
    #!/bin/sh
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack
    EOF
    

    执行刚刚创建的脚本

    sh ipvs.sh
    
  4. 通过下面的命令查看是否配置成功

    lsmod | grep ip_vs
    

    如下图,就表示加载成功了在这里插入图片描述

2.2、关闭SWAP分区

直接通过修改/etc/fstab文件,永久关闭SWAP分区,避免重启时打开

  • 永久关闭

    vim /etc/fstab
    

    打开后,把最后一行/swap.img开头的注释调就行
    在这里插入图片描述
    修改swap需要重启才能使得配置文件生效,因为现在就需要用,可以直接重启,也可以先临时关闭掉

  • 临时关闭

    swapoff -a
    
  • 查看是否关闭成功

    free -m
    

    变0了表示关闭了在这里插入图片描述

3、配置Containerd容器

Containerd 在 Kubernetes 中扮演了容器运行时的角色,负责创建、管理和运行容器,提供了一个标准的容器运行时环境和安全特性。

3.1、下载安装Containerd

  1. 下载Containerd,因为是在github上所以如果没有外网可能会下载不成功,我上面的百度网盘有放下载好的(注意看后缀arm是 苹果的Apple M,Intel 的用amd),直接导入到服务器里面去就行,如果自己下载也是,别下载错了

    wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.5-linux-amd64.tar.gz
    
  2. 安装 Containerd
    解压后会自动安装到指定位置去

    #解压文件
    tar xf cri-containerd-1.7.5-linux-amd64.tar.gz  -C /
    #查看安装
    containerd --version
    
    

    在这里插入图片描述

3.2、创建&修改配置文件

  1. 创建配置文件

    #创建配置文件目录
    mkdir /etc/containerd
    #生成默认的配置文件
    containerd config default > /etc/containerd/config.toml
    #查看是否生成成功
    ls /etc/containerd
    

    在这里插入图片描述

  2. 修改配置文件

    vim /etc/containerd/config.toml
    
  • 修改第65行sanbox_image的值改为registry.aliyuncs.com/google_containers/pause:3.9,改为阿里的镜像地址和版本号。(镜像地址也可以不修改,只需要修改版本号也行,需要和后面–>8.1、集群初始化介绍的kubeadm-config.yaml文件的一致就行)
    在这里插入图片描述

  • 需要137行的false改为true

    在这里插入图片描述
    修改好后保存退出

3.3、启动Containerd&开机自启

  • 执行开机启动,并且现在就启动

    systemctl enable --now containerd
    
  • 验证是否启动成功

    systemctl status containerd
    

    在这里插入图片描述

4、添加K8S集群组件

4.1、修改下载源

  • 添加阿里的软件源

    echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
    
  • 验证是否添加成功

    ls /etc/apt/sources.list.d
    
  • 更新软件源

    apt-get update
    

    这个时候会失败,因为没有公钥,缺少 GPG 的key导致的
    在这里插入图片描述

  • 把公钥添加到服务器
    上面图片箭头的B53DC80D13EDEF05就是你的公钥,需要添加自己的

    apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
    

    导入之后就会更新成功

    apt-get update
    

    在这里插入图片描述

4.2、安装组件

下面三个是k8s必要的组件,

  • kubeadm:创建、升级和管理 Kubernetes 集群
  • kubelet:管理节点上的容器生命周期
  • kubectl:管理和调试 Kubernetes 应用程序
  1. 执行安装
    安装的时候需要y,y就行
    apt-get install kubeadm=1.28.1-00  kubelet=1.28.1-00 kubectl=1.28.1-00
    

上面是我安装的版本,如果想安装其他版本可以用下面的命令查看,如果不加版本号,会下载最新的

  • 查看版本

    apt-cache madison kubeadm
    apt-cache madison kubelet
    apt-cache madison kubectl
    
    

    在这里插入图片描述

  • 查看是否安装成功

    kubeadm version
    kubelet --version
    kubectl version
    
    
  1. 锁定版本
    安装好后需要需要锁定版本,避免自动更新造成的一些问题

    apt-mark hold kubeadm kubelet kubectl
    
    

    在这里插入图片描述

5、克隆服务器

因为我们是要建立k8s集群嘛,所以需要有三台服务器用做搭建集群,
如果是本身有多台服务器的,并且前面的命令都在全部服务器执行过了的,就可以跳过这一步。

克隆服务器在VMware和parallels desktop执行都比较简单

5.1、通过parallels desktop克隆

  1. 先把服务器关闭
    在这里插入图片描述
  2. 右击你刚刚下载的好配置依赖的容器,点击克隆
    在这里插入图片描述
  3. 定义名称,点击确认
    重复两次克隆两台从服务器出来
    在这里插入图片描述

5.2、通过VMware克隆

  1. 克隆
    先关闭虚拟机,然后右击点击
    在这里插入图片描述

  2. 然后一路next确认
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    然后等待克隆完成,启动

6、主机配置

6.1、设置静态ip

  1. 复制配置文件
    避免配置错了无法恢复。可能有些版本的配置文件不是叫00-installer-config.yaml这个名字,反正修改/etc/netplan下的那个文件就行

    cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
    
  2. 修改配置文件

    vim /etc/netplan/00-installer-config.yaml
    
  • 配置文件(三台虚拟机服务器都需要配置本虚拟机的ip)
    需要修改下面文件的addresses: [192.168.5.55/24]via: 192.168.5.1,!!!注意不要有多余空格

    • addresses需要把ip改为本服务器的
    • via:网段改为自己的,网段通过route -n命令查看
      在这里插入图片描述
  • 安装的arm架构的

    # This is the network config written by 'subiquity'
    network:
      version: 2
      ethernets:
        enp0s5:
          dhcp4: no
          addresses: [192.168.5.55/24]
          routes:
            - to: default
              via: 192.168.5.1
          nameservers:
            addresses: [119.29.29.29,114.114.114.114,8.8.8.8]
    
    
  • 安装的amd架构的

    network:
      version: 2
      renderer: networkd
      ethernets:
        ens33:
          dhcp4: no
          addresses:
            - 192.168.3.170/24
          routes:
            - to: default
              via: 192.168.3.1
          nameservers:
            addresses: [119.29.29.29,114.114.114.114,8.8.8.8]          
    
  1. 配置生效

    netplan apply
    

    配置好之后可以ping一下局域网的其他物理机的网络,看是否可以ping通
    在这里插入图片描述

6.2、修改主机名

三台服务器分别执行

  • master01执行

    hostnamectl set-hostname master01
    
  • worker01执行

    hostnamectl set-hostname worker01
    
  • worker02执行

    hostnamectl set-hostname worker02
    

    然后exit退出当前用户,在重新登陆一下就可以了,可以看名字都一句以及已经改为了对应的名字在这里插入图片描述

6.3、主机名解析ip

全部都需要执行(!!!!这个要改为自己集群的主机ip

cat >> /etc/hosts << EOF
192.168.5.53 mater01
192.168.5.54 worker01
192.168.5.55 worker02
EOF

通过WindTerm的频道功能,可以实现同频道中,只要一个页面输入,其他的都会同步输入
在这里插入图片描述
再执行查看是否写入

cat /etc/hosts

在这里插入图片描述

6.4、时间同步

  1. 更改时区为上海时区

    timedatectl set-timezone Asia/Shanghai
    
  2. 安装ntpdate
    ntpdate是一个用于同步系统时钟与NTP服务器的工具

    apt-get install ntpdate
    
  3. 通过ntpdate命令同步时间

    ntpdate time1.aliyun.com
    
  4. 通过定时任务去实现定时同步

    crontab -e
    

    中间会让你选择输入2
    在这里插入图片描述
    把下面这行加入进去

    0 */1 * * * ntpdate time1.aliyun.com
    

    在这里插入图片描述

6.5、配置内核转发、网桥过滤配置

  1. 配置依赖模块到 /etc/modules-load.d/k8s.conf,用于实现开启自动加载
  • overlay: 这是 OverlayFS 的内核模块,用于支持 Docker 和 Kubernetes 等容器化技术。

  • br_netfilter: 这是 Linux 内核中的网桥过滤器模块,用于支持 Kubernetes 的网络功能。

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

    配置完成之后,本次启动这两个配置,因为配置上配置后期开机启动的,当下也需要先启动

    modprobe overlay
    
    modprobe br_netfilter
    

    在这里插入图片描述
    2. 查看是否启动成功

    lsmod | egrep "overlay"
    
    lsmod | egrep "br_netfilter"
    

    在这里插入图片描述

  1. 转发配置到k8s.conf文件中

    cat << EOF | tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    
  2. 加载内核参数:

    sysctl --system
    
  3. 然后在查看是否加载成功

    sysctl -a | grep ip_forward
    

    net.ipv4.ip_forward = 1net.ipv4.ip_forward_update_priority = 1都变为1了表示加载成功在这里插入图片描述

三、部署集群

1、配置部署k8s集群

1.1、集群初始化

下面的只需要master节点的主机执行,其他的两个从机不用执行

  1. 创建kubeadm-config配置文件
    把配置文件打印到本地,用于编辑
    kubeadm config print init-defaults > kubeadm-config.yaml
    
    在这里插入图片描述
  2. 修改文件
    修改拉下来的配置文件
    vim kubeadm-config.yaml
    
  • 修改advertiseAddress的ip为mater01节点的ip

  • 修改name为mater01节点的主机名

  • 修改imageRepository仓库地址为阿里云的镜像仓库registry.aliyuncs.com/google_containers。因为前面/etc/containerd/config.toml文件修改了,如果前面的文件镜像仓库地址没修改,这个地方也可以不修改

  • 修改kubernetesVersion版本号,前面下载的是什么版本就写什么版本

  • dnsDomain表示DNS域名,可以不修改,但一个局域网内只能有一个相同的,如果有两个k8s集群用的一样的DNS名字就会冲突,一般推荐修改为公司的域名

  • networking中的 serviceSubnet 后面添加

    podSubnet: 10.244.0.0/16
    
  • 在最后面在添加下面的配置

    ---
    kind: KubeletConfiguration
    apiVersion: kubelet.config.k8s.io/v1beta1
    cgroupDriver: systemd
    

    红色的是修改,绿色的是添加
    在这里插入图片描述

  1. 重启服务
    修改完,分别重启containerd 和 kubelet

    systemctl restart containerd
    systemctl restart kubelet
    
  2. 下载镜像
    下载k8s所需要的镜像到主节点

  • --image-repository:指定镜像仓库
  • --kubernetes-version:版本号,改为你的k8s版本
    kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version v1.28.1
    
    在这里插入图片描述
  1. 执行初始化

    kubeadm init --config kubeadm-config.yaml
    

    出现下面的,就表示初始化成功了
    在这里插入图片描述

1.2、准备kubectl配置文件

  1. 添加配置文件
    把上面输出的内容在master节点执行一遍

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  2. 查看节点

    kubectl get nodes
    

    在这里插入图片描述

1.2、添加从节点

复制刚刚自己初始化的地址,到从节点执行,也就是另外两个worker02节点
(!!!这个是我的,需要复制自己的)

  1. 复制token

    kubeadm join 192.168.5.53:6443 --token abcdef.0123456789abcdef \
            --discovery-token-ca-cert-hash sha256:55917a9c22cb444e83ce19517b8b9f1856401cf3ca11df4e661978fd9eed222e
    

    在这里插入图片描述

  2. 查看
    在到主节点进行查看

    kubectl get nodes
    

    在查看,就可以看到刚刚加入的worker节点了
    在这里插入图片描述

2、安装k8s网络插件Calico

k8s常用的网络插件主要有

  • Flannel:Flannel是Kubernetes官方推荐的网络插件之一。它提供了一种基于UDP的网络通信方式,支持多租户和多网段。
  • Calico:Calico是另一个流行的K8S网络插件。它提供了一种基于BGP的网络通信方式,支持多租户和多网段。
  • Weave:Weave是一种基于 Overlay 网络的K8S网络插件。它提供了一种简单易用的方式来管理集群中的网络通信。
  • Cilium:Cilium是一种基于 Linux 内核的K8S网络插件。它提供了一种高性能的网络通信方式,支持多租户和多网段。
  • OpenVSwitch:OpenVSwitch是一种基于开源的K8S网络插件。它提供了一种高性能的网络通信方式,支持多租户和多网段。

2.1、执行安装tigera-operator

  1. 下载
    我这安装的是3.26.1,如果需要安装其他版本,直接改版本号就行,其他目录都是一样的

    kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/tigera-operator.yaml
    

    在这里插入图片描述

  2. 查看是否安装成功tigera-operator

    kubectl get ns
    
  3. 查看pod状态
    如果是Runing 状态就代表成功了,如果不是就代表有问题

    kubectl get pods -n tigera-operator
    

    在这里插入图片描述

2.2、配置custom-resources

custom-resources.yaml 是一个用于配置 Kubernetes 的自定义资源定义(CRD)文件

  1. 先拉取下来

    wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml
    
  2. 修改配置
    修改配置网段,这个网段是前面初始化时设置的podSubnet的网段 cidr: 10.244.0.0/16

    vim custom-resources.yaml
    

    在这里插入图片描述

  3. 拉取镜像
    因为一些原因,选择不能下载,需要通过一些大佬弄的映射加速仓库去拉。
    !!!全部节点都要拉取。
    如果下面的地址不行,可以到里面去找最新的
    https://github.com/DaoCloud/public-image-mirror/issues/2328

    ctr image pull docker.1panel.live/calico/cni:v3.26.1
    ctr image pull docker.1panel.live/calico/pod2daemon-flexvol:v3.26.1
    ctr image pull docker.1panel.live/calico/node:v3.26.1
    ctr image pull docker.1panel.live/calico/kube-controllers:v3.26.1
    ctr image pull docker.1panel.live/calico/typha:v3.26.1
    ctr image pull docker.1panel.live/calico/node-driver-registrar:v3.26.1
    ctr image pull docker.1panel.live/calico/csi:v3.26.1
    

    在这里插入图片描述

  4. 查看是否下次完成

    ctr image list
    

    要确保全部都是application/vnd.docker.distribution.manifest.list.v2+json没有出现 Init:ErrImagePull
    在这里插入图片描述

  5. 应用配置
    下载完成之后执行下面命令,应用配置

    kubectl create -f custom-resources.yaml
    
  6. 查看命名空间

    kubectl get ns
    

    看到calico-system代表ok了
    在这里插入图片描述

  • 查看pod

    kubectl get pods -n calico-system
    

    大概等个几分钟,都是 Runing,代表成功在这里插入图片描述

  • 再查看节点信息,就会发现状态已经变成 Ready 状态

    kubectl get nodes
    

    在这里插入图片描述到这一步,说明就是全部安装完成了

2.3、错误解达。

如果哪个节点有问题
执行下面命令直接删除掉k8s相关的东西,然后重新安装三个组件,在去重新通过链接加入就行。

#重置 Kubernetes 集群,它会删除所有与 Kubernetes 相关的配置文件、数据和组件。
sudo kubeadm reset
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/*
rm -rf /root/.kube
rm -rf /etc/kubernetes/*

ipvsadm -C
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

四、测试使用

1、安装可视化Web工具:Kuboard v3

1.1、使用kubectl安装(master01节点执行)

发生错误可以查看kuboard官网
https://press.demo.kuboard.cn/install/v3/install-in-k8s.html

  1. 下载配置文件

    wget  https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
    
  2. 执行创建

    kubectl apply -f vim kuboard-v3-swr.yaml
    

    如果镜像拉取不下来可以修改下镜像仓库地址改为我的阿里云的进行仓库地址

    vim kuboard-v3-swr.yaml
    
    # 地址:
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/kuboard-agent
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/etcd-host:3.4.16-1
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/kuboard:v3
    registry.cn-hangzhou.aliyuncs.com/zhengfp_images/questdb:6.0.4
    

    分别把地址放入下面对应的地方
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    继续执行部署

    kubectl apply -f vim kuboard-v3-swr.yaml
    
  3. 查看部署

    kubectl get pods -n kuboard
    

    都是Running即可在这里插入图片描述

  4. web测试

  • 在浏览器打开链接http://节点IP:30080

  • 输入初始用户名和密码,并登录

    • 用户名: admin
    • 密码: Kuboard123
      在这里插入图片描述
1.1.2、常见错误

通过kubectl get pods -n kuboard查看pod,看哪个pod不成功
查看对应的错误
powershell kubectl logs kuboard-v3-7979bc788f-hln74 -n kuboard

  • desc = "transport: Error while dialing dial tcp: missing address"错误表明 Kuboard 无法连接到 etcd。
    在这里插入图片描述
  • kuboard-v3-xxxxx 的容器出现 CrashLoopBackOff 的状态,可能的原因有
    需要执行

前面两个错误都是执行下面的命令

kubectl label nodes mater01 k8s.kuboard.cn/role=etcd

1.2、web配置

  1. 刚进去会有一个错误的集群,删除掉,点击添加集群
    在这里插入图片描述

  2. 输入集群名称和描述
    在这里插入图片描述

  3. 复制kubeConfig
    在master01节点执行cat ~/.kube/config命令,把全部内容复制到kubeConfig框内,点击确认

    在这里插入图片描述
    如图显示,代表成功
    在这里插入图片描述

2、部署Nginx服务

2.1、使用Kuboard部署

  1. 在首页点击集群,选择命名空间
    在这里插入图片描述

  2. 填写信息
    左边选择,名称空间>常用操作>创建工作负载,然后再填写基本信息
    在这里插入图片描述

  3. 填写容器信息
    阿里云镜像地址

    registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
    

    填写好之后点击上面的保存>应用>确认>在这里插入图片描述
    在这里插入图片描述

  4. 查看
    在这里插入图片描述

5.访问对应的节点进行测试

在这里插入图片描述

2.2、使用yaml方式创建

  1. 创建yaml

    vim nginx-deployment.yaml
    
  2. 编写配置

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginxweb # 部署的名称
    spec:
      replicas: 2  # 设置副本数量为2
      selector:
        matchLabels:
          app: nginxweb1 # 用于选择匹配的Pod标签
      template:
        metadata:
          labels:
            app: nginxweb1 # Pod的标签
        spec:
          containers:
          - name: nginxwebc # 容器名称
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest # 镜像拉取地址,换成阿里云的,不然会拉取失败
            imagePullPolicy: IfNotPresent # 镜像拉取策略,如果本地没有就拉取
            ports:
            - containerPort: 80 # 容器内部监听的端口
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginxweb-service # 服务的名称
    spec:
      externalTrafficPolicy: Cluster # 外部流量策略设置为集群
      selector:
        app: nginxweb1 # 用于选择匹配的Pod标签
      ports:
      - protocol: TCP # 使用TCP协议
        port: 80 # 服务暴露的端口
        targetPort: 80 # Pod中容器的端口
        nodePort: 30080 # 在每个Node上分配的端口,用于外部访问
      type: NodePort # 服务类型,使用NodePort
    
  3. 应用配置

    kubectl apply -f nginx-deployment.yaml
    
  4. 检查是否成功

  • 查看pod

    kubectl get pods
    
  • 查看service

    service 可以查看到对应pod的名称还有端口映射

    kubectl get service
    
  • 查看访问ip

    curl http://10.244.5.3
    curl http://10.244.30.69
    
    

    在这里插入图片描述

  1. 通过对应的节点IP进行测试

⌨️码字不易,觉得可以的话可以一键三连一下!!!

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值