当前位置: 首页 > news >正文

Kubernetes 学习笔记

1. Kubernetes 简介

1.1 什么是 Kubernetes

Kubernetes 是 Google 在 2014 年开源的容器集群管理系统,简称 K8S,其用于容器化应用程序的部署,扩展和管理

K8S 提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能,目标是让部署容器化应用简单高效

1.2 Kubernetes 特性

  • 自我修复:在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。
  • 弹性伸缩:使用命令、UI 或者基于 CPU 使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务。
  • 自动部署和回滚:K8S 采用滚动更新策略更新应用,一次更新一个 Pod,而不是同时删除所有 Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务。
  • 服务发现和负载均衡:K8S 为多个容器提供一个统一访问入口(内部 IP 地址和一个 DNS 名称),并且负载均衡关联的所有容器,使得用户无需考虑容器 IP 问题。
  • 机密和配置管理:管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在 K8S 中,方便应用程序使用。
  • 存储编排:挂载外部存储系统,无论是来自本地存储,公有云(如AWS),还是网络存储(如 NFS、GlusterFS、Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。
  • 批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。

1.3 Kubernetes 集群架构与插件

在这里插入图片描述

  • Master组件
    • kube-apiserver: Kubernetes API,集群的统一入口,各组件协调者,以 RESTful API 提供接口 服务,所有对象资源的增删改查和监听操作都交给 APIServer 处理后再提交给 Etcd 存储。
    • kube-controller-manager: 处理集群中常规后台任务,一个资源对应一个控制器,而 ControllerManager 就是负责管理这些控制器的。
    • kube-scheduler: 根据调度算法为新创建的 Pod 选择一个 Node 节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。
    • etcd: 分布式键值存储系统。用于保存集群状态数据,比如 Pod、Service 等对象信息。
  • Node 插件
    • kubelet: kubelet 是 Master 在 Node 节点上的 Agent,管理本机运行容器的生命周期,比如创建容器、Pod 挂载数据卷、下载 secret、获取容器和节点状态等工作。kubelet 将每个 Pod 转换成一组容器。
    • kube-proxy: 在 Node 节点上实现 Pod 网络代理,维护网络规则和四层负载均衡工作。
    • docker或rocket: 容器引擎,运行容器。

在这里插入图片描述

1.4 Kubernetes 核心概念

  • Pod
    • 最小部署单元
    • 一组容器的集合
    • 一个 Pod 中的容器共享网络命名空间
    • Pod 是短暂的
  • Controllers
    • ReplicaSet:确保预期的 Pod 副本数量
    • Deployment:无状态应用部署
    • StatefulSet:有状态应用部署
    • DaemonSet:确保所有 Node 运行同一个 Pod
    • Job:一次性任务
    • Cronjob:定时任务
    • 更高级层次对象,部署和管理 Pod
  • Service
    • 防止 Pod 失联
    • 定义一组 Pod 的访问策略

2. 安装 Kubernetes

2.1 准备虚拟机

从 CentOS 7 模板机克隆 3 台带 GUI 的服务器

主机名CPU 核心数内存大小IP 地址
master2 核4GB10.1.8.10
node14 核6GB10.1.8.11
node24 核6GB10.1.8.12

2.2 部署 Kubernetes 安装环境

# 1. 将所有主机内核进行升级并重启
[root@master ~ 15:22:23]# yum update -y kernel && reboot# 2. 在所有主机上安装必要环境包
[root@master ~ 15:22:23]# yum -y install vim lrzsz unzip wget net-tools tree bash-completion conntrack ntpdate ntp ipvsadm ipset iptables curl sysstat libseccomp git psmisc telnet unzip gcc gcc-c++ make# 3. 关闭所有主机 swap 分区,以防止对性能产生影响
[root@master ~ 15:22:23]# vim /etc/fstab
# /dev/mapper/centos-swap swap  swap  defaults  0 0 # 注释以禁止开机自动挂载
[root@master ~ 15:49:52]# swapoff -a && sed -i '/swap/s/^/#/'  /etc/fstab # 4. 调整所有主机系统内核参数
[root@master ~ 15:50:44]# vim /etc/sysctl.d/Kubernetes.conf
# --- Kubernetes.conf ---
# 开启 Linux 内核的网络桥接功能,同时启用 iptables 和 ip6tables 的网络包过滤功能,用于在网络桥接时进行网络包过滤
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
# 开启路由转发,转发 IPv4 的数据包
net.ipv4.ip_forward=1
# 尽可能避免使用交换分区,提升 k8s 性能
vm.swappiness=0
# 不检查物理内存是否够用
vm.overcommit_memory=1
# --- Kubernetes.conf ---
[root@master ~ 15:51:54]# systemctl --system# 5. 调整所有主机 Linux 资源限制(可选)
[root@master ~ 15:53:10]# ulimit -SHn 65535
[root@master ~ 15:55:01]# cat >> /etc/security/limits.conf <<EOF
# 为所有用户设置文件描述符软限制
* soft nofile 655360
# 为所有用户设置文件描述符硬限制
* hard nofile 131072
# 为所有用户设置进程数软限制
* soft nproc 655350
# 为所有用户设置进程数硬限制
* hard nproc 655350
# 为所有用户设置内存锁定软限制为无限制
* soft memlock unlimited
# 为所有用户设置内存锁定硬限制为无限制
* hard memlock unlimited      
EOF# 6. 配置所有主机时间同步
[root@master ~ 15:55:48]# yum -y install chrony
[root@master ~ 15:56:47]# systemctl restart chronyd
[root@master ~ 15:56:47]# chronyc sources -v
[root@master ~ 15:56:47]# hwclock -s # 使用硬件时间同步# 7. 配置所有主机 IPVS 功能
[root@master ~ 15:57:57]# cat >>/etc/modules-load.d/ipvs.conf<<EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
overlay
br_netfilter
EOF
[root@master ~ 15:58:33]# systemctl restart systemd-modules-load # 重启服务# 8. 验证安装
[root@master ~ 15:59:07]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4 # 查看内核模块
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack_ipv4      19149  2 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_conntrack          143411  6 ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

2.3 基于 ContainerD 安装 Kubernetes

[!IMPORTANT]

本篇操作需要在所有主机上运行

2.3.1 安装 ContainerD

# 1. 指定 containerd 在系统启动时加载的内核模块
[root@master ~ 09:20:01]# cat >>/etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF# 2. 加载模块
[root@master ~ 09:21:40]# modprobe overlay
[root@master ~ 09:22:26]# modprobe br_netfilter
[root@master ~ 09:22:51]# sysctl --system# 3. 安装依赖软件包
[root@master ~ 09:22:37]# yum install -y yum-utils device-mapper-persistent-data lvm2# 4. 添加 Docker 软件源
[root@master ~ 09:23:25]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~ 09:24:00]# yum makecache fast# 5. 安装 containerd
[root@master ~ 09:24:08]# yum -y install containerd.io# 6. 生成 containerd 配置文件
[root@master ~ 09:42:50]# mkdir -p /etc/containerd
[root@master ~ 09:43:03]# containerd config default > /etc/containerd/config.toml
[root@master ~ 09:43:21]# vim /etc/containerd/config.toml
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9" # 63 行,配置镜像仓库
SystemdCgroup = true # 127 行,启用命名空间# 7. 启用服务
[root@master ~ 09:46:07]# systemctl enable containerd --now# 8. 验证安装
[root@master ~ 09:46:20]# ctr version
Client:Version:  1.6.33Revision: d2d58213f83a351ca8f528a95fbd145f5654e957Go version: go1.21.11Server:Version:  1.6.33Revision: d2d58213f83a351ca8f528a95fbd145f5654e957UUID: cb3325b2-0559-4948-97a6-9319b22ef350# 9. 配置镜像加速
[root@master ~ 09:46:56]# vim /etc/containerd/config.toml
config_path = "/etc/containerd/certs.d" # 147 行,指定仓库证书位置[root@master ~ 09:49:37]# mkdir /etc/containerd/certs.d
[root@master ~ 09:49:55]# mkdir /etc/containerd/certs.d/docker.io
[root@master ~ 09:50:01]# vim /etc/containerd/certs.d/docker.io/hosts.toml
# --- hosts.toml START ---
server = "https://docker.io"
[host."https://09def58152000fc00ff0c00057bad7e0.mirror.swr.myhuaweicloud.com"]capabilities = ["pull","resolve","push"][host."https://hub-mirror.c.163.com"]capabilities = ["pull","resolve","push"][host."https://do.nark.eu.org"]capabilities = ["pull","resolve","push"][host."https://dc.j8.work"]capabilities = ["pull","resolve","push"][host."https://docker.m.daocloud.io"]capabilities = ["pull","resolve","push"][host."https://dockerproxy.com"]capabilities = ["pull","resolve","push"][host."https://docker.mirrors.ustc.edu.cn"]capabilities = ["pull","resolve","push"][host."https://docker.nju.edu.cn"]capabilities = ["pull","resolve","push"][host."https://registry.docker-cn.com"]capabilities = ["pull","resolve","push"][host."https://hub.uuuadc.top"]capabilities = ["pull","resolve","push"][host."https://docker.anyhub.us.kg"]capabilities = ["pull","resolve","push"][host."https://dockerhub.jobcher.com"]capabilities = ["pull","resolve","push"][host."https://dockerhub.icu"]capabilities = ["pull","resolve","push"][host."https://docker.ckyl.me"]capabilities = ["pull","resolve","push"][host."https://docker.awsl9527.cn"]capabilities = ["pull","resolve","push"][host."https://mirror.baidubce.com"]capabilities = ["pull","resolve","push"][host."https://docker.1panel.live"]capabilities = ["pull","resolve","push"]
# --- hosts.toml END ---
[root@master ~ 09:51:15]# systemctl restart containerd# 10. 拉取镜像以测试配置
[root@master ~ 09:51:47]# ctr images pull docker.io/library/httpd:latest --hosts-dir=/etc/containerd/certs.d
[root@master ~ 09:55:36]# ctr i ls
REF                             TYPE                    DIGEST             SIZE      PLATFORMS                 LABELS 
docker.io/library/httpd:latest  application/vnd...json  sha256:ecfd...a01  43.1 MiB  linux/386,...linux/s390x  - 

