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

方渐鸿 2024-10-11 16:37:01 阅读 54

目录💻

一、前言二、下载依赖配置环境1、配置系统环境1.1、配置桥接网络1.1.1、parallels desktop配置1.1.2、VMware配置

1.2、配置root用户登陆

2、环境配置安装下载2.1、安装ipset和ipvsadm2.2、关闭SWAP分区

3、配置Containerd容器3.1、下载安装Containerd3.2、创建&修改配置文件3.3、启动Containerd&开机自启

4、添加K8S集群组件4.1、修改下载源4.2、安装组件

5、克隆服务器5.1、通过parallels desktop克隆5.2、通过VMware克隆

6、主机配置6.1、设置静态ip6.2、修改主机名6.3、主机名解析ip6.4、时间同步6.5、配置内核转发、网桥过滤配置

三、部署集群1、配置部署k8s集群1.1、集群初始化1.2、准备kubectl配置文件1.2、添加从节点

2、安装k8s网络插件Calico2.1、执行安装tigera-operator2.2、配置custom-resources2.3、错误解达。

四、测试使用1、安装可视化Web工具:Kuboard v31.1、使用kubectl安装(master01节点执行)1.1.2、常见错误

1.2、web配置

2、部署Nginx服务2.1、使用Kuboard部署2.2、使用yaml方式创建

一、前言

因为我只有一台服务器,我使用的是,所有我采用的是通过安装虚拟机的方式实现集群搭建,先把需要的配置环境拉取下来,然后再通过虚拟机的克隆的方式直接把配置克隆到新的服务器上,减少重复下载。

通过在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用户直接登陆的,虽然可以通过<code>sudo su转为root,但每次都要转,也麻烦,可以通过修改配置,让直接通过root用户进行ssh登陆。

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

在这里插入图片描述

修改/etc/ssh/sshd_config文件配置

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

<code>vim /etc/ssh/sshd_config

·

在这里插入图片描述

重制root用户的密码

把root用户的密码改为自己需要的

<code>sudo passwd root

重启ssh服务

service ssh restart

在这里插入图片描述

其他

如果是没有安装ssh命令,可以通过

<code>#更新软件包

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) 中用于网络管理和负载均衡。

首先执行安装

apt-get install ipset ipvsadm

执行的时候需要你输入y确认,确认就行

在这里插入图片描述

然后执行配置 ipvsadm 模块,用于开机自启动的,可以使用<code>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

在这里插入图片描述

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

配置脚本文件

<code>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

通过下面的命令查看是否配置成功

lsmod | grep ip_vs

如下图,就表示加载成功了

在这里插入图片描述

2.2、关闭SWAP分区

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

永久关闭

vim /etc/fstab

打开后,把最后一行/swap.img开头的注释调就行

在这里插入图片描述

修改swap需要重启才能使得配置文件生效,因为现在就需要用,可以直接重启,也可以先临时关闭掉

临时关闭

<code>swapoff -a

查看是否关闭成功

free -m

变0了表示关闭了

在这里插入图片描述

3、配置Containerd容器

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

3.1、下载安装Containerd

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

<code>wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.5-linux-amd64.tar.gz

安装 Containerd

解压后会自动安装到指定位置去

#解压文件

tar xf cri-containerd-1.7.5-linux-amd64.tar.gz -C /

#查看安装

containerd --version

在这里插入图片描述

3.2、创建&修改配置文件

创建配置文件

<code>#创建配置文件目录

mkdir /etc/containerd

#生成默认的配置文件

containerd config default > /etc/containerd/config.toml

#查看是否生成成功

ls /etc/containerd

在这里插入图片描述

修改配置文件

<code>vim /etc/containerd/config.toml

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

在这里插入图片描述

需要137行的<code>false改为true

在这里插入图片描述

修改好后保存退出

3.3、启动Containerd&开机自启

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

<code>systemctl enable --now containerd

验证是否启动成功

systemctl status containerd

在这里插入图片描述

4、添加K8S集群组件

4.1、修改下载源

添加阿里的软件源

<code>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导致的

在这里插入图片描述

把公钥添加到服务器

上面图片箭头的<code>B53DC80D13EDEF05就是你的公钥,需要添加自己的

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

