云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > K8s Pod定义及资源调用

K8s学习之Pod的定义及详细资源调用案例

作者:雨凝1213

Kubernetes将所有内容抽象为资源,通过操作资源管理集群,核心单元是Pod,通过控制器管理Pod,资源管理分为命令式对象管理、命令式对象配置和声明式对象配置,各有适用场景,需要的朋友可以参考下

资源管理介绍

资源管理方式

1、命令式对象管理:直接使用命令去操作kubernetes资源

kubectl run nginx-pod --image=nginx:latest --port=80

2、命令式对象配置:通过命令配置和配置文件去操作kubernetes资源

kubectl create/patch -f nginx-pod.yaml

3、声明式对象配置:通过apply命令和配置文件去操作kubernetes资源

kubectl apply -f nginx-pod.yaml
类型适用环境优点缺点
命令式对象管理测试简单只能操作活动对象,无法审计、跟踪
命令式对象配置开发可以审计、跟踪项目大时,配置文件多,操作麻烦
声明式对象配置开发支持目录操作意外情况下难以调试

命令式对象管理

kubectl是kubernetes集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署

kubectl命令的语法如下:

kubectl [command] [type] [name] [flags]

comand:指定要对资源执行的操作,例如create、get、delete

type:指定资源类型,比如deployment、pod、service

name:指定资源的名称,名称大小写敏感

flags:指定额外的可选参数

# 查看所有pod
kubectl get pod 

# 查看某个pod
kubectl get pod pod_name

# 查看某个pod,以yaml格式展示结果
kubectl get pod pod_name -o yaml

资源类型

kubernetes中所有的内容都抽象为资源

kubectl api-resources

常用资源类型

资源分类资源名称缩写资源作用
集群级别资源nodesno集群组成部分
namespacesns隔离pod
pod资源podspo装载容器
pod资源控制器replicationcontrollersrc控制pod资源
replicasetsrs控制pod资源
deploymentsdeploy控制pod资源
daemonsetsds控制pod资源
jobs控制pod资源
cronjobscj控制pod资源
horizontalpodautoscalershpa控制pod资源
statefulsetssts控制pod资源
服务发现资源servicessvc统一pod对外接口
ingressing统一pod对外接口
存储资源volumeattachments存储
persistentvolumespv存储
persistentvolumeclaimspvc存储
配置资源configmapscm配置
secrets配置

kubect 常见命令操作

命令分类命令翻译作用
基本命令create创建创建一个资源
edit编辑编辑一个资源
get获取获取一个资源
patch更新更新一个资源
delete删除删除一个资源
explain解释展示文档资源
运行和调试run运行在集群中运行一个指定的镜像
expose暴露暴露资源为service
describe描述显示资源内部信息
logs日志输出容器在pod中的日志
attach缠绕进入运行中的容器
exec执行执行容器中的命令
cp复制在pod内外复制文件
rollout首次展示管理资源的发布
scale规模扩(缩)容pod的数量
autoscale自动调整自动扩(缩)容pod的数量
高级命令apply应用通过文件对资源进行配置
label标签更新资源上的标签
其它命令cluster-info集群信息显示集群信息
version版本显示当前的server和client版本

基本命令

kubectl的详细说明地址:

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

1、显示集群版本

[root@k8s-master ~]# kubectl version
Client Version: v1.30.0
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.30.0

2、显示集群信息

[root@k8s-master ~]# kubectl  cluster-info
Kubernetes control plane is running at https://172.25.254.100:6443
CoreDNS is running at https://172.25.254.100:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

3、创建一个web控制器,控制器中pod数量为2

[root@k8s-master ~]# kubectl create deployment web --image nginx --replicas 2

4、查看控制器

[root@k8s-master ~]# kubectl get  deployments.apps

5、查看资源帮助

[root@k8s-master ~]# kubectl explain deployment
GROUP:      apps
KIND:       Deployment
VERSION:    v1
......

6、查看控制器参数帮助

[root@k8s-master ~]# kubectl explain deployment.spec
GROUP:      apps
KIND:       Deployment
VERSION:    v1

7、编辑控制器配置

[root@k8s-master ~]# kubectl edit deployments.apps web
......
spec:
  progressDeadlineSeconds: 600
  replicas: 3	#运行的pod数量为3个

8、利用补丁更改控制器配置

[root@k8s-master ~]# kubectl patch  deployments.apps web -p '{"spec":{"replicas":4}}'
deployment.apps/web patched

9、删除资源

[root@k8s-master ~]# kubectl delete deployments.apps web
deployment.apps "web" deleted

运行/调试命令

1、运行pod

