kubernetes资源清单之pod

查看帮助文档

kubectl explain pod

FIELDS:

    apiVersion    <string>      版本号

    kind    <string>               资源类型

    metadata <Object>         元数据

    spec <Object>                指定容器所需的行为

    status <Object>(只读)   状态

先看一个示例

---
apiVersion: v1
kind: Pod
metadata:
     name: nginx-pod
     namespace: default
spec:
     containers:
     - name: nginx-container
       image: nginx:latest

metadata.name:是namespace的名称,必须唯一。

metadata.namespace:指定名称空间

spec.containers:定义运行容器的行为

扫描二维码关注公众号,回复: 8154612 查看本文章

spec.containers.name:容器名称

spec.containers.image:运行容器的镜像

每个人的需求不一样,资源配置清单都不一样。所以这里只阐述怎么找帮助文档和怎么写格式。

资源清单只需要定义四项,其中两项(apiVersion和kind)已经定了。那就只关注metadata和spec。

metadata常用选项:

查看帮助信息:kubectl explain pod.metadata

name    <string>

annotations    <map[string]string>

labels    <map[string]string>

<map[string]string>用法:key:value,看metadata.labels格式。

示例演示:

---
apiVersion: v1
kind: Pod
metadata:
     annotations:
         Author: mycloudedu
     name: nginx-pod
     namespace: default
     labels:
         app: nginx
         tier: frontend
spec:
     containers:
     - name: nginx-container
       image: nginx:latest

验证:

[root@master kubernetes]# kubectl get pods --show-labels
NAME        READY   STATUS    RESTARTS   AGE     LABELS
nginx-pod   1/1     Running   0          3m46s   app=nginx,tier=frontend

[root@master kubernetes]# kubectl describe pod nginx-pod
Name:         nginx-pod
Namespace:    default
Priority:     0
Node:         node02/192.168.100.82
Start Time:   Wed, 11 Dec 2019 19:13:52 +0800
Labels:       app=nginx
               tier=frontend
Annotations:  Author: mycloudedu

…..

spec常用选项:

image

apiVersion: v1
kind: Pod
metadata:
   name: liveness-exec-pod
   namespace: default
spec:
   containers:
   - name: liveness-exec-container
     image: busybox:latest
     imagePullPolicy: IfNotPresent
     command:
     - "/bin/sh"
     - "-c"
     - "touch /1.txt; sleep 10; rm -f /1.txt; sleep 3600"
     livenessProbe:
       periodSeconds: 2
       exec:
         command:
         - "cat"
         - "/1.txt"

验证:

[root@master kubernetes]# kubectl get pods
NAME                      READY   STATUS   RESTARTS   AGE
liveness-exec-pod         1/1     Running  0          35s

注意看二次查询的结果。重启容器一次
[root@master kubernetes]# kubectl get pods
NAME                      READY   STATUS   RESTARTS   AGE
liveness-exec-pod         1/1     Running   1          50s

示例readinessProbe演示:(服务是否准备就绪)

---
apiVersion: v1
kind: Pod
metadata:
       name: readinessprobe-httpget-pod
       namespace: default
spec:
       containers:
       - name: readinessprobe-httpget-container
         image: nginx:latest
         ports:
            - name: http
              containerPort: 80
         imagePullPolicy: IfNotPresent
         readinessProbe:
              httpGet:
                  port: 80
              periodSeconds: 3
              initialDelaySeconds: 2

验证:

[root@master kubernetes]# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
readinessprobe-httpget-pod   1/1     Running   0          19s

交互式进入容器,人为破坏主页。

[root@master kubernetes]# kubectl exec readinessprobe-httpget-pod -it -- /bin/sh
# rm /usr/share/nginx/html/index.html

[root@master kubernetes]# kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
readinessprobe-httpget-pod   0/1     Running   0          113s

交互式进入容器,人为创建主页。

[root@master kubernetes]# kubectl exec readinessprobe-httpget-pod -it -- /bin/sh

# echo hello > /usr/share/nginx/html/index.html

[root@master kubernetes]# kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
readinessprobe-httpget-pod   1/1     Running   0          2m58s

示例lifecycle演示:(创建容器后立即调用PostStart)

---
apiVersion: v1
kind: Pod
metadata:
     name: lifecycle-poststart-pod
     namespace: default
     labels:
         app: nginx
         tier: frontend
spec:
     containers:
       - name: lifecycle-poststart-container
         image: nginx:latest
         imagePullPolicy: IfNotPresent
         lifecycle:
             postStart:
                 exec:
                     command: ["/bin/sh","-c","echo Hello from the postStart handler > /usr/share/nginx/html/index.html"]

验证:

[root@master kubernetes]# curl 10.244.2.25
Hello from the postStart handler

猜你喜欢

转载自www.cnblogs.com/mycloudedu/p/12023632.html