导入之后就会更新成功

apt-get update

在这里插入图片描述

4.2、安装组件

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

<code>kubeadm:创建、升级和管理 Kubernetes 集群kubelet:管理节点上的容器生命周期kubectl:管理和调试 Kubernetes 应用程序

执行安装

安装的时候需要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

在这里插入图片描述

查看是否安装成功

<code>kubeadm version

kubelet --version

kubectl version

锁定版本

安装好后需要需要锁定版本,避免自动更新造成的一些问题

apt-mark hold kubeadm kubelet kubectl

在这里插入图片描述

5、克隆服务器

因为我们是要建立k8s集群嘛,所以需要有三台服务器用做搭建集群,

如果是本身有多台服务器的,并且前面的命令都在全部服务器执行过了的,就可以跳过这一步。

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

5.1、通过parallels desktop克隆

先把服务器关闭

在这里插入图片描述

右击你刚刚下载的好配置依赖的容器,点击克隆

在这里插入图片描述

定义名称,点击确认

重复两次克隆两台从服务器出来

在这里插入图片描述

5.2、通过VMware克隆

克隆

先关闭虚拟机,然后右击点击

在这里插入图片描述

然后一路next确认

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后等待克隆完成,启动

6、主机配置

6.1、设置静态ip

复制配置文件

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

cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak

修改配置文件

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架构的

<code># 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]

配置生效

netplan apply

配置好之后可以ping一下局域网的其他物理机的网络,看是否可以ping通

在这里插入图片描述

6.2、修改主机名

三台服务器分别执行

master01执行

<code>hostnamectl set-hostname master01

worker01执行

hostnamectl set-hostname worker01

worker02执行

hostnamectl set-hostname worker02

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

在这里插入图片描述

6.3、主机名解析ip

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

<code>cat >> /etc/hosts << EOF

192.168.5.53 mater01

192.168.5.54 worker01

192.168.5.55 worker02

EOF

通过WindTerm的频道功能,可以实现同频道中,只要一个页面输入,其他的都会同步输入

在这里插入图片描述

再执行查看是否写入

<code>cat /etc/hosts

在这里插入图片描述

6.4、时间同步

更改时区为上海时区

<code>timedatectl set-timezone Asia/Shanghai

安装ntpdate

ntpdate是一个用于同步系统时钟与NTP服务器的工具

apt-get install ntpdate

通过ntpdate命令同步时间

ntpdate time1.aliyun.com

通过定时任务去实现定时同步

crontab -e

中间会让你选择输入2

在这里插入图片描述

把下面这行加入进去

<code>0 */1 * * * ntpdate time1.aliyun.com

在这里插入图片描述

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

配置依赖模块到 /etc/modules-load.d/k8s.conf,用于实现开启自动加载

overlay: 这是 OverlayFS 的内核模块,用于支持 Docker 和 Kubernetes 等容器化技术。

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

<code>cat << EOF | tee /etc/modules-load.d/k8s.conf

overlay

br_netfilter

EOF

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

modprobe overlay

modprobe br_netfilter

在这里插入图片描述

2. 查看是否启动成功

<code>lsmod | egrep "overlay"

lsmod | egrep "br_netfilter"

在这里插入图片描述

转发配置到k8s.conf文件中

<code>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

加载内核参数:

sysctl --system

然后在查看是否加载成功

sysctl -a | grep ip_forward

net.ipv4.ip_forward = 1net.ipv4.ip_forward_update_priority = 1都变为1了表示加载成功

在这里插入图片描述

三、部署集群

1、配置部署k8s集群

1.1、集群初始化

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

创建kubeadm-config配置文件

把配置文件打印到本地,用于编辑

kubeadm config print init-defaults > kubeadm-config.yaml

在这里插入图片描述

修改文件

修改拉下来的配置文件

<code>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

红色的是修改,绿色的是添加

在这里插入图片描述

重启服务

修改完,分别重启containerd 和 kubelet

<code>systemctl restart containerd

systemctl restart kubelet

下载镜像

下载k8s所需要的镜像到主节点

--image-repository:指定镜像仓库--kubernetes-version:版本号,改为你的k8s版本

kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version v1.28.1

在这里插入图片描述

执行初始化

<code>kubeadm init --config kubeadm-config.yaml

出现下面的,就表示初始化成功了

在这里插入图片描述

1.2、准备kubectl配置文件

添加配置文件

把上面输出的内容在<code>master节点执行一遍

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看节点

kubectl get nodes

在这里插入图片描述

1.2、添加从节点

复制刚刚自己初始化的地址,到从节点执行,也就是另外两个worker02节点

(!!!这个是我的,需要复制自己的)

复制token

<code>kubeadm join 192.168.5.53:6443 --token abcdef.0123456789abcdef \

--discovery-token-ca-cert-hash sha256:55917a9c22cb444e83ce19517b8b9f1856401cf3ca11df4e661978fd9eed222e

在这里插入图片描述

查看

在到主节点进行查看

<code>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

下载

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

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

在这里插入图片描述

查看是否安装成功<code>tigera-operator

kubectl get ns

查看pod状态

如果是Runing 状态就代表成功了,如果不是就代表有问题

kubectl get pods -n tigera-operator

在这里插入图片描述

2.2、配置custom-resources

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

先拉取下来

<code>wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/custom-resources.yaml

修改配置

修改配置网段,这个网段是前面初始化时设置的podSubnet的网段 cidr: 10.244.0.0/16

vim custom-resources.yaml

在这里插入图片描述

拉取镜像

因为一些原因,选择不能下载,需要通过一些大佬弄的映射加速仓库去拉。

!!!全部节点都要拉取。

如果下面的地址不行,可以到里面去找最新的

https://github.com/DaoCloud/public-image-mirror/issues/2328

<code>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

在这里插入图片描述

查看是否下次完成

<code>ctr image list

要确保全部都是application/vnd.docker.distribution.manifest.list.v2+json没有出现 Init:ErrImagePull

在这里插入图片描述

应用配置

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

<code>kubectl create -f custom-resources.yaml

查看命名空间

kubectl get ns

看到calico-system代表ok了

在这里插入图片描述

查看pod

<code>kubectl get pods -n calico-system

大概等个几分钟,都是 Runing,代表成功

在这里插入图片描述

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

<code>kubectl get nodes

在这里插入图片描述

到这一步,说明就是全部安装完成了

2.3、错误解达。

如果哪个节点有问题

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

<code>#重置 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

下载配置文件

wget https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

执行创建

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

分别把地址放入下面对应的地方

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

继续执行部署

<code>kubectl apply -f vim kuboard-v3-swr.yaml

查看部署

kubectl get pods -n kuboard

都是Running即可

在这里插入图片描述

web测试

在浏览器打开链接<code>http://节点IP:30080

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

用户名: admin密码: Kuboard123

在这里插入图片描述

1.1.2、常见错误

通过<code>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。

在这里插入图片描述

<code>kuboard-v3-xxxxx 的容器出现 CrashLoopBackOff 的状态,可能的原因有

需要执行

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

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

1.2、web配置

刚进去会有一个错误的集群,删除掉,点击添加集群

在这里插入图片描述

输入集群名称和描述

在这里插入图片描述

复制kubeConfig

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

在这里插入图片描述

如图显示,代表成功

在这里插入图片描述

2、部署Nginx服务

2.1、使用Kuboard部署

在首页点击集群,选择命名空间

在这里插入图片描述

填写信息

左边选择,名称空间>常用操作>创建工作负载,然后再填写基本信息

在这里插入图片描述

填写容器信息

阿里云镜像地址

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

如果镜像拉取不下来可以看我【docker镜像加速服务搭建】这篇文章,自己搭建一个加速服务

填写好之后点击上面的保存>应用>确认>

在这里插入图片描述

在这里插入图片描述

查看

在这里插入图片描述

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

在这里插入图片描述

2.2、使用yaml方式创建

创建yaml

<code>vim nginx-deployment.yaml

编写配置

---

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

应用配置

kubectl apply -f nginx-deployment.yaml

检查是否成功

查看pod

kubectl get pods

查看service

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

kubectl get service

查看访问ip

curl http://10.244.5.3

curl http://10.244.30.69

在这里插入图片描述

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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。