• k8s yaml示例


    Kind选择

    https://kubernetes.io/zh/docs/concepts/workloads/controllers/

    Pod示例

    apiVersion : v1 #版本v1
    kind : Pod  #类型是pod
    metadata  #对象需要的属性值
    name : nginx  #name为nginx
    spec  #定义容器参数
    containers:  
    -name :nginx  
    image : nginx #镜像为nginx
    ports
    -containerport : 80 #容器本地端口
    
    在 K8S 中,有两种创建资源的方式:kubectl 命令和 yaml 配置文件。
    

      一个pod中有多个容器

    Deployment示例

    定义 deployment 配置文件,命名为:nginx-deployment.yaml

    apiVersion: apps/v1   # 1.9.0 之前的版本使用 apps/v1beta2,可通过命令 kubectl api-versions 查看
    kind: Deployment    #指定创建资源的角色/类型
    metadata:    #资源的元数据/属性
      name: nginx-deployment    #资源的名字,在同一个namespace中必须唯一
    spec:
      replicas: 2    #副本数量2
      selector:      #定义标签选择器
        matchLabels:
          app: web-server
      template:      #这里Pod的定义
        metadata:
          labels:    #Pod的label
            app: web-server
        spec:        # 指定该资源的内容  
          containers:  
          - name: nginx      #容器的名字  
            image: nginx:1.12.1  #容器的镜像地址    
            ports:  
            - containerPort: 80  #容器对外的端口
    

    一个pod中有多个容器

    属于同一个Pod的多个容器应用之间相互访问时仅需要通过localhost就可以通信,使得这一组容器被“绑定”在了一个环境中。

    在Docker容器kubeguide/guestbook-php-frontend:localredis的PHP网页中,直接通过URL地址“localhost:6379”对同属于一个Pod的redis-master进行访问

    Service示例

    定义 service 配置文件,命名为 httpd-svc.yaml

    apiVersion: v1  
    kind: Service  # 指明资源类型是 service
    metadata:  
      name: httpd-svc # service 的名字是 httpd-svc
      labels:  
        name: httpd-svc 
    spec:  
      ports:  # 将 service 8080 端口映射到 pod 的 80 端口,使用 TCP 协议
      - port: 8080
        targetPort: 80  
        protocol: TCP  
      selector:  
        run: httpd # 指明哪些 label 的 pod 作为 service 的后端
    

     

    pod定义文件完整内容:

    apiVersion: v1       #必选,版本号,例如v1
    kind: Pod       #必选,Pod
    metadata:       #必选,元数据
      name: string       #必选,Pod名称
      namespace: string    #必选,Pod所属的命名空间
      labels:      #自定义标签
        - name: string     #自定义标签名字
      annotations:       #自定义注释列表
        - name: string
    spec:         #必选,Pod中容器的详细定义
      containers:      #必选,Pod中容器列表
      - name: string     #必选,容器名称
        image: string    #必选,容器的镜像名称
        imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像
        command: [string]    #容器的启动命令列表,如不指定,使用打包时使用的启动命令
        args: [string]     #容器的启动命令参数列表
        workingDir: string     #容器的工作目录
        volumeMounts:    #挂载到容器内部的存储卷配置
        - name: string     #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名
          mountPath: string    #存储卷在容器内mount的绝对路径,应少于512字符
          readOnly: boolean    #是否为只读模式
        ports:       #需要暴露的端口库号列表
        - name: string     #端口号名称
          containerPort: int   #容器需要监听的端口号
          hostPort: int    #容器所在主机需要监听的端口号,默认与Container相同
          protocol: string     #端口协议,支持TCP和UDP,默认TCP
        env:       #容器运行前需设置的环境变量列表
        - name: string     #环境变量名称
          value: string    #环境变量的值
        resources:       #资源限制和请求的设置
          limits:      #资源限制的设置
            cpu: string    #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数
            memory: string     #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数
          requests:      #资源请求的设置
            cpu: string    #Cpu请求,容器启动的初始可用数量
            memory: string     #内存清楚,容器启动的初始可用数量
        livenessProbe:     #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可
          exec:      #对Pod容器内检查方式设置为exec方式
            command: [string]  #exec方式需要制定的命令或脚本
          httpGet:       #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port
            path: string
            port: number
            host: string
            scheme: string
            HttpHeaders:
            - name: string
              value: string
          tcpSocket:     #对Pod内个容器健康检查方式设置为tcpSocket方式
             port: number
           initialDelaySeconds: 0  #容器启动完成后首次探测的时间,单位为秒
           timeoutSeconds: 0   #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒
           periodSeconds: 0    #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次
           successThreshold: 0
           failureThreshold: 0
           securityContext:
             privileged:false
        restartPolicy: [Always | Never | OnFailure]#Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod
        nodeSelector: obeject  #设置NodeSelector表示将该Pod调度到包含这个label的node上,以key:value的格式指定
        imagePullSecrets:    #Pull镜像时使用的secret名称,以key:secretkey格式指定
        - name: string
        hostNetwork:false      #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络
        volumes:       #在该pod上定义共享存储卷列表
        - name: string     #共享存储卷名称 (volumes类型有很多种)
          emptyDir: {}     #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值
          hostPath: string     #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录
            path: string     #Pod所在宿主机的目录,将被用于同期中mount的目录
          secret:      #类型为secret的存储卷,挂载集群与定义的secre对象到容器内部
            scretname: string  
            items:     
            - key: string
              path: string
          configMap:     #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部
            name: string
            items:
            - key: string
    

      

  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/12393962.html
Copyright © 2020-2023  润新知