因为我只有一台服务器,我使用的是,所有我采用的是通过安装虚拟机的方式实现集群搭建,先把需要的配置环境拉取下来,然后再通过虚拟机的克隆的方式直接把配置克隆到新的服务器上,减少重复下载。
通过在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
因为我们实际开发中肯定是把k8s部署在服务器上的嘛,所以需要把虚拟机内服务器的网络改为同物理机在同一网段的。所以需要在 “桥接网络”选项下的列表中选择虚拟机将要桥接的物理适配器。否则同一局域网的其他物理机都没法范围到这些虚拟机的ip
在创建虚拟机的时候需要先添加ssh连接,但我们创建后,是不能直接用root用户直接登陆的,虽然可以通过sudo su
转为root,但每次都要转,也麻烦,可以通过修改配置,让直接通过root用户进行ssh登陆。
sudo su
切换为root管理员用户
1 |
vim /etc/ssh/sshd_config |
1 |
sudo passwd root |
1 |
service ssh restart |
1 2 3 4 5 6 |
#更新软件包 sudo apt update #安装ssh sudo apt install openssh-server #安装ifconfig命令包(刚创建的虚拟机可能会没有) sudo apt install net-tools |
下面的步骤,如果是使用的下面的WindTerm的截图代表是集群的每个容器都需要执行的,如果是使用的上面的tabby的截图代表是只有master节点需要执行就行。
因为他们的配置一样,我免得都下载一遍,所以我直接一个下载好,然后通过克隆的方式直接克隆到其他的节点去,这样也避免出现一些不一样的东西
它们在 Kubernetes (k8s) 中用于网络管理和负载均衡。
1 |
apt-get install ipset ipvsadm |
执行的时候需要你输入y
确认,确认就行
vi /etc/modules-load.d/ipvs.conf
查看是否配置成功
1 2 3 4 5 6 7 |
cat << EOF | tee /etc/modules-load.d/ipvs.conf ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack EOF |
1 2 3 4 5 6 7 8 |
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 |
执行刚刚创建的脚本
1 |
sh ipvs.sh |
1 |
lsmod | grep ip_vs |
如下图,就表示加载成功了
直接通过修改/etc/fstab
文件,永久关闭SWAP分区,避免重启时打开
1 |
vim /etc/fstab |
打开后,把最后一行/swap.img
开头的注释调就行
修改swap需要重启才能使得配置文件生效,因为现在就需要用,可以直接重启,也可以先临时关闭掉
1 |
swapoff -a |
1 |
free -m |
变0了表示关闭了
Containerd 在 Kubernetes 中扮演了容器运行时的角色,负责创建、管理和运行容器,提供了一个标准的容器运行时环境和安全特性。
1 |
wget https://github.com/containerd/containerd/releases/download/v1.7.5/cri-containerd-1.7.5-linux-amd64.tar.gz |
1 2 3 4 |
#解压文件 tar xf cri-containerd-1.7.5-linux-amd64.tar.gz -C / #查看安装 containerd --version |
1 2 3 4 5 6 |
#创建配置文件目录 mkdir /etc/containerd #生成默认的配置文件 containerd config default > /etc/containerd/config.toml #查看是否生成成功 ls /etc/containerd |
1 |
vim /etc/containerd/config.toml |
registry.aliyuncs.com/google_containers/pause:3.9
,改为阿里的镜像地址和版本号。(镜像地址也可以不修改,只需要修改版本号也行,需要和后面–>8.1、集群初始化介绍的kubeadm-config.yaml
文件的一致就行)false
改为true
1 |
systemctl enable --now containerd |
1 2 |
systemctl status containerd |
1 2 3 |
<span class="token function">echo</span> <span class="token string">"deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"</span> <span class="token punctuation">|</span> sudo <span class="token function">tee</span> <span class="token operator">/</span>etc/apt/sources<span class="token punctuation">.</span>list<span class="token punctuation">.</span>d/kubernetes<span class="token punctuation">.</span>list |
1 2 |
<span class="token function">ls</span> <span class="token operator">/</span>etc/apt/sources<span class="token punctuation">.</span>list<span class="token punctuation">.</span>d |
1 2 |
apt-get update |
这个时候会失败,因为没有公钥,缺少 GPG 的key导致的
B53DC80D13EDEF05
就是你的公钥,需要添加自己的
1 2 |
apt-key adv <span class="token operator">--</span>recv-keys <span class="token operator">--</span>keyserver keyserver<span class="token punctuation">.</span>ubuntu<span class="token punctuation">.</span>com B53DC80D13EDEF05 |
导入之后就会更新成功
1 2 |
apt-get update |
下面三个是k8s必要的组件,
kubeadm
:创建、升级和管理 Kubernetes 集群kubelet
:管理节点上的容器生命周期kubectl
:管理和调试 Kubernetes 应用程序
1 2 |
apt-get install kubeadm=1<span class="token punctuation">.</span>28<span class="token punctuation">.</span>1-00 kubelet=1<span class="token punctuation">.</span>28<span class="token punctuation">.</span>1-00 kubectl=1<span class="token punctuation">.</span>28<span class="token punctuation">.</span>1-00 |
上面是我安装的版本,如果想安装其他版本可以用下面的命令查看,如果不加版本号,会下载最新的
1 2 3 4 5 |
apt-cache madison kubeadm apt-cache madison kubelet apt-cache madison kubectl |
1 2 3 4 5 |
kubeadm version kubelet <span class="token operator">--</span>version kubectl version |
1 2 3 |
apt-mark hold kubeadm kubelet kubectl |
因为我们是要建立k8s集群嘛,所以需要有三台服务器用做搭建集群,
如果是本身有多台服务器的,并且前面的命令都在全部服务器执行过了的,就可以跳过这一步。
克隆服务器在VMware和parallels desktop执行都比较简单
00-installer-config.yaml
这个名字,反正修改/etc/netplan
下的那个文件就行
1 2 |
<span class="token function">cp</span> <span class="token operator">/</span>etc/netplan/00-installer-config<span class="token punctuation">.</span>yaml <span class="token operator">/</span>etc/netplan/00-installer-config<span class="token punctuation">.</span>yaml<span class="token punctuation">.</span>bak |
1 2 |
vim <span class="token operator">/</span>etc/netplan/00-installer-config<span class="token punctuation">.</span>yaml |
addresses: [192.168.5.55/24]
和via: 192.168.5.1
,!!!注意不要有多余空格
route -n
命令查看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="token comment"># This is the network config written by 'subiquity'</span> <span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">enp0s5</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> no <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>192.168.5.55/24<span class="token punctuation">]</span> <span class="token key atrule">routes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> default <span class="token key atrule">via</span><span class="token punctuation">:</span> 192.168.5.1 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>119.29.29.29<span class="token punctuation">,</span>114.114.114.114<span class="token punctuation">,</span>8.8.8.8<span class="token punctuation">]</span> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="token key atrule">network</span><span class="token punctuation">:</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token number">2</span> <span class="token key atrule">renderer</span><span class="token punctuation">:</span> networkd <span class="token key atrule">ethernets</span><span class="token punctuation">:</span> <span class="token key atrule">ens33</span><span class="token punctuation">:</span> <span class="token key atrule">dhcp4</span><span class="token punctuation">:</span> no <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> 192.168.3.170/24 <span class="token key atrule">routes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token key atrule">to</span><span class="token punctuation">:</span> default <span class="token key atrule">via</span><span class="token punctuation">:</span> 192.168.3.1 <span class="token key atrule">nameservers</span><span class="token punctuation">:</span> <span class="token key atrule">addresses</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>119.29.29.29<span class="token punctuation">,</span>114.114.114.114<span class="token punctuation">,</span>8.8.8.8<span class="token punctuation">]</span> |
1 2 |
netplan apply |
三台服务器分别执行
1 2 |
hostnamectl <span class="token function">set-hostname</span> master01 |
1 2 |
hostnamectl <span class="token function">set-hostname</span> worker01 |
1 2 |
hostnamectl <span class="token function">set-hostname</span> worker02 |
exit
退出当前用户,在重新登陆一下就可以了,可以看名字都一句以及已经改为了对应的名字全部都需要执行(!!!!这个要改为自己集群的主机ip)
1 2 3 4 5 6 |
<span class="token function">cat</span> >> <span class="token operator">/</span>etc/hosts << EOF 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>5<span class="token punctuation">.</span>53 mater01 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>5<span class="token punctuation">.</span>54 worker01 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>5<span class="token punctuation">.</span>55 worker02 EOF |
通过WindTerm的频道功能,可以实现同频道中,只要一个页面输入,其他的都会同步输入
再执行查看是否写入
1 2 |
<span class="token function">cat</span> <span class="token operator">/</span>etc/hosts |
1 2 |
timedatectl <span class="token function">set-timezone</span> Asia/Shanghai |
1 2 |
apt-get install ntpdate |
1 2 |
ntpdate time1<span class="token punctuation">.</span>aliyun<span class="token punctuation">.</span>com |
1 2 |
crontab <span class="token operator">-</span>e |
2
:
1 2 |
0 <span class="token operator">*</span><span class="token operator">/</span>1 <span class="token operator">*</span> <span class="token operator">*</span> <span class="token operator">*</span> ntpdate time1<span class="token punctuation">.</span>aliyun<span class="token punctuation">.</span>com |
1 2 3 4 |
cat << EOF | tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF |
配置完成之后,本次启动这两个配置,因为配置上配置后期开机启动的,当下也需要先启动
1 |
modprobe overlay |
1 |
modprobe br_netfilter |
2. 查看是否启动成功
1 |
lsmod | egrep "overlay" |
1 |
lsmod | egrep "br_netfilter" |
1 2 3 4 5 |
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 |
1 |
sysctl --system |
1 |
sysctl -a | grep ip_forward |
net.ipv4.ip_forward = 1
和net.ipv4.ip_forward_update_priority = 1
都变为1了表示加载成功
下面的只需要master节点
的主机执行,其他的两个从机不用执行
1 2 |
kubeadm config print init-defaults > kubeadm-config<span class="token punctuation">.</span>yaml |
1 2 |
vim kubeadm-config<span class="token punctuation">.</span>yaml |
advertiseAddress
的ip为mater01节点的ipname
为mater01节点的主机名imageRepository
仓库地址为阿里云的镜像仓库registry.aliyuncs.com/google_containers
。因为前面/etc/containerd/config.toml
文件修改了,如果前面的文件镜像仓库地址没修改,这个地方也可以不修改kubernetesVersion
版本号,前面下载的是什么版本就写什么版本dnsDomain
表示DNS域名,可以不修改,但一个局域网内只能有一个相同的,如果有两个k8s集群用的一样的DNS名字就会冲突,一般推荐修改为公司的域名networking
中的 serviceSubnet 后面添加
1 2 |
podSubnet: 10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0/16 |
1 2 3 4 5 |
<span class="token operator">--</span><span class="token operator">-</span> kind: KubeletConfiguration apiVersion: kubelet<span class="token punctuation">.</span>config<span class="token punctuation">.</span>k8s<span class="token punctuation">.</span>io/v1beta1 cgroupDriver: systemd |
1 2 3 |
systemctl restart containerd systemctl restart kubelet |
--image-repository
:指定镜像仓库--kubernetes-version
:版本号,改为你的k8s版本
1 2 |
kubeadm config images pull <span class="token operator">--</span>image-repository=registry<span class="token punctuation">.</span>aliyuncs<span class="token punctuation">.</span>com/google_containers <span class="token operator">--</span>kubernetes-version v1<span class="token punctuation">.</span>28<span class="token punctuation">.</span>1 |
1 2 |
kubeadm init <span class="token operator">--</span>config kubeadm-config<span class="token punctuation">.</span>yaml |
master
节点执行一遍
1 2 3 4 |
mkdir <span class="token operator">-</span>p <span class="token variable">$HOME</span><span class="token operator">/</span><span class="token punctuation">.</span>kube sudo <span class="token function">cp</span> <span class="token operator">-</span>i <span class="token operator">/</span>etc/kubernetes/admin<span class="token punctuation">.</span>conf <span class="token variable">$HOME</span><span class="token operator">/</span><span class="token punctuation">.</span>kube/config sudo chown $<span class="token punctuation">(</span>id <span class="token operator">-</span>u<span class="token punctuation">)</span>:$<span class="token punctuation">(</span>id <span class="token operator">-</span>g<span class="token punctuation">)</span> <span class="token variable">$HOME</span><span class="token operator">/</span><span class="token punctuation">.</span>kube/config |
1 2 |
kubectl get nodes |
复制刚刚自己初始化的地址,到从节点执行,也就是另外两个worker02节点
(!!!这个是我的,需要复制自己的)
1 2 3 |
kubeadm join 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>5<span class="token punctuation">.</span>53:6443 <span class="token operator">--</span>token abcdef<span class="token punctuation">.</span>0123456789abcdef \ <span class="token operator">--</span>discovery-token-ca-cert-hash sha256:55917a9c22cb444e83ce19517b8b9f1856401cf3ca11df4e661978fd9eed222e |
1 2 |
kubectl get nodes |
k8s常用的网络插件主要有
1 2 |
kubectl create <span class="token operator">-</span>f https:<span class="token operator">/</span><span class="token operator">/</span>raw<span class="token punctuation">.</span>githubusercontent<span class="token punctuation">.</span>com/projectcalico/calico/v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1/manifests/tigera-operator<span class="token punctuation">.</span>yaml |
tigera-operator
1 2 |
kubectl get ns |
Runing
状态就代表成功了,如果不是就代表有问题
1 2 |
kubectl get pods <span class="token operator">-</span>n tigera-operator |
custom-resources.yaml 是一个用于配置 Kubernetes 的自定义资源定义(CRD)文件
1 2 |
wget https:<span class="token operator">/</span><span class="token operator">/</span>raw<span class="token punctuation">.</span>githubusercontent<span class="token punctuation">.</span>com/projectcalico/calico/v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1/manifests/custom-resources<span class="token punctuation">.</span>yaml |
podSubnet
的网段 cidr: 10.244.0.0/16
1 2 |
vim custom-resources<span class="token punctuation">.</span>yaml |
1 2 3 4 5 6 7 8 |
ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/cni:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/pod2daemon-flexvol:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/node:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/kube-controllers:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/typha:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/node-driver-registrar:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 ctr image pull docker<span class="token punctuation">.</span>1panel<span class="token punctuation">.</span>live/calico/csi:v3<span class="token punctuation">.</span>26<span class="token punctuation">.</span>1 |
1 2 |
ctr image list |
application/vnd.docker.distribution.manifest.list.v2+json
没有出现 Init:ErrImagePull
1 2 |
kubectl create <span class="token operator">-</span>f custom-resources<span class="token punctuation">.</span>yaml |
1 2 |
kubectl get ns |
calico-system
代表ok了
1 2 |
kubectl get pods <span class="token operator">-</span>n calico-system |
Runing
,代表成功
1 2 |
kubectl get nodes |
如果哪个节点有问题
执行下面命令直接删除掉k8s相关的东西,然后重新安装三个组件,在去重新通过链接加入就行。
1 2 3 4 5 6 7 8 9 10 11 12 |
<span class="token comment">#重置 Kubernetes 集群,它会删除所有与 Kubernetes 相关的配置文件、数据和组件。</span> sudo kubeadm reset <span class="token function">rm</span> <span class="token operator">-</span>rf <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/cni/ <span class="token function">rm</span> <span class="token operator">-</span>rf <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/kubelet/<span class="token operator">*</span> <span class="token function">rm</span> <span class="token operator">-</span>rf <span class="token operator">/</span>etc/cni/<span class="token operator">*</span> <span class="token function">rm</span> <span class="token operator">-</span>rf <span class="token operator">/</span>root/<span class="token punctuation">.</span>kube <span class="token function">rm</span> <span class="token operator">-</span>rf <span class="token operator">/</span>etc/kubernetes/<span class="token operator">*</span> ipvsadm <span class="token operator">-</span>C iptables <span class="token operator">-</span>F && iptables <span class="token operator">-</span>t nat <span class="token operator">-</span>F && iptables <span class="token operator">-</span>t mangle <span class="token operator">-</span>F && iptables <span class="token operator">-</span>X |
发生错误可以查看kuboard官网
https://press.demo.kuboard.cn/install/v3/install-in-k8s.html
1 |
wget https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml |
1 |
kubectl apply -f kuboard-v3-swr.yaml |
如果镜像拉取不下来可以修改下镜像仓库地址改为我的阿里云的进行仓库地址
1 |
vim kuboard-v3-swr.yaml |
1 2 3 4 5 |
# 地址: 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 |
分别把地址放入下面对应的地方
继续执行部署
1 |
kubectl apply -f vim kuboard-v3-swr.yaml |
1 |
kubectl get pods -n kuboard |
都是Running
即可
http://节点IP:30080
admin
Kuboard123
通过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
的状态,可能的原因有前面两个错误都是执行下面的命令
1 2 |
kubectl label nodes mater01 k8s<span class="token punctuation">.</span>kuboard<span class="token punctuation">.</span>cn/role=etcd |
cat ~/.kube/config
命令,把全部内容复制到kubeConfig框内,点击确认
1 2 |
registry<span class="token punctuation">.</span>cn-hangzhou<span class="token punctuation">.</span>aliyuncs<span class="token punctuation">.</span>com/acs-sample/nginx:latest |
如果镜像拉取不下来可以看我【docker镜像加速服务搭建】这篇文章,自己搭建一个加速服务
填写好之后点击上面的保存>应用>确认>
5.访问对应的节点进行测试
1 2 |
vim nginx-deployment<span class="token punctuation">.</span>yaml |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<span class="token operator">--</span><span class="token operator">-</span> apiVersion: apps/v1 kind: Deployment metadata: name: nginxweb <span class="token comment"># 部署的名称</span> spec: replicas: 2 <span class="token comment"># 设置副本数量为2</span> selector: matchLabels: app: nginxweb1 <span class="token comment"># 用于选择匹配的Pod标签</span> template: metadata: labels: app: nginxweb1 <span class="token comment"># Pod的标签</span> spec: containers: <span class="token operator">-</span> name: nginxwebc <span class="token comment"># 容器名称</span> image: registry<span class="token punctuation">.</span>cn-hangzhou<span class="token punctuation">.</span>aliyuncs<span class="token punctuation">.</span>com/acs-sample/nginx:latest <span class="token comment"># 镜像拉取地址,换成阿里云的,不然会拉取失败</span> imagePullPolicy: IfNotPresent <span class="token comment"># 镜像拉取策略,如果本地没有就拉取</span> ports: <span class="token operator">-</span> containerPort: 80 <span class="token comment"># 容器内部监听的端口</span> <span class="token operator">--</span><span class="token operator">-</span> apiVersion: v1 kind: Service metadata: name: nginxweb-service <span class="token comment"># 服务的名称</span> spec: externalTrafficPolicy: Cluster <span class="token comment"># 外部流量策略设置为集群</span> selector: app: nginxweb1 <span class="token comment"># 用于选择匹配的Pod标签</span> ports: <span class="token operator">-</span> protocol: TCP <span class="token comment"># 使用TCP协议</span> port: 80 <span class="token comment"># 服务暴露的端口</span> targetPort: 80 <span class="token comment"># Pod中容器的端口</span> nodePort: 30080 <span class="token comment"># 在每个Node上分配的端口,用于外部访问</span> <span class="token function">type</span>: NodePort <span class="token comment"># 服务类型,使用NodePort</span> |
1 2 |
kubectl apply <span class="token operator">-</span>f nginx-deployment<span class="token punctuation">.</span>yaml |
pod
1 2 |
kubectl get pods |
service
service 可以查看到对应pod的名称还有端口映射
1 2 |
kubectl get service |
1 2 3 4 |
curl http:<span class="token operator">/</span><span class="token operator">/</span>10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>5<span class="token punctuation">.</span>3 curl http:<span class="token operator">/</span><span class="token operator">/</span>10<span class="token punctuation">.</span>244<span class="token punctuation">.</span>30<span class="token punctuation">.</span>69 |
⌨️码字不易,觉得可以的话可以一键三连一下!!!
from:https://blog.csdn.net/weixin_52315708/article/details/140894347