2.3.2 安装 Kubernetes

# 1. 添加 k8s 软件源
[root@master ~ 10:23:00]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg[root@master ~ 10:23:05]# yum makecache fast# 2. 安装 k8s
[root@master ~ 10:23:19]# yum -y install kubectl-1.28.0 kubelet-1.28.0 kubeadm-1.28.0# 3. 配置 kubelet 的 cgroup
[root@master ~ 10:44:16]# vim /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"# 4. 配置 kubelet 服务开机自启
[root@master ~ 10:47:10]# systemctl daemon-reload
[root@master ~ 10:47:26]# systemctl enable kubelet.service # 5. 检查版本
[root@master ~ 10:47:44]# kubelet --version
Kubernetes v1.28.0
[root@master ~ 10:48:21]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"28", GitVersion:"v1.28.0", GitCommit:"855e7c48de7388eb330da0f8d9d2394ee818fb8d", GitTreeState:"clean", BuildDate:"2023-08-15T10:20:15Z", GoVersion:"go1.20.7", Compiler:"gc", Platform:"linux/amd64"}# 6. 配置 crictl 连接 containerd
[root@master ~ 10:48:24]# cat <<EOF | tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

2.3.3 配置 master

[!IMPORTANT]

本篇仅在 master 节点上进行配置