[root@k8s-master ~]# kubectl run testpod --image nginx
pod/testpod created

2、暴露端口

查看服务:

[root@k8s-master ~]# kubectl get  services

暴露端口:

[root@k8s-master ~]# kubectl expose pod testpod --port 80 --target-port 80
service/testpod exposed

测试:

3、查看资源详细信息

[root@k8s-master ~]# kubectl describe pods testpod

4、查看资源日志

[root@k8s-master ~]# kubectl logs pods/testpod

5、运行交互pod

[root@k8s-master ~]# kubectl run -it testpod --image busybox
#ctrl+pq退出不停止pod

#进入到已经运行的容器,且容器有交互环境
[root@k8s-master ~]# kubectl attach pods/testpod  -it

6、在已经运行的pod中运行指定命令

[root@k8s-master ~]# kubectl exec  -it pods/nginx  /bin/bash

7、复制文件到pod中

[root@k8s-master ~]# kubectl cp anaconda-ks.cfg nginx:/
[root@k8s-master ~]# kubectl exec -it pods/nginx  /bin/bash

8、复制pod中的文件到本机

[root@k8s-master ~]# kubectl cp  nginx:/anaconda-ks.cfg /root/test
#只能复制文本文件,且复制源应与目标源相对应,例如文本对文本,目录对目录

高级命令示例

1、利用目录生成yaml模版文件

[root@k8s-master ~]# kubectl create deployment --image nginx web --dry-run=client -o yaml > web.yml

2、利用yaml文件生成资源

[root@k8s-master ~]# vim web.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 2	#标签为web的两个容器
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx

[root@k8s-master ~]# kubectl apply -f web.yml
deployment.apps/web created
#生成容器

[root@k8s-master ~]# kubectl get deployments.apps
#获取该控制器下的信息

[root@k8s-master ~]# kubectl delete -f web.yml
deployment.apps "webcluster" deleted
#删除该控制器及控制器下的容器

3、管理资源标签

查看其标签:

[root@k8s-master ~]# kubectl apply -f web.yml
[root@k8s-master ~]# kubectl get pods  --show-labels

更改标签:

[root@k8s-master ~]# kubectl label pods nginx app=webcluster --overwrite

删除标签:

[root@k8s-master ~]# kubectl label pods nginx app-

当容器标签与控制器内的设定数量不符合时,控制器会自动生成新的容器或删除多余的容器:

[root@k8s-master ~]# kubectl get pods --show-labels

pod

创建自主式pod (生产不推荐)

优点

灵活性高

  • 可以精确控制 Pod 的各种配置参数,包括容器的镜像、资源限制、环境变量、命令和参数等,满足特定的应用需求。

学习和调试方便

  • 对于学习 Kubernetes 的原理和机制非常有帮助,通过手动创建 Pod 可以深入了解 Pod 的结构和配置方式。在调试问题时,可以更直接地观察和调整 Pod 的设置。

适用于特殊场景

  • 在一些特殊情况下,如进行一次性任务、快速验证概念或在资源受限的环境中进行特定配置时,手动创建 Pod 可能是一种有效的方式。

缺点

管理复杂

  • 如果需要管理大量的 Pod,手动创建和维护会变得非常繁琐和耗时。难以实现自动化的扩缩容、故障恢复等操作。

缺乏高级功能

  • 无法自动享受 Kubernetes 提供的高级功能,如自动部署、滚动更新、服务发现等。这可能导致应用的部署和管理效率低下。

可维护性差

  • 手动创建的 Pod 在更新应用版本或修改配置时需要手动干预,容易出现错误,并且难以保证一致性。相比之下,通过声明式配置或使用 Kubernetes 的部署工具可以更方便地进行应用的维护和更新。
#查看所有pods
[root@k8s-master ~]# kubectl get pods

#建立一个名为test的pod
[root@k8s-master ~]# kubectl run test --image nginx
pod/timinglee created

#查看所有pod
[root@k8s-master ~]# kubectl get pods

#显示pod的较为详细的信息
[root@k8s-master ~]# kubectl get pods -o wide

利用控制器管理 pod(推荐)

高可用性和可靠性

自动故障恢复

如果一个 Pod 失败或被删除,控制器会自动创建新的 Pod 来维持期望的副本数量。确保应用始终处于可用状态,减少因单个 Pod 故障导致的服务中断。

健康检查和自愈

可以配置控制器对 Pod 进行健康检查(如存活探针和就绪探针)。如果 Pod 不健康,控制器会采取适当的行动,如重启 Pod 或删除并重新创建它,以保证应用的正常运行。

可扩展性

轻松扩缩容

