欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

k8s几种yaml文件详解

程序员文章站 2022-03-12 09:35:32
...

创建命名空间

kind: Namespace
apiVersion: v1
metadata:

不可以使用 下划线,

name: k8s-tools-os
labels:
name: k8s-tools-os


为部署的容器开放端口

Service

kind: Service
apiVersion: v1
metadata:

所属的命名空间

namespace: k8s-tools-os

Service 名称

name: tools-service-name

Service 标签

labels:
name: tools-service-label

容器的详细定义

spec:

告诉 K8s Docker容器对外开放几个端口

如果指定为 NodePort 则这个service的端口可以被外界访问

type: NodePort
ports:
- name: http
protocol: TCP
# port 是service的端口
port: 880
# targetPort 是pod的端口
targetPort: 80
# 可以被外网访问的端口
nodePort: 30880

选择 Pod的label名

selector:
# Pod的label名
app: tools-pod-label


创建要部署的容器

种类:告诉 k8s 下面这些配置模板的含义(常用的包括:Namespace, Deployment, Service, Pod, …)

kind: Deployment

版本号 规定格式 apps/* 必须这么写

apiVersion: apps/v1

Pod

metadata:

Pod 的所属的命名空间

namespace: k8s-tools-os

Pod 名称

name: tools-pod-name

容器的详细定义

spec:

告诉 K8s 启动几个节点

replicas: 1

滚动升级时,容器准备就绪时间最少为30s

minReadySeconds: 30

选择模板

selector:
# 根据模板的labels来选择
matchLabels:
# 选择下面模板中, Pod 的label名
app: tools-pod-label

定义 Pod模板

template:
metadata:
# Pod模板的labels
labels:
# Pod的label名
app: tools-pod-label
spec:
# k8s将会给应用发送SIGTERM信号,可以用来正确、优雅地关闭应用,默认为30秒
terminationGracePeriodSeconds: 3

  # 告诉 k8s 根据设置的节点名称,将这个pod部署到哪个节点机器上(默认不指定,k8s会自动分配);
  # 因为 nodeName(节点的名称不可以重复,因此使用nodeName只能指定一台节点服务)
  # nodeName: k8s-node1
  # 告诉 k8s 根据设置的节点标签,将这个pod部署到哪个节点机器上(默认不指定,k8s会自动分配);
  # 因为 nodeLabels(节点的标签可以重复,因此使用nodeSelector是可以指定同一个标签的多个节点服务)
  nodeSelector:
    type: "test"

  # 配置 Docker容器
  containers:
    # Docker 镜像名
    - name: k8s-tools-os
      # 告诉 K8s 要部署的 Docker 镜像名:Tag
      image: tools-os:v1.0.0
      # 告诉 K8s 如果本地没有这个镜像,那么就新下载一个
      imagePullPolicy: IfNotPresent
      ## 告诉 K8s Docker容器对外开放几个端口
      ports:
        - containerPort: 80
          #protocol: TCP
      #  #env:
      #  #  - name:
      #  #  value:

相关标签: kubernetes