# 1. 下载 k8s 集群所需镜像
[root@master ~ 10:53:16]# kubeadm config images pull --kubernetes-version=v1.28.0 --image-repository=registry.aliyuncs.com/google_containers
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.0
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.28.0
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.9
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.5.9-0
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.10.1# 2. 初始化集群
#   方法一:初始化集群 - 手动配置 IPVS
[root@master ~ 11:09:22]# kubeadm init \
--apiserver-advertise-address=10.1.8.10 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.28.0 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--upload-certs | tee kubeadm-init.log
# --apiserver-advertise-address 集群通告地址
# --image-repository 指定阿里云镜像仓库地址
# --kubernetes-version 指定 K8s 版本,与软件包版本一致
# --pod-network-cidr Pod 网络的范围,与下面部署的 CNI 网络组件 yaml 中保持一致(可以修改)
# --service-cidr 集群内部虚拟网络,Pod 统一访问入口
# --upload-certs 将控制节点的证书上传到 kubeadm-certs Secret 中,可添加多个控制节点#   方法二:初始化集群 - 自动配置 IPVS(推荐)
[root@master ~ 11:18:21]# kubeadm config print init-defaults > kubeadm-init.yaml
[root@master ~ 11:18:31]# vim kubeadm-init.yaml
# --- kubeadm-init.yaml START ---
advertiseAddress: 10.1.8.10 # 12 行,修改为 master 节点
name: master # 17 行,设置主机名
taints: # 18 行- effect: NoSchedule # 19 行,添加污点key: node-role.kubernetes.io/control-plane # 20 行imageRepository: registry.aliyuncs.com/google_containers # 32 行附近,设置镜像仓库地址
serviceSubnet: 172.16.0.0/16 # 38 行附近,配置 service 网段
podSubnet: 172.31.0.0/16 # 39 行附近,配置 pod 网段# 末尾添加
# 更改 kube-proxy 的代理模式,默认为 iptables
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
# 更改 kubelet cgroup 驱动为 systemd
---
apiVersion: kubelet.config.k8s.io/v1beta1 
kind: KubeletConfiguration
cgroupDriver: systemd
# --- kubeadm-init.yaml END ---[root@master ~ 11:27:52]# kubeadm init --config=kubeadm-init.yaml --upload-certs | tee kubeadm-init.log
Your Kubernetes control-plane has initialized successfully!

