Kubernetes 实战入门核心内容总结

Kubernetes 实战入门核心内容总结

Kubernetes(K8s)核心资源与控制器展开实战教学,涵盖 Namespace、Pod、Label、Deployment 四大核心组件,包含概念定义、默认配置、操作命令及配置文件示例,以下是详细总结:

一、Namespace(命名空间)

1. 核心作用

实现资源隔离,支持多环境(如开发、测试、生产)或多租户的资源划分与管理,可结合 K8s 授权机制分配管理权限,搭配资源配额机制(如 CPU、内存限制)控制租户资源占用。

2. 默认 Namespace

K8s 集群启动后自动创建 4 个默认命名空间,功能如下表:

命名空间名称 状态 核心作用
default Active 未指定 Namespace 的资源默认分配至此
kube-node-lease Active 维护集群节点间心跳(v1.13 + 引入)
kube-public Active 资源对所有用户(含未认证用户)可见
kube-system Active 存放 K8s 系统组件(如 apiserver、coredns)

3. 关键操作(命令 + 配置文件)

操作类型 命令行方式 配置文件方式(以创建 dev 命名空间为例)
查看 - 查看所有:kubectl get ns- 查看指定:kubectl get ns <ns名称>- 指定格式(yaml/json):kubectl get ns <ns名称> -o yaml- 查看详情:kubectl describe ns <ns名称> -
创建 kubectl create ns <ns名称>(如kubectl create ns dev 1. 编写 yaml 文件(如 ns-dev.yaml):yaml<br>apiVersion: v1<br>kind: Namespace<br>metadata:<br> name: dev<br>2. 执行创建:kubectl create -f ns-dev.yaml
删除 kubectl delete ns <ns名称> kubectl delete -f ns-dev.yaml

二、Pod(最小管理单元)

1. 核心概念

  • K8s 集群中最小部署与管理单元,容器必须运行在 Pod 内,一个 Pod 可包含 1 个或多个容器(通常为 "1 主多辅助" 模式)
  • K8s 系统组件(如 coredns、etcd)均以 Pod 形式运行,可通过kubectl get pod -n kube-system查看

2. 关键操作

(1)创建与运行

K8s 不直接单独运行 Pod,需通过控制器(如 Deployment)或自主式创建:

  • 控制器创建(推荐,支持自动重建):kubectl run <pod名称> --image=<镜像> --port=<端口> --namespace=<ns名称>(如kubectl run nginx --image=nginx:latest --port=80 --namespace dev
  • 自主式创建(删除后不重建):kubectl create deployment <名称> --image=<镜像> --port=<端口> -n <ns名称>
(2)查看与访问
  • 查看基本信息:kubectl get pods -n <ns名称>(加-o wide可显示 Pod IP、所在节点)
  • 查看详情(含容器状态、事件):kubectl describe pod <pod名称> -n <ns名称>
  • 访问 Pod:先通过kubectl get pods -n <ns名称> -o wide获取 Pod IP,再用curl http://<Pod IP>:<端口>访问(如curl http://10.244.1.23:80
(3)删除
  • 自主式 Pod 删除:kubectl delete pod <pod名称> -n <ns名称>

  • 控制器管理的 Pod 删除:需先删除控制器(如 Deployment),步骤为:

    1. 查看控制器:

      kubectl get deploy -n <ns名称>

    2. 删除控制器:

      kubectl delete deploy <控制器名称> -n <ns名称>

    (Pod 会随控制器删除)

(4)配置文件创建

编写 pod-nginx.yaml:

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: nginx  # Pod名称
  namespace: dev  # 所属命名空间
spec:
  containers:
  - image: nginx:latest  # 容器镜像
    name: pod  # 容器名称
    ports:
    - name: nginx-port  # 端口名称
      containerPort: 80  # 容器内部端口
      protocol: TCP  # 协议类型

执行命令:kubectl create -f pod-nginx.yaml(创建)、kubectl delete -f pod-nginx.yaml(删除)

三、Label(标签)

1. 核心作用

  • key/value 键值对形式附加到资源(Pod、Node、Service 等),用于资源分类、筛选与管理,支持多维度分组(如版本、环境、架构)
  • 特点:一个资源可添加多个 Label,一个 Label 可附加到多个资源,支持创建后动态添加 / 删除

2. 常用 Label 示例

标签类型 示例
版本标签 version: releaseversion: stable
环境标签 environment: devenvironment: testenvironment: pro
架构标签 tier: frontend(前端)、tier: backend(后端)

3. Label Selector(标签选择器)

用于筛选符合条件的资源,分两类:

  • 基于等式 :如name=slave(选 key=name 且 value=slave 的资源)、env!=production(选 key=env 且 value≠production 的资源)
  • 基于集合 :如name in (master, slave)(选 key=name 且 value 为 master/slave 的资源)、name not in (frontend)(选 key=name 且 value≠frontend 的资源)
  • 多条件组合:用逗号分隔,如name=slave, env!=production

4. 关键操作

操作类型 命令行方式(以 Pod 为例,-n 指定命名空间) 配置文件方式(在 Pod yaml 中添加 labels)
打标签 kubectl label pod <pod名称> <key>=<value> -n <ns名称>(如kubectl label pod nginx-pod version=1.0 -n dev 编写 Pod yaml 时添加:yaml<br>metadata:<br> labels:<br> version: "3.0"<br> env: "test"<br>执行更新:kubectl apply -f pod-nginx.yaml
更新标签 kubectl label pod <pod名称> <key>=<新value> -n <ns名称> --overwrite(如kubectl label pod nginx-pod version=2.0 -n dev --overwrite 修改 yaml 中 labels 值,执行kubectl apply -f pod-nginx.yaml
查看标签 kubectl get pod <pod名称> -n <ns名称> --show-labels -
筛选标签 kubectl get pod -n <ns名称> -l <selector> --show-labels(如kubectl get pod -n dev -l version=2.0 --show-labels -
删除标签 kubectl label pod <pod名称> <key>- -n <ns名称>(如kubectl label pod nginx-pod version- -n dev 删除 yaml 中对应 label 项,执行kubectl apply -f pod-nginx.yaml

四、Deployment(Pod 控制器)

1. 核心作用

  • 属于 K8s Pod 控制器,用于管理 Pod 生命周期,确保 Pod 数量与状态符合预期(如 Pod 故障时自动重启 / 重建),支持滚动更新、副本扩缩容等功能
  • 工作逻辑:通过 Label Selector 匹配 Pod,控制 Pod 副本数(replicas),维持集群稳定

2. 关键操作

(1)创建与配置
  • 命令行创建(指定副本数、镜像、端口):kubectl create deploy <名称> --image=<镜像> --port=<端口> --replicas=<副本数> -n <ns名称>(如kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
  • 配置文件创建(deploy-nginx.yaml):
yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx  # 控制器名称
  namespace: dev  # 所属命名空间
spec:
  replicas: 3  # 期望Pod副本数
  selector:  # 匹配Pod的Label Selector
    matchLabels:
      run: nginx
  template:  # Pod模板(定义Pod配置)
    metadata:
      labels:
        run: nginx  # 与selector.matchLabels对应
    spec:
      containers:
      - image: nginx:latest  # 容器镜像
        name: nginx  # 容器名称
        ports:
        - containerPort: 80  # 容器端口
          protocol: TCP

执行命令:kubectl create -f deploy-nginx.yaml(创建)、kubectl delete -f deploy-nginx.yaml(删除)

(2)查看与管理
  • 查看 Deployment 基本信息:kubectl get deploy -n <ns名称>(加-o wide显示容器、镜像、选择器)
  • 查看 Deployment 详情(含策略、事件):kubectl describe deploy <名称> -n <ns名称>
  • 查看 Deployment 管理的 Pod:kubectl get pods -n <ns名称>(Pod 名称含 Deployment 关联的随机字符串)
(3)核心字段说明
  • READY:就绪的 Pod 副本数(格式:就绪数 / 期望数,如 3/3)
  • UP-TO-DATE:成功升级的 Pod 副本数
  • AVAILABLE:当前可用的 Pod 副本数
  • StrategyType:更新策略(默认 RollingUpdate,滚动更新)

具体示例:

kubernetes在集群启动之后,会默认创建几个namespace:

复制代码
[root@master ~]# kubectl get namespaces 
NAME              STATUS   AGE
default           Active   47h   //所有未指定Namespace的对象都会被分配在default命名空间
kube-node-lease   Active   47h   //集群节点之间的心跳维护,v1.13开始引入
kube-public       Active   47h   //此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system       Active   47h   //所有由Kubernetes系统创建的资源都处于这个命名空间

下面来看namespace资源的具体操作:

查看

查看所有的ns:

复制代码
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   47h
kube-node-lease   Active   47h
kube-public       Active   47h
kube-system       Active   47h

查看指定的ns:

复制代码
[root@master ~]# kubectl get ns default 
NAME      STATUS   AGE
default   Active   2d

指定输出格式:命令:kubectl get ns ns名称 -o 格式参数# kubernetes支持的格式有很多,比较常见的是wide、json、yaml:

复制代码
[root@master ~]# kubectl get ns default -o yaml 
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: "2025-10-28T10:52:10Z"
  labels:
    kubernetes.io/metadata.name: default
  name: default
  resourceVersion: "44"
  uid: c0721538-50eb-4b6d-b889-22c949bec80e
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

查看ns详情:

复制代码
[root@master ~]# kubectl describe ns default 
Name:         default
Labels:       kubernetes.io/metadata.name=default
Annotations:  <none>
Status:       Active      // Active 命名空间正在使用中  Terminating 正在删除命名空间

No resource quota.   //针对namespace做的资源限制# LimitRange针对namespace中的每个组件做的资源限制

No LimitRange resource.

创建namespace:

复制代码
[root@master ~]# kubectl create ns dev
namespace/dev created

删除:(删除namespace)

复制代码
[root@master ~]# kubectl delete ns dev
namespace "dev" deleted

配置方式:

首先准备一个yaml文件,ns-dev.yaml:

复制代码
[root@master ~]# vim ns-dev.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: dev
~    

然后就可以执行对应的创建和删除命令了:

创建:

复制代码
[root@master ~]# kubectl create -f ns-dev.yaml 
namespace/dev created
[root@master ~]# kubectl get -f ns-dev.yaml 
NAME   STATUS   AGE
dev    Active   37s
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d
dev               Active   85s
kube-node-lease   Active   2d
kube-public       Active   2d
kube-system       Active   2d

删除:

复制代码
[root@master ~]# kubectl delete -f ns-dev.yaml 
namespace "dev" deleted
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   2d
kube-node-lease   Active   2d
kube-public       Active   2d
kube-system       Active   2d

kubernetes在集群启动之后,集群中的各个组件也都是以Pod方式运行的。可以通过下面命令查看:

复制代码
[root@master ~]# kubectl get pod -n kube-system 
NAME                                      READY   STATUS    RESTARTS       AGE
calico-kube-controllers-9d57d8f49-xp62k   1/1     Running   2 (158m ago)   47h
calico-node-5b5dz                         1/1     Running   2 (158m ago)   47h
calico-node-c5nkj                         1/1     Running   2 (158m ago)   47h
calico-node-nkl7z                         1/1     Running   2 (158m ago)   47h
coredns-6554b8b87f-h6265                  1/1     Running   2 (158m ago)   2d
coredns-6554b8b87f-p4vrt                  1/1     Running   2 (158m ago)   2d
etcd-master                               1/1     Running   2 (158m ago)   2d
kube-apiserver-master                     1/1     Running   3 (57m ago)    2d
kube-controller-manager-master            1/1     Running   2 (158m ago)   2d
kube-proxy-62dkk                          1/1     Running   2 (158m ago)   2d
kube-proxy-tjfkz                          1/1     Running   2 (158m ago)   47h
kube-proxy-wddnk                          1/1     Running   2 (158m ago)   47h
kube-scheduler-master                     1/1     Running   2 (158m ago)   2d

创建并运行:

kubernetes没有提供单独运行Pod的命令,都是通过Pod控制器来实现的:

命令格式:kubectl run (pod名称) [参数]

--image 指定Pod的镜像

--port 指定端口

--namespace 指定namespace

复制代码
[root@master ~]# kubectl run nginx --image=nginx:latest --port=80 --namespace dev
pod/nginx created

查看pod信息:

查看pod基本信息:

复制代码
[root@master ~]# kubectl get pods -n dev
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3m4s

查看pod的详细信息:

复制代码
[root@master ~]# kubectl describe pod nginx -n dev 
Name:             nginx
Namespace:        dev
Priority:         0
Service Account:  default
Node:             node1.exmaple.com/192.168.100.20
Start Time:       Thu, 30 Oct 2025 19:15:16 +0800
Labels:           run=nginx
Annotations:      cni.projectcalico.org/containerID: f0c56ea62bb3f87ad719815118f6c99af922583d3ec41fe530e921bc445933eb
                  cni.projectcalico.org/podIP: 172.16.98.132/32
                  cni.projectcalico.org/podIPs: 172.16.98.132/32
Status:           Running
IP:               172.16.98.132
IPs:
  IP:  172.16.98.132
Containers:
  nginx:
    Container ID:   docker://54c65d00d209b7dcb3132d2a8577b789113c14829cfbedab0c66e3a2f43cb194
    Image:          nginx:latest
    Image ID:       docker-pullable://nginx@sha256:f547e3d0d5d02f7009737b284abc87d808e4252b42dceea361811e9fc606287f
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Thu, 30 Oct 2025 19:15:17 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rv8vw (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-rv8vw:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  4m9s  default-scheduler  Successfully assigned dev/nginx to node1.exmaple.com
  Normal  Pulling    4m9s  kubelet            Pulling image "nginx:latest"
  Normal  Pulled     4m8s  kubelet            Successfully pulled image "nginx:latest" in 952ms (952ms including waiting)
  Normal  Created    4m8s  kubelet            Created container nginx
  Normal  Started    4m8s  kubelet            Started container nginx

访问pod:

获取pod IP:

复制代码
[root@master ~]# kubectl get pods -n dev -o wide 
NAME    READY   STATUS    RESTARTS   AGE   IP              NODE                NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          10m   172.16.98.132   node1.exmaple.com   <none>           <none>

访问pod:

复制代码
[root@master ~]# curl http://172.16.98.132:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

删除指定pod:

复制代码
[root@master ~]# kubectl delete pod nginx -n dev
pod "nginx" deleted

如果create,显示删除pod成功,但是再查询,发现又新产生一个:

复制代码
[root@master ~]# kubectl create deployment nginx --image nginx --port 80 -n dev
deployment.apps/nginx created            //当前pod是由pod控制器管理
[root@master ~]# kubectl run nginx --image nginx --port 80 -n dev     //自主式管理pod
pod/nginx created
[root@master ~]# kubectl get pods -n dev
NAME                     READY   STATUS    RESTARTS   AGE
nginx                    1/1     Running   0          50s
nginx-7c5ddbdf54-n5cs2   1/1     Running   0          2m28s

这是因为当前pod是由pod控制器创建的,控制器会监控pod状况,一旦发现pod死亡,会立即重建,此时要想删除pod,必须删除pod控制器

先来查询一下当前namespace下的pod控制器:

复制代码
[root@master ~]# kubectl get deploy -n dev
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           6m22s

接下来,删除此pod,pod控制器:

复制代码
[root@master ~]# kubectl delete deploy nginx -n dev
deployment.apps "nginx" deleted

稍等片刻,再查询pod,发现pod被删除了:

复制代码
[root@master ~]# kubectl get pods -n dev
No resources found in dev namespace.

配置操作:

创建一个pod-nginx.yaml,内容如下:

复制代码
[root@master ~]# vim pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev
spec:
  containers:
  - image: nginx:latest
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP
~ 

然后就可以执行对应的创建和删除命令了:

创建:

复制代码
[root@master ~]# kubectl create ns dev
namespace/dev created
[root@master ~]# kubectl create -f pod-nginx.yaml 
pod/nginx created

删除:

复制代码
[root@master ~]# kubectl delete -f pod-nginx.yaml 
pod "nginx" deleted

命令方式:

为pod资源打标签:

复制代码
[root@master ~]# kubectl run nginx-pod --image=nginx:latest -n dev
pod/nginx-pod created
[root@master ~]# kubectl label pod nginx-pod version=1.0 -n dev
pod/nginx-pod labeled

为pod资源更新标签:

复制代码
[root@master ~]# kubectl label pod nginx-pod version=2.0 -n dev --overwrite 
pod/nginx-pod labeled

查看标签:

复制代码
[root@master ~]# kubectl get pod nginx-pod -n dev --show-labels 
NAME        READY   STATUS    RESTARTS   AGE    LABELS
nginx-pod   1/1     Running   0          3m8s   run=nginx-pod,version=2.0

筛选标签:

复制代码
[root@master ~]# kubectl get pod -n dev -l version=2.0 --show-labels 
NAME        READY   STATUS    RESTARTS   AGE     LABELS
nginx-pod   1/1     Running   0          3m52s   run=nginx-pod,version=2.0
[root@master ~]# kubectl get pod -n dev -l version!=2.0 --show-labels 
No resources found in dev namespace.

删除标签:

复制代码
[root@master ~]# kubectl label pod nginx-pod version- -n dev
pod/nginx-pod unlabeled

配置方式:

复制代码
[root@master ~]# vim pod-nginx.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev
  labels:
    version: "3.0" 
    env: "test"
spec:
  containers:
  - image: nginx:latest
    name: pod
    ports:
    - name: nginx-port
      containerPort: 80
      protocol: TCP
~  

然后就可以执行对应的更新命令了:

复制代码
[root@master ~]# kubectl apply -f pod-nginx.yaml 
pod/nginx created

命令操作:

命令格式:kubectl create deployment 名称 [参数]

--image 指定pod的镜像

--port 指定端口

--replicas 指定创建pod数量

--namespace 指定namespace

复制代码
[root@master ~]# kubectl create deploy nginx --image=nginx:latest --port=80 --replicas=3 -n dev
deployment.apps/nginx created

查看创建的pod:

复制代码
[root@master ~]# kubectl get pods -n dev
NAME                     READY   STATUS    RESTARTS   AGE
nginx                    1/1     Running   0          4m47s
nginx-7c79c4bf97-4pv2h   1/1     Running   0          32s
nginx-7c79c4bf97-9mq9v   1/1     Running   0          32s
nginx-7c79c4bf97-z7fth   1/1     Running   0          32s
nginx-pod                1/1     Running   0          15m

查看deployment的信息:

复制代码
[root@master ~]# kubectl get deploy -n dev
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           82s

UP-TO-DATE:成功升级的副本数量

AVAILABLE:可用副本的数量

复制代码
[root@master ~]# kubectl get deploy -n dev -o wide 
NAME    READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES         SELECTOR
nginx   3/3     3            3           2m18s   nginx        nginx:latest   app=nginx

查看deployment的详细信息:

复制代码
[root@master ~]# kubectl describe deploy nginx -n dev
Name:                   nginx
Namespace:              dev
CreationTimestamp:      Thu, 30 Oct 2025 20:17:30 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:latest
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-7c79c4bf97 (3/3 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  3m12s  deployment-controller  Scaled up replica set nginx-7c79c4bf97 to 3

删除:

复制代码
[root@master ~]# kubectl delete deploy nginx -n dev
deployment.apps "nginx" deleted

配置操作:

创建一个deploy-nginx.yaml,内容如下:

复制代码
[root@master ~]# vim deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: dev
spec:
 replicas: 3
 selector:
   matchLabels:
     run: nginx
 template:
   metadata:
     labels:
       run: nginx
   spec:
     containers:
     - image: nginx:latest
       name: nginx
       ports:
       - containerPort: 80
         protocol: TCP
~

然后就可以执行对应的创建和删除命令了:

创建:

复制代码
[root@master ~]# kubectl create -f deploy-nginx.yaml 
deployment.apps/nginx created

删除:

复制代码
[root@master ~]# kubectl delete -f deploy-nginx.yaml 
deployment.apps "nginx" deleted
相关推荐
scriptsboy8 小时前
可用 Docker (DockerHub) 国内镜像源加速列表 - 长期维护(截至 2025 年 06 月 15 日)
运维·docker·容器
不爱笑的良田8 小时前
从零开始的云原生之旅(二):第一次部署到 K8s
云原生·容器·kubernetes
what_20189 小时前
k8s 容器部署
云原生·容器·kubernetes
锦年JNian9 小时前
docker常用命令
运维·docker·容器
专家大圣10 小时前
5分钟启动标准化安卓环境:Docker-Android让模拟器配置不再踩坑
android·网络·docker·容器·内网穿透
winds~12 小时前
【git】docker中无法进行git命令行补全
git·docker·容器
cui_win1 天前
Minikube 安装与使用详细指南(Centos7 踩坑版)
docker·kubernetes·minikube·centos7·升级内核
似水流年 光阴已逝1 天前
从Jar包到K8s上线:全流程拆解+高可用实战
java·kubernetes·jar
行思理1 天前
Dockerfile 各指令说明
运维·macos·docker·容器·php