可以通过简单的命令或配置更改来增加或减少 Pod 的数量,以满足不同的工作负载需求。例如,在高流量期间可以快速扩展以处理更多请求,在低流量期间可以缩容以节省资源。

水平自动扩缩容(HPA)

可以基于自定义指标(如 CPU 利用率、内存使用情况或应用特定的指标)自动调整 Pod 的数量,实现动态的资源分配和成本优化。

版本管理和更新

滚动更新

对于 Deployment 等控制器,可以执行滚动更新来逐步替换旧版本的 Pod 为新版本,确保应用在更新过程中始终保持可用。可以控制更新的速率和策略,以减少对用户的影响。

回滚

如果更新出现问题,可以轻松回滚到上一个稳定版本,保证应用的稳定性和可靠性。

声明式配置

简洁的配置方式

使用 YAML 或 JSON 格式的声明式配置文件来定义应用的部署需求。这种方式使得配置易于理解、维护和版本控制,同时也方便团队协作。

期望状态管理

只需要定义应用的期望状态(如副本数量、容器镜像等),控制器会自动调整实际状态与期望状态保持一致。无需手动管理每个 Pod 的创建和删除,提高了管理效率。

服务发现和负载均衡

自动注册和发现

Kubernetes 中的服务(Service)可以自动发现由控制器管理的 Pod,并将流量路由到它们。这使得应用的服务发现和负载均衡变得简单和可靠,无需手动配置负载均衡器。

流量分发

可以根据不同的策略(如轮询、随机等)将请求分发到不同的 Pod,提高应用的性能和可用性。

多环境一致性

一致的部署方式

在不同的环境(如开发、测试、生产)中,可以使用相同的控制器和配置来部署应用,确保应用在不同环境中的行为一致。这有助于减少部署差异和错误,提高开发和运维效率。

扩(缩)容

1、建立控制器并自动运行pod

[root@k8s-master ~]# kubectl create deployment test --image nginx

2、扩容

[root@k8s-master ~]# kubectl scale deployment test --replicas 4

3、缩容

[root@k8s-master ~]# kubectl scale deployment test --replicas 2

应用版本的更新

1、利用控制器建立pod

[root@k8s-master ~]# kubectl create  deployment test --image myapp:v1 --replicas 2

2、暴露端口

[root@k8s-master ~]# kubectl expose deployment test --port 80 --target-port 80

3、访问服务查看现版本

[root@k8s-master ~]# curl 10.107.184.152

4、更新控制器镜像版本

[root@k8s-master ~]# kubectl set image deployments/test myapp=myapp:v2

5、再次访问查看现版本

[root@k8s-master ~]# curl 10.107.184.152

6、查看容器内的历史版本

[root@k8s-master ~]# kubectl rollout history deployment test

7、版本回滚

[root@k8s-master ~]# kubectl rollout undo deployment test --to-revision 1

利用yaml文件部署应用

用yaml文件部署应用有以下优点

声明式配置

灵活性和可扩展性

与工具集成

资源清单参数

