运维开发网

kubernetes 资源配置清单常用资

运维开发网 https://www.qedev.com 2021-03-02 09:27 出处:51CTO 作者:小李子博客
资源:对象workload:PodReplicaSetDeploymentStatefulSetDaemonSetjobCronjob...服务发现及负载均衡:Service、ingress,...配置与存储:VolumeCSI配置中心:ConfigMap密钥:Secret资源配置清单一级字段:apiVersion(格式:group/version)通过:kubectlapi-versions获取

资源:对象

workload: 
    Pod
    ReplicaSet
    Deployment
    StatefulSet
    DaemonSet
    job
    Cronjob
    ...
服务发现及负载均衡:
    Service、ingress,...
配置与存储:
    Volume
    CSI
    配置中心:ConfigMap
    密钥:Secret

资源配置清单一级字段:

apiVersion(格式:group/version)  通过:kubectl api-versions获取
'kind':定义资源类型(如:Pod,Service,...)
'metadata':元数据 
    name:容器名称,同一资源类别必须是唯一的
    namespace:名称空间
    labels:标签
    annotions:资源注解
'spac':用户所期望的状态 
    contaioners
    ports
    hostNetwork
    nodeSelector
    restartPolicy 
'status'(只读):容器运行的当前状态

内建帮助文档

kubectl explain RESOURCE
需要看定义RESOURCE下一级资源,

]# kubectl explain pod
KIND:     Pod
VERSION:  v1

DESCRIPTION:
     Pod is a collection of containers that can run on a host. This resource is
     created by clients and scheduled onto hosts.

FIELDS:
   apiVersion   <string>
     APIVersion defines the versioned schema of this representation of an
     object. Servers should convert recognized schemas to the latest internal
     value, and may reject unrecognized values. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#resources

   kind <string>
     Kind is a string value representing the REST resource this object
     represents. Servers may infer this from the endpoint the client submits
     requests to. Cannot be updated. In CamelCase. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds

   metadata     <Object>
     Standard object's metadata. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata

   spec <Object>
     Specification of the desired behavior of the pod. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

   status       <Object>
     Most recently observed status of the pod. This data may not be up to date.
     Populated by the system. Read-only. More info:
     https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status

运行一个简单的自助式pod

apiVersion: v1
kind: Pod
metadata:
   name: myapp-dome
   namespace: default
   labels: #labels是Map类型的资源,属于Json数组,可以”{key:vlue,key:vlue},也可以是换行缩紧格式
      apps: myapp
      tier: qianduan
spec:
   containers: #containers是Json对象列表资源,书写格式换行以“-”开头
   - name: myapp
     image: ikubernetes/myapp:v1

spec常用字段

==containers== 定义容器

containers:#常用下级字段
- name:#定义容器名称
  image:#定义镜像
  imagePullPolicy: # 定义镜像下载策略,有Always、Never、IfNotPresent
        Always:总是按照地址下载镜像
        Never:不下载镜像,需要手动下载镜像
        IfNotPresent:如果本地有镜像就使用本地的镜像,如果本地没有就按照地址下载镜像
    "注意:如果镜像标签是latest,没有定义策略,那么默认就是Always"

apiVersion:v1
kind:Pod
metadata:
    name: myapp
    ....
spec:
    "containers:" #对象列表资源 下级字段"name" -required- 必填字段
    - name: nginx 
      image: nginx:latest

==containers.ports== 定义容器暴漏端口

port #字段常用下级字段
- name: #定义端口名称
  containerPort:<nmber> #容器端口号
  portocol:#定义协议类型,TCP、UDP或者 SCTP,默认是TCP;

apiVersion:v1
kind:Pod
metadata:
    name: myapp
    ....
spec:
    containers: 
    - name: nginx
      image:nginx: latest
      "ports:
      - name: http
        containerPort: 80
        portocol: tcp"

==nodeselector== 定义node选择器 根据label值调度到对应的node节点

 nodeSelector <map[string]string>

 例如:
    apiVersion:V1
    kind:Pod
    metadata;

livenessProbe 存活状态检查

