isula+k8s实践记录2——使用yaml文件创建pod

先生成一个yaml文件,然后在这个文件的基础上进行修改,生成yaml的命令是:

kubectl run webserver --image=nginx:1.21 -o yaml --dry-run=client

[root@isula01 ~]# kubectl run webserver --image=nginx:1.21 -o yaml --dry-run=client
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: webserver
  name: webserver
spec:
  containers:
  - image: nginx:1.21
    name: webserver
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

yaml文件中需要包含的内容:

1 pod的名称

2 pod所属的namespace

3 容器的名称和标签

4 容器的注解

5 容器使用的镜像

6 容器的资源限制

7 容器需要向外暴露的端口

8 容器拉取镜像的策略

9 容器启动时需要执行的指令

10 容器的重启策略

11 容器的dns配置

12 容器的环境变量

13 容器需要挂载的持久存储

14 容器的网络

15 如何初始化容器

16 容器的健康

17 pod中运行多个容器

 

 

#####这里是gvk,相当于k8s为各个对象提供的API,用来定位对象资源,使用命令“kubectl api-resource”查询
apiVersion: v1
kind: Pod
metadata:
  name: busybox                       #####pod的名称
  namespace: test                    #####pod所在的命名空间
spec:                                                                                                                                                                                                                                                                                                                                                         volumes:                                 #####将本地文件挂载给容器
  - name: test                            #####要挂载卷的名称,这个名称要和后面的volumeMounts中的名字对应,k8s就是根据这个名字来识别要挂载的路径或者文件
    hostPath:                              #####挂载的方式,常用的有hostPath和emptyDir,hostPath是指将宿主上的某个路径挂载给容器,emptyDir是指在宿主机上随机生成一个目录,共pod中容器产生和消费数据,这个路径随着容器消失也会消失
      path: /data                        #####要挂载的路径
  dnsPolicy: Default                 #####容器的DNS策略,常用的有两种,一种是Default,表示使用宿主机的DNS服务器,一种是ClusterFirst,表示使用k8s集群内的coredns。第二种是默认
  restartPolicy: Never               #####容器的重启策略,一共有三种,分别是Never、OnFailure、Always
  containers:                        #####容器相关的配置
  - image: busybox                   #####容器所使用的的景象
    name: busybox                    #####容器的名称                                                                                                                                                                                                                                                                                      resources:                          #####资源限制
      requests:                            #####最低保障                                                                                                                                                                                                                                                                                               cpu: 0.1                                                                                                                                                                                                                                                                                                                                                   memory: 31Mi                                                                                                                                                                                                                                                                                                                                     limits:                            #####资源限制                                                                                                                                                                                                                                                                                                   cpu: 0.1                                                                                                                                                                                                                                                                                                                                                   memory: 31Mi          
      readOnly: false
    command:                         #####容器启动后所执行的命令,除了command,还可以有args,表示传递给容器镜像endpoint的参数
      - /bin/sh
      - -c
      - "sleep 3600"

    startupProbe:

#######容器探活机制,一共有三种探活机制,分别是startProbe、livenessProbe和readinessProbe。其中startProbe是启动阶段的探活,也就是说用来检测容器是否成功启动了,使用这种探针的时候我们基本上可以预判到失败,当探测中指定的任务成功后,表示容器成功启动,这个任务也就终止了,如果超过探测的次数,它会讲容器杀掉。第二个是livenessProbe,是运行阶段的探活,也就是检测容器是否还在成功运行,这种探针所执行的任务是可以预判到成功的,如果失败,表示容器运行不正常了,然后将容器杀掉。最后一种是readinessProbe,它和livenessProbe一样,也是运行阶段的探活,但是它发现容器不正常时,只是将容器的状态改为未就绪。

       tcpSocket:              #####探活的类型,常见有三种,分别是tcpSocket(基于端口)、exec(基于命令)和httpGet(基于http)            

          port:80

            initialDelaySeconds:容器启动后要等待多少秒后存活

            perriodSeconds:执行探测的时间间隔,默认是10秒,最小值是1秒

            timeoutSecond:探测超时后等待多少秒,相当于是执行一次探活任务,系统等待对方回应的时间,超出这个时间,则认为任务失败,默认值是1,最小值是1

            successThreshold:探测连续多少次成功,则认为pod启动成功

            failureThreshold:探测联系多少次失败,则认为pod启动失败
    imagePullPolicy: Always         #####容器镜像的拉取策略,有三种,分别是Always、IfNotPresent、Never,为了保证容器启动时使用的最新镜像,在生产中,建议使用Always                                                                                    volumeMounts:                      
    - name: test                            #####和上面的名称对应
      mountPath: /usr/share/nginx/html                #########要挂载到容器的路径
      readOnly: false                     #####权限
    env:                            #####容器的环境变量
      - name: BAIDU
        value: www.baidu.com
  - name: nginx                     #####第二个容器的相关配置,注意:和容器相关的配置以“—”,在yaml语法中,如果有该符号,表示顺序有前后关系,放在这里表示必须先启动第一个容器,才能启动第二个容器
    image: nginx
    ports:                          #####容器端口相关的配置
      - name: http                  #####容器开放端口的名称
        protocol: TCP               #####端口使用的协议
        containerPort: 80           #####容器要开放的端口
        hostPort: 80                #####映射到主机上的端口

    

posted @ 2022-02-08 15:26  王羊补劳  阅读(423)  评论(0)    收藏  举报