参数名称类型参数说明
versionString这里是指的是K8S API的版本,目前基本上是v1,可以用kubectl api-versions命令查询
kindString这里指的是yaml文件定义的资源类型和角色,比如:Pod
metadataObject元数据对象,固定值就写metadata
metadata.nameString元数据对象的名字,这里由我们编写,比如命名Pod的名字
metadata.namespaceString元数据对象的命名空间,由我们自身定义
SpecObject详细定义对象,固定值就写Spec
spec.containers[]list这里是Spec对象的容器列表定义,是个列表
spec.containers[].nameString这里定义容器的名字
spec.containers[].imagestring这里定义要用到的镜像名称
spec.containers[].imagePullPolicyString定义镜像拉取策略,有三个值可选:
(1) Always: 每次都尝试重新拉取镜像
(2) IfNotPresent:如果本地有镜像就使用本地镜像,没有则进行拉取
(3) )Never:表示仅使用本地镜像
spec.containers[].command[]list指定容器运行时启动的命令,若未指定则运行容器打包时指定的命令
spec.containers[].args[]list指定容器运行参数,可以指定多个
spec.containers[].workingDirString指定容器工作目录
spec.containers[].volumeMounts[]list指定容器内部的存储卷配置
spec.containers[].volumeMounts[].nameString指定可以被容器挂载的存储卷的名称
spec.containers[].volumeMounts[].mountPathString指定可以被容器挂载的存储卷的路径
spec.containers[].volumeMounts[].readOnlyString设置存储卷路径的读写模式,ture或false,默认为读写模式
spec.containers[].ports[]list指定容器需要用到的端口列表
spec.containers[].ports[].nameString指定端口名称
spec.containers[].ports[].containerPortString指定容器需要监听的端口号
spec.containers[] ports[].hostPortString指定容器所在主机需要监听的端口号,默认跟上面containerPort相同,注意设置了hostPort同一台主机无法启动该容器的相同副本(因为主机的端口号不能相同,这样会冲突)
spec.containers[].ports[].protocolString指定端口协议,支持TCP和UDP,默认值为 TCP
spec.containers[].env[]list指定容器运行前需设置的环境变量列表
spec.containers[].env[].nameString指定环境变量名称
spec.containers[].env[].valueString指定环境变量值
spec.containers[].resourcesObject指定资源限制和资源请求的值(这里开始就是设置容器的资源上限)
spec.containers[].resources.limitsObject指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpuString指定CPU的限制,单位为核心数,1=1000m
spec.containers[].resources.limits.memoryString指定MEM内存的限制,单位为MIB、GiB
spec.containers[].resources.requestsObject指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpuStringCPU请求,单位为core数,容器启动时初始化可用数量
spec.containers[].resources.requests.memoryString内存请求,单位为MIB、GIB,容器启动的初始化可用数量
spec.restartPolicystring定义Pod的重启策略,默认值为Always.
(1)Always:Pod 一旦终止运行,无论容器是如何终止的,kubelet服务都将重启它
(2)OnFailure:只有Pod以非零退出码终止时,kubelet才会重启该容器。如果容器正常结束(退出码为0),则kubelet将不会重启它
(3) Never:Pod终止后,kubelet将退出码报告给Master,不会重启该容器
spec.nodeSelectorObject定义Node的Label过滤标签,以key:value格式指定
spec.imagePullSecretsObject定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetworkBoolean定义是否使用主机网络模式,默认值为false。设置true表示使用宿主机网络,不使用docker网桥,同时设置了true将无法在同一台宿主机 上启动第二个副本

如何获得资源帮助

[root@k8s-master yaml]# kubectl explain pod.spec.containers

编写示例

示例1:运行简单的单个容器pod

用命令获取yaml模板