探测方式:
    命令探测方式:exec
              command
    请求业务:httpGet
              port
              path
    tcp套接字:tcpSocket
              port
常用字段:
       "livenessProbe:
        exec: #命令探测方式
          command: ["/bin/sh","-c","test -e /usr/share/nginx/html/index.html"]
        initialDelaySeconds: 3
        timeoutSeconds: 2
        failureThreshold: 3"

command 用法示例:
apiVersion: v1
kind: Pod
metadata:
    name: liveness-pod
    namespace: default
    labels:
       version: v0.1
spec:
    containers:
    - name: liveness
      image: ikubernetes/myapp:v1
      ports:
      - name: http
        containerPort: 80
      "livenessProbe:
        exec: 
          command: ["/bin/sh","-c","test -e /usr/share/nginx/html/index.html"]
        initialDelaySeconds: 3
        timeoutSeconds: 2
        failureThreshold: 3"
    restartPolicy: Always

httpGet用法示例:
apiVersion: v1
kind: Pod
metadata:
    name: liveness-httpget-pod
    namespace: default
    labels:
       version: v0.1
spec:
    containers:
    - name: liveness-httpget-containter
      image: ikubernetes/myapp:v1
      ports:
      - name: http
        containerPort: 80
      livenessProbe:
        "httpGet:
           path: http://liveness-httpget-containter/index.html
           port: http"
        initialDelaySeconds: 3 #启动多少秒开始探测
        timeoutSeconds: 2 #超时时间
        failureThreshold: 3 #失败次数
    restartPolicy: Always

tcpSocker 用法:
    apiVersion: v1
    kind: Pod
    metadata:
        name: liveness-tcpsocket-pod
        namespace: default
        labels:
           version: v0.1
    spec:
        containers:
        - name: liveness-tcpsocket-containter
          image: ikubernetes/myapp:v1
          ports:
          - name: http
            containerPort: 80
          livenessProbe:
            tcpSocket:
               port: http
            initialDelaySeconds: 3
            timeoutSeconds: 2
            failureThreshold: 3
        restartPolicy: Always

readiness 就绪探测

探测方式:
    命令探测方式:exec
              command
    请求业务:httpGet
              port
              path
    tcp套接字:tcpSocket
              port

常用字段:
       "readinessProbe:
        exec: #命令探测方式
          command: ["/bin/sh","-c","test -e /usr/share/nginx/html/index.html"]
        initialDelaySeconds: 3
        timeoutSeconds: 2
        failureThreshold: 3"              

就绪和存活探测示例:
apiVersion: v1
kind: Pod
metadata:
    name: readiness-httpget-pod
    namespace: default
    labels:
       version: v0.1
spec:
    containers:
    - name: readiness-httpget-containter
      image: ikubernetes/myapp:v1
      ports:
      - name: http
        containerPort: 80
      livenessProbe:
        httpGet:
           path: http://readiness-httpget-containter/index.html
           port: http
        initialDelaySeconds: 3
        timeoutSeconds: 2
        failureThreshold: 3
      readinessProbe:
        exec:
          command: ["/bin/sh","-c"," test -e /usr/share/nginx/html/index.html"]
        initialDelaySeconds: 3
        timeoutSeconds: 2
        failureThreshold: 3
    restartPolicy: Always

定义Pod资源清单

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
  namespace: default
  labels:
    apps: myapp
    tier: qianduan
重点字段 :
spec: <[]object 对象列表>
  containers: <[]Object> -required-  必选项
  - name:容器名称
    image: <镜像地址>
    imagePullPolicy: 镜像获取策略如always,Never,IfNotePresnt;
      说明:
      always:总是从仓库下载镜像,不管本地有没有
      Never:从不从仓库下载镜像
      IfNotPresnt: 如果本地有就用,没有就去仓库下载
    ports:  "注意:这里制定的端口没有实质性的作用,就算不指定端口容器也会暴漏端口"
    - name:端口名称,便于后续引用起来方便
      contiainerPort: 端口号
      "一个Pod内可以有多个容器"

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号