[!NOTE]

若初始化失败,请参阅以下步骤:

# 1:删除kubernetes目录中所有内容
rm -rf /etc/kubernetes/*# 2:删除启动端口进程
pkill -9 kubelet
pkill -9 kube-controll
pkill -9 kube-schedule# 3:重置sock文件
kubeadm reset -f --cri-socket=unix:///var/run/containerd/containerd.sock
# 3. 配置 kubectl 工具
[root@master ~ 13:41:02]# mkdir -p $HOME/.kube
[root@master ~ 13:42:34]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~ 13:42:47]# chown $(id -u):$(id -g) $HOME/.kube/config
[root@master ~ 13:43:08]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@master ~ 13:43:29]# source  ~/.bash_profile# 4. 查看组建状态
[root@master ~ 13:43:45]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
scheduler            Healthy   ok        
etcd-0               Healthy   ok   

2.3.4 配置 node 节点

# 1. 获取 master 
[root@master ~ 15:20:02]# kubeadm token create --print-join-command
kubeadm join 10.1.8.10:6443 --token fiqum3.3wzyk6exnjttibm0 --discovery-token-ca-cert-hash sha256:52b3262fbf32d5acec29740f211a8c378e41199b71844e36af3cef79e95b085d # 2. 在 node 节点运行加入 master 命令
[root@node1 ~ 15:08:19]# kubeadm join 10.1.8.10:6443 --token fiqum3.3wzyk6exnjttibm0 --discovery-token-ca-cert-hash sha256:52b3262fbf32d5acec29740f211a8c378e41199b71844e36af3cef79e95b085d# 3. 在 master 节点查看 node 状态
[root@master ~ 15:24:07]# kubectl get nodes
NAME     STATUS     ROLES           AGE     VERSION
master   NotReady   control-plane   3h49m   v1.28.0
node1    NotReady   <none>          30s     v1.28.0
node2    NotReady   <none>          5s      v1.28.0# 4. 下载 Calico 文件
[root@master ~ 15:26:16]# wget --no-check-certificate https://docs.tigera.io/archive/v3.25/manifests/calico.yaml
--2025-11-12 15:26:19--  https://docs.tigera.io/archive/v3.25/manifests/calico.yaml# 5. 修改 Calico 文件
[root@master ~ 15:27:00]# vim calico.yaml
- name: CALICO_IPV4POOL_CIDR # 4601 value: "172.31.0.0/16" # 4602# 6. 部署 Calico
[root@master ~ 15:30:14]# kubectl apply -f calico.yaml
... created# 7. 检查集群状态
[root@master ~ 15:33:08]# kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS      AGE
kube-system   calico-kube-controllers-658d97c59c-rbbhc   1/1     Running   0             5m15s
kube-system   calico-node-4cppb                          1/1     Running   0             5m15s
kube-system   calico-node-4r22w                          1/1     Running   0             5m15s
kube-system   calico-node-wvssv                          1/1     Running   0             5m15s
kube-system   coredns-66f779496c-2f8tf                   1/1     Running   0             4h1m
kube-system   coredns-66f779496c-lf62d                   1/1     Running   0             4h1m
kube-system   etcd-master                                1/1     Running   1 (29m ago)   4h1m
kube-system   kube-apiserver-master                      1/1     Running   1 (29m ago)   4h1m
kube-system   kube-controller-manager-master             1/1     Running   2 (29m ago)   4h1m
kube-system   kube-proxy-9gr4g                           1/1     Running   1 (29m ago)   4h1m
kube-system   kube-proxy-rr8tb                           1/1     Running   0             12m
kube-system   kube-proxy-zdzlf                           1/1     Running   0             12m
kube-system   kube-scheduler-master                      1/1     Running   2 (29m ago)   4h1m
# 如果遇到 init:0/3 或 Pending 请耐心等待[root@master ~ 15:36:41]# kubectl get nodes
NAME     STATUS   ROLES           AGE    VERSION
master   Ready    control-plane   4h3m   v1.28.0
node1    Ready    <none>          13m    v1.28.0
node2    Ready    <none>          13m    v1.28.0[root@master ~ 15:39:10]# kubectl get pod -n kube-system -o wide
NAME                                       READY   STATUS    RESTARTS      AGE     IP              NODE     NOMINATED NODE   READINESS GATES
calico-kube-controllers-658d97c59c-rbbhc   1/1     Running   0             8m18s   172.31.219.66   master   <none>           <none>
calico-node-4cppb                          1/1     Running   0             8m18s   10.1.8.11       node1    <none>           <none>
calico-node-4r22w                          1/1     Running   0             8m18s   10.1.8.10       master   <none>           <none>
calico-node-wvssv                          1/1     Running   0             8m18s   10.1.8.12       node2    <none>           <none>
coredns-66f779496c-2f8tf                   1/1     Running   0             4h4m    172.31.219.67   master   <none>           <none>
coredns-66f779496c-lf62d                   1/1     Running   0             4h4m    172.31.219.65   master   <none>           <none>
etcd-master                                1/1     Running   1 (32m ago)   4h4m    10.1.8.10       master   <none>           <none>
kube-apiserver-master                      1/1     Running   1 (32m ago)   4h4m    10.1.8.10       master   <none>           <none>
kube-controller-manager-master             1/1     Running   2 (32m ago)   4h4m    10.1.8.10       master   <none>           <none>
kube-proxy-9gr4g                           1/1     Running   1 (32m ago)   4h4m    10.1.8.10       master   <none>           <none>
kube-proxy-rr8tb                           1/1     Running   0             15m     10.1.8.12       node2    <none>           <none>
kube-proxy-zdzlf                           1/1     Running   0             15m     10.1.8.11       node1    <none>           <none>
kube-scheduler-master                      1/1     Running   2 (32m ago)   4h4m    10.1.8.10       master   <none>           <none>

2.3.5 配置优化

# 1. 主节点安装 kubectl 命令自动补全
[root@master ~ 15:39:44]# yum install -y bash-completion
[root@master ~ 15:40:56]# source /usr/share/bash-completion/bash_completion
[root@master ~ 15:41:09]# vim ~/.bashrc
# --- .bashrc ---
source <(kubectl completion bash)
# --- .bashrc ---
[root@master ~ 15:42:35]# source ~/.bashrc
# 完成后,kubectl 命令可以使用 TAB 键自动补全

2.3.6 集群测试

# 1. 创建应用服务 nginx
[root@master ~ 15:46:05]# kubectl create deployment nginx --image=nginx --replicas=3
deployment.apps/nginx created# 2. 暴露服务端口
[root@master ~ 15:46:10]# kubectl expose deployment nginx --port=80 --target-port=80 --type=NodePort
service/nginx exposed[root@master ~ 15:46:41]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-7854ff8877-4mvhf   1/1     Running   0          67s
pod/nginx-7854ff8877-6nmzt   1/1     Running   0          67s
pod/nginx-7854ff8877-zvv7g   1/1     Running   0          67sNAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   172.16.0.1     <none>        443/TCP        4h12m
service/nginx        NodePort    172.16.93.33   <none>        80:31057/TCP   36s

完成后,打开浏览器,分别访问 10.1.8.11:3105710.1.8.12:31057,看到 Nginx 欢迎页面说明配置成功

http://www.dtcms.com/a/601305.html

相关文章:

  • 【自然语言处理】基于统计基的句子边界检测算法
  • 数据智能开发三 数据架构设计
  • 数据治理进阶——解读数据平台数据治理与建设方案【附全文阅读】
  • 基于OpenAI与DashScope的AI知识面试模拟系统实现
  • 嘉兴市南湖区城乡规划建设局网站做年报的网站怎么登不上去了
  • IntelliJ IDEA 2025.2.4 安装 MybatisX 不生效问题记录
  • Java 大视界 -- Java 大数据机器学习模型在自然语言生成中的可控性研究与应用实战
  • Langchain的LCEL组件
  • 南阳网站建设制作价格网站建设实践试卷
  • T型槽平台:工业制造中的多功能基础工装
  • 展示 Ansys 增材制造解决方案
  • PcVue播客系列 - E2 | 智慧制造、人工智能与工业模拟的未来 —— 对话 Andrew Siprelle
  • 广州广告网站建设图片网站源码
  • 有的app不能通过应用商城更新
  • 价格变化的效率问题
  • 仓颉三方库开发实战:sanitize_html 实现详解
  • 逻辑回归以及python(sklearn)详解
  • RESTful规范
  • 四川高端网站建设女生做网站开发
  • PDF转图片:轻松实现工程图纸的高效共享与高清展示
  • 【ZeroRange WebRTC】ICE 服务器列表解析(KVS WebRTC)
  • 【考证资讯】注意!2026 年HCIE实验考试内容重要调整!
  • uni-app中表格分页
  • LeetCode hot100:142 环形链表 II:寻找环的入口节点
  • vue下载依赖报错npm ERR node-sass@4.14.1 postinstall: `node scripts/build.js`的解决方法
  • 二分查找专题(十三):“答案二分”的“三连击”——「制作m束花所需的最少天数」
  • 快3网站制作 优帮云简述网站建设的方法
  • Java1112 基类 c#vscode使用 程序结构
  • 第30节:大规模地形渲染与LOD技术
  • Goer-Docker系列1-容器数据持久化