[root@k8s-master ~]# kubectl run test --image myapp:v1 --dry-run=client -o yaml > pod.yml
[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test			#pod标签
  name: test			#pod名称
spec:
  containers:
  - image: myapp:v1		#pod镜像
    name: myapp			#容器名称

示例2:运行多个容器pod

注意如果多个容器运行在一个pod中,资源是共享的,如果同时使用相同的资源会产生干扰,比如端口

1、一个端口干扰示例:

[root@k8s-master ~]# vim pod.yml 
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: timing
  name: timinglee
spec:
  containers:
    - image:  nginx:latest
      name: web1

    - image: nginx:latest
      name: web2
      
[root@k8s-master ~]# kubectl apply -f pod.yml
pod/timinglee created
#使用yaml文件创建并运行pod

[root@k8s-master ~]# kubectl get pods -o wide
#查看容器的详细运行信息

查看pod内运行的容器日志信息:

[root@k8s-master yaml]# kubectl logs test web2

2、正确示例:

在一个pod中开启多个容器时一定要确保容器彼此不能互相干扰

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod 
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
    - image: nginx:latest
      name: web1

    - image: busybox:latest
      name: busybox
      command: ["/bin/sh","-c","sleep 1000000"]

[root@k8s-master ~]# kubectl get pods

示例3:理解pod间的网络整合

同在一个pod中的容器公用一个网络

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
    - image: myapp:v1
      name: myapp1

    - image: busyboxplus:latest
      name: busyboxplus
      command: ["/bin/sh","-c","sleep 1000000"]


[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

[root@k8s-master ~]# kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
test   2/2     Running   0          8s

效果演示:

[root@k8s-master ~]# kubectl exec test -c busyboxplus -- curl -s localhost

示例4:端口映射

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
    - image: myapp:v1
      name: myapp1
      ports:
      - name: http
        containerPort: 80
        hostPort: 80
        protocol: TCP

#测试
[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

[root@k8s-master yaml]# kubectl get pods -o wide

效果展示:

[root@k8s-master yaml]# curl k8s-node2

示例5:如何设定环境变量

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
    - image: busybox:latest
      name: busybox
      command: ["/bin/sh","-c","echo $NAME;sleep 3000000"]
      env:
      - name: NAME
        value: test
        
[root@k8s-master ~]# kubectl apply -f pod.yml

效果演示:

[root@k8s-master yaml]# kubectl logs pods/test myapp

示例6:资源限制

资源限制会影响pod的Qos Class资源优先级,资源优先级分为Guaranteed > Burstable > BestEffort

QoS(Quality of Service)即服务质量

资源设定优先级类型
资源限定未设定BestEffort
资源限定设定且最大和最小不一致Burstable
资源限定设定且最大和最小一致Guaranteed
[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  containers:
    - image: myapp:v1
      name: myapp
      resources:
        limits:		#pod使用资源的最高限制
          cpu: 500m
          memory: 100M
        requests:	#pod期望使用资源量,不能大于limits
          cpu: 500m
          memory: 100M
   
[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

效果展示:

[root@k8s-master yaml]# kubectl describe pods test 

示例7:容器启动管理

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  restartPolicy: Always
  containers:
    - image: myapp:v1
      name: myapp


[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

效果演示:

[root@k8s-master yaml]# kubectl get pods -o wide
#查看pod运行的详细信息,得知该pod在node2节点上

[root@k8s-node2 ~]# docker rm -f k8s_myapp_test_...
#在该工作节点上删除该容器

[root@k8s-node2 ~]# docker ps
#列出正在运行的容器

示例8:选择运行节点

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  nodeSelector:
    kubernetes.io/hostname: k8s-node1
  restartPolicy: Always
  containers:
    - image: myapp:v1
      name: myapp

[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

效果演示:

[root@k8s-master yaml]# kubectl get pods -o wide 

示例9:共享宿主机网络

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: test
  name: test
spec:
  hostNetwork: true
  restartPolicy: Always
  containers:
    - image: myapp:v1
      name: myapp
      

[root@k8s-master ~]# kubectl apply -f pod.yml
pod/test created

效果演示:

[root@k8s-master yaml]# kubectl exec -it pods/test -c myapp -- /bin/sh

pod 的生命周期

INIT 容器

官方文档:https://kubernetes.io/zh/docs/concepts/workloads/pods/

INIT 容器的功能

INIT 容器示例

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: initpod
  name: initpod
spec:
  containers:
    - image: myapp:v1
      name: myapp
  initContainers:	#init容器
    - name: init-myservice
      image: busybox
      command: ["sh","-c","until test -e /testfile;do echo wating for myservice; sleep 2;done"]

[root@k8s-master ~]# kubectl apply  -f pod.yml
pod/initpod created

pod的状态:

[root@k8s-master yaml]# kubectl get pods
#查看容器的状态

[root@k8s-master yaml]# kubectl logs initpod init-myservice
#查看init容器的日志信息

满足 init 容器条件,则容器正常运行:

[root@k8s-master ~]# kubectl exec pods/initpod -c init --- /bin/sh -c "touch /testfile"

探针

探针是由 kubelet 对容器执行的定期诊断:

每次探测都将获得以下三种结果之一:

Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应:

ReadinessProbe 与 LivenessProbe 的区别

StartupProbe 与 ReadinessProbe、LivenessProbe 的区别

探针示例

存活探针示例:

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: liveness
  name: liveness
spec:
  containers:
    - image: myapp:v1
      name: myapp
      livenessProbe:
        tcpSocket:					#检测端口存在性
          port: 8080
        initialDelaySeconds: 3		#容器启动后要等待多少秒后就探针开始工作,默认是 0
        periodSeconds: 1			#执行探测的时间间隔,默认为 10s
        timeoutSeconds: 1			#探针执行检测请求后,等待响应的超时时间,默认为 1s
        

[root@k8s-master ~]# kubectl apply -f pod.yml
pod/liveness created

查看pod的状态:

[root@k8s-master yaml]# kubectl get pods

查看其pod的描述信息:

[root@k8s-master yaml]# kubectl describe pods liveness

将其端口号改为80端口,探测成功,则运行容器:

[root@k8s-master yaml]# kubectl describe pods liveness

就绪探针示例:

[root@k8s-master ~]# vim pod.yml
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: readiness
  name: readiness
spec:
  containers:
    - image: myapp:v1
      name: myapp
      readinessProbe:
        httpGet:
          path: /test.html
          port: 80
        initialDelaySeconds: 1
        periodSeconds: 3
        timeoutSeconds: 1


[root@k8s-master ~]# kubectl apply -f pod.yml
pod/liveness created

查看其pod状态:

[root@k8s-master yaml]# kubectl get pods

查看其pod详细描述信息:

root@k8s-master yaml]# kubectl describe pods readness

满足探测条件,则Pod运行成功:

[root@k8s-master ~]# kubectl exec pods/readiness -c myapp -- /bin/sh -c "echo test > /usr/share/nginx/html/test.html"

总结 

到此这篇关于K8s学习之Pod的定义及详细资源调用案例的文章就介绍到这了,更多相关K8s Pod定义及资源调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文