zoukankan      html  css  js  c++  java
  • Docker Kubernetes YAML文件常用指令

    YAML文件常用指令

    配置文件说明:

    • 定义配置时,指定最新稳定版API(当前为v1)。
    • 配置文件应该存储在集群之外的版本控制仓库中。如果需要,可以快速回滚配置、重新创建和恢复。
    • 应该使用YAML格式编写配置文件,而不是JSON。尽管这些格式都可以使用,但YAML对用户更加友好。
    • 可以将相关对象组合成单个文件,通常会更容易管理。
    • 不要没必要的指定默认值,简单和最小配置减少错误。
    • 在注释中说明一个对象描述更好维护。
    • YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。
    • YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。

    YAML文件格式注意事项:

    • 1. 不支持制表符tab键缩进,需要使用空格缩进
    • 2. 通常开头缩进2个空格
    • 3. 字符后缩进1个空格,
    • 4. “---” 表示YAML格式,一个文件的开始
    • 5. “#”注释

    • # 指定api版本
    • apiVersion: 

    • # 指定需要创建的资源对象
    • kind: 

    • # 源数据、可以写name,命名空间,对象标签
    • metadata:

    • # 指定对象名称
    • name:
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    View Code

    • # 描述资源相关信息
    • spec:

    • # 指定pod 副本数,默认1
    • replicas:
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
    View Code

    • # 资源标签选择器
    • selector:

    • # 描述资源具体信息
    • template:

    • # 匹配标签字段
    • matchLabels:

    • # 指定pod标签value:key
    • labels:
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
    View Code

    • # 指定容器信息
    • containers:

    • # 指定容器名称
    • - name:
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.9
            ports:
            - containerPort: 80
    View Code

    • # 指定镜像名称
    • image: 
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.9
            ports:
            - containerPort: 80
    View Code

    • # 暴露容器端口
    • ports:
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.9
            ports:
            - containerPort: 80
    View Code

    • # 指定暴露容器端口
    • - containerPort: 
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.9
            ports:
            - containerPort: 80
    View Code

    • # 添加环境变量
    • env:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      labels:
        os: centos
    spec:
      containers:
      - name: hello
        image: centos:6
        env:
        # 变量key
        - name: Test
        # 变量value
          value: "123456"
    View Code

    • # 启动容器后执行命令
    • command:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      labels:
        os: centos
    spec:
      containers:
      - name: hello
        image: centos:6
        command: ["bash","-c","while true;do date;sleep 1;done"]
    View Code

    • 重启策略 可添加(Always,OnFailure,Never
    • restartPolicy:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      labels:
        os: centos
    spec:
      containers:
      - name: hello
        image: centos:6
      restartPolicy: OnFailure
    View Code

    • # 健康检查模式(httpGet、exec、tcpSocket)
    • livenessProbe:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
        livenessProbe:
           # 健康检查模式
           httpGet:
             # 指定检查目录
             path: /index.html
             # 访问端口
             port: 80
    View Code

    • # 容器内管理volume数据卷
    • volumeMounts:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      labels:
        test: centos
    spec:
      containers:
      - name: hello-read
        image: centos:6
        # 容器内管理数据卷
        volumeMounts:
          # 数据卷名称
          - name: data
            # 容器数据卷路径
            mountPath: /data
      # 数据卷
      volumes:
      # 数据卷名称
      - name: data
        # 数据宿主机卷路径
        hostPath:
          # 指定宿主机数据卷路径
          path: /data
    View Code

    • # 宿主级管理volume数据卷管理
    • volumes:
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-test
      labels:
        test: centos
    spec:
      containers:
      - name: hello-read
        image: centos:6
        # 容器内管理数据卷
        volumeMounts:
          # 数据卷名称
          - name: data
            # 容器数据卷路径
            mountPath: /data
      # 数据卷
      volumes:
      # 数据卷名称
      - name: data
        # 数据宿主机卷路径
        hostPath:
          # 指定宿主机数据卷路径
          path: /data
    View Code

    • hsotip监听IP,可通过哪些宿主级ip访问
    • hostIP:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod2
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
    # hostport管理
        ports:
    # 指定http
        - name: http
    # 指定端口
          containerPort: 80
    # hsotip监听IP,可通过哪些宿主级ip访问
          hostIP: 0.0.0.0
    # 宿主级暴露端口,它会映射到containerport的容器端口
          hostPort: 89
    # 指定协议类型
          protocol: TCP
    View Code

    • # 宿主级暴露端口,它会映射到containerport的容器端口
    • hostPort:
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod2
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
    # hostport管理
        ports:
    # 指定http
        - name: http
    # 指定端口
          containerPort: 80
    # hsotip监听IP,可通过哪些宿主级ip访问
          hostIP: 0.0.0.0
    # 宿主级暴露端口,它会映射到containerport的容器端口
          hostPort: 89
    # 指定协议类型
          protocol: TCP
    View Code

    • # 暴露端口的协议类型
    • protocol: 
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod2
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
    # hostport管理
        ports:
    # 指定http
        - name: http
    # 指定端口
          containerPort: 80
    # hsotip监听IP,可通过哪些宿主级ip访问
          hostIP: 0.0.0.0
    # 宿主级暴露端口,它会映射到containerport的容器端口
          hostPort: 89
    # 指定协议类型
          protocol: TCP
    View Code

    • # 固定IP地址
    • clusterIP:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
        app: nginx
      ports:
      - name: http
        protocol: TCP
        port: 888
        targetPort: 80
      clusterIP: "10.10.10.11"
    View Code

    • # 服务类型
    • type:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service2
      labels:
      app: nginx
    spec:
      selector:
        app: nginx
      ports:
      - name: http
        port: 8080
        targetPort: 80
    # 服务类型
      type: NodePort
    View Code

    • # node节点创建socker的暴露端口,默认30000~32767
    • nodePort:
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service2
      labels:
      app: nginx
    spec:
      selector:
        app: nginx
      ports:
      - name: http
        port: 8080
        targetPort: 80
    # 服务类型
      type: NodePort
    View Code

  • 相关阅读:
    从零开始学习OpenCL开发(一)架构
    Android平台利用OpenCL框架实现并行开发初试
    g++ error: expected nested-name-specifier before 'XXX'
    Linux命令之xargs的分析及隐患
    Linux目录结构
    Linux系统目录/bin /sbin /usr/bin /usr/sbin和/lib /usrlib的一些分析
    rpm包制作
    git与svn的使用比较
    SVN的错误: working copy locked
    Linux远程桌面
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10002060.html
Copyright © 2011-2022 走看看