k8s几种yaml文件详解
创建命名空间
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:
下一篇: k8s yaml文件详解