kubernets ymal
1 通用部分
apiVersion <string>
:必选,版本号,例如v1(必选)
kind <string>
:资源类型,例如 Pod(必选)
metadata <Object>
:资源的元数据(必选)
spec <Object>
:资源的详细定义
- 示例
apiVersion: v1
kind: Namespace
metadata:
name: test
2 Pod
- 常用字段:
spec
containers
:容器相关定义
image
:镜像
imagePullPolicy
:镜像拉取策略
ports
:暴露端口
env
:设置容器内环境变量
volumeMounts
:使用挂载的卷
restartPolicy
:Pod重启策略
hostNetwork
:是否使用主机网络,默认是false
affinity
:节点的亲和性,用于计算Pod调度k8s集群中某个node上
volumes
:卷定义,可使用nfs、hostPath等方式
- 示例
apiVersion: v1
kind: Namespace
metadata:
name: test
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent #镜像拉取策略[Never|Always|IfNotPresent]
ports:
- containerPort: 80 #容器内端口
hostPort: 8080 #宿主机端口
protocol: UDP #协议类型[TCP|UDP|SCTP](默认TCP)
- containerPort: 80
hostPort: 8080
protocol: TCP
env: #环境变量
- name: env1
value: val1
volumeMounts:
- name: fs1
mountPath: /fs1
readOnly: false
restartPolicy: Always #容器重启策略[Never|Always|OnFailure]
hostNetwork: false #是否使用主机网络[true|false](默认false);如果使用,hostPort不能和containerPort不同
#nodeName: node1 #指定k8s节点名称,pod只会调度到此节点上
#nodeSelector: #节点选择器,匹配k8s节点上含test=nginx的节点
# test: nginx
affinity: #节点亲和性,pod调度到满足条件的节点上
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution: #必要要满足的条件
nodeSelectorTerms:
- matchExpressions:
- key: test
operator: In #便签匹配运算符,有In, NotIn, Exists, DoesNotExist
values:
- nginx
preferredDuringSchedulingIgnoredDuringExecution: #优先满足的条件
- weight: 1 #权重,范围1-100
preference:
matchExpressions:
- key: label-1
operator: In
values:
- key-1
- weight: 50
preference:
matchExpressions:
- key: label-2
operator: In
values:
- key-2
volumes:
- name: fs1
hostPath: # hostPath方式挂载,此外还有nfs、ceph等等方式
path: /root/fs1 #主机挂载点路径
type: DirectoryOrCreate #可选参数,默认空
2.1 节点亲和性
2.2 挂载
2.3 生命周期检查
2.4 生命周期钩子
3 Deployment
Deployment 是pod控制器的一种,实际上通常使用控制器来管理Pod,很少直接用Pod
- 常用字段
spec
replicas
:Pod副本数
selector
:标签选择器,用于匹配template
中定义的Pod
strategy
:更新策略(影响镜像修改,扩缩容操作)
template
:Pod模板,语法大致和Pod ymal语法相同
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
replicas: 3 #Pod副本数量
selector:
matchLabels: #匹配下面容器定义的标签
app: nginx
strategy: #更新策略
type: RollingUpdate
rollingUpdate: #滚动更新策略,当type: RollingUpdate时才能用
maxSurge: 1 #滚动更新时,最多比期望的副本数多几个pod maxSurge和maxUnavailable不能同时为0,否则冲突,无法滚动更新。可以使用百分比(30%)和数值方式(2)
maxUnavailable: 1 #滚动更新时,最多比期望的副本数少几个pod
type: RollingUpdate #更新策略,[Recreate,RollingUpdate]。Recreate删除pod后再重建;RollingUpdate滚动更新,新老pod可以同时存在
template: #这部分基本与pod中定义相似
metadata:
labels:
app: nginx #此标签用于上面selector匹配的
spec:
containers:
- image: nginx
name: nginx
4 Service