k8s字段
1、创建pod字段
1、node亲和性字段
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: dev
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 80
preference:
matchExpressions:
- key: a
operator: In #键的值必须在给定的列表中,exists节点必须存在这个值,不管它的值是什么
values:
- b
containers:
- name: pod1
image: docker.io/library/tomcat:8.5-jre8-alpine
imagePullPolicy: IfNotPresent
2、控制器字段
1、deployment字段
apiVersion:
kind:
metadata:
spec:
replicas: #副本数量
minReadySeconds: #默认是0,创建pod之后过几秒后升级
selector:
matchlabels:
strategy:
type: RollingUpdate滚动更新或者Recreate重建更新
rollingUpdate: #更新策略
maxSurge:#允许超过指定副本数量几个。默认是25%,5*25%=1.25当2个,
maxUnavailable: #更新过程中,允许几个pod不能用,目标5,这个为1哥不能用, 至少有4个可以用
template: #定义pod模版
metadata:
labels:
spec:
containers:
- name:
2、rs字段
[root@master rs]# cat rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs1
namespace: ziduan
spec:
replicas: 3
selector:
matchLabels:
rs1: pod1
template:
metadata:
labels:
rs1: pod1
spec:
containers:
- name: nginx
image: docker.io/library/nginx:1.9.1
imagePullPolicy: IfNotPresent
3、statefulset字段
-
有顺序的,并且这个控制器创建的pod有唯一的dns,其他都没有dns
-
访问这个svc返回的是pod的ip和dns
-
其他的服务的话,返回的是服务的dns和ip
[root@master kongzhiqi]# cat statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: state1
namespace: ziduan
spec:
replicas: 2
selector:
matchLabels:
state1: d1
serviceName: nginx #无头服务
template:
metadata:
labels:
state1: d1
spec:
containers:
- name: nginx
image: docker.io/library/tomcat:8.5-jre8-alpine
imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: ziduan
spec:
clusterIP: None
type: ClusterIP
selector:
state1: d1
ports:
- name: p1
port: 8080
targetPort: 8080
4、daemonset字段
- 每个节点只有一个存在
[root@master kongzhiqi]# cat daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemon1
namespace: ziduan
spec:
selector:
matchLabels:
daemon: d1
template:
metadata:
labels:
daemon: d1
spec:
containers:
- name: state1
image: docker.io/library/busybox:1.28
imagePullPolicy: IfNotPresent
command: ["/bin/sh","-c","sleep 360000"]
3、服务字段
1、nodeport字段
apiVersion: v1
kind: Service
metadata:
name: s1-d1
namespace: dev
spec:
type: NodePort #nodeport类型
selector: #服务选择器
app: d1
ports: #端口
- port: 80 #服务端口
targetPort: 80 #目标端口
nodePort: 30080 #节点端口
4、持久化存储
1、临时存储和和宿主机目录和nfs
#临时存储
apiVersion: v1
kind: Pod
metadata:
name: v1
namespace: dev
spec:
containers:
- name: v1
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
volumeMounts: #容器挂载点
- mountPath: /cache
name: v1
volumes: #挂载到主机上面的目录
- name: v1
emptyDir: {} #空目录
#宿主机目录
apiVersion: v1
kind: Pod
metadata:
name: v2
namespace: dev
spec:
containers:
- name: v2
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: v2
mountPath: /cache
volumes:
- name: v2
hostPath:
type: DirectoryOrCreate #不存在的创建
path: /data1
#nfs作为存储
[root@master data]# exportfs -arv
exporting *:/data/v4
[root@master data]# cat /etc/exports
/data/v4 *(rw)
apiVersion: v1
kind: Pod
metadata:
name: v4
namespace: dev
spec:
containers:
- name: v4
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: v4
mountPath: /cache
volumes:
- name: v4
nfs:
path: /data/v4 #nfs存储
server: 192.168.200.100 #服务器ip地址
2、pv和pvc字段
#创建pv,后端存储nfs作为pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: v3
namespace: dev
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
path: /data/v3
server: 192.168.200.100
#创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: v3-pvc
namespace: dev
spec:
accessModes: #访问模式
- ReadWriteOnce
resources: #pvc的需求
requests:
storage: 2Gi
#pod以pvc使用
[root@master volumes]# cat pod1.yaml
apiVersion: v1
kind: Pod
metadata:
name: p1
namespace: dev
spec:
containers:
- name: p1
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: p1
mountPath: /cache
volumes:
- name: p1
persistentVolumeClaim: #使用pvc作为存储
claimName: v3-pvc #pvc作为存储
5、hpa字段
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-test
namespace: test
spec:
minReplicas: 1
maxReplicas: 20
behavior: #精细化的定义伸缩策略
scaleUp:
policies:
- periodSeconds: 3 #最多每3秒的时间内增加5个pod
type: pods 3 #伸缩政策的类型,基于pod,percent基于百分比,value基于绝对值缩放
value: 5
metrics: #定义监控指标的
- resource: #仅当type为resource时,监控的资源
name: cpu #监控资源的名称,cpu或者memory
target: #监控资源的目标值,
type: Utilization #使用率,通常用于cpus, AverageValue 表示要达到平均值,用于memory
averageUtilization: 20 #资源请求值的百分比
type: Resource #基于cpu或者内存,pod基于数量的指标
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-1
6、rbac的字段
1、角色和角色绑定
[root@master rbac]# cat role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: r1
namespace: ziduan
rules:
- apiGroups: ["*"] # 这个apiversion
resources: ["pods"] # 资源的名称,pod,deployment
verbs: ["list"] # 能进行的操作
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: r1-binding
namespace: ziduan
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role # 绑定的角色的名称
name: r1
[root@master rbac]# cat role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: r1
namespace: ziduan
rules:
- apiGroups: ["*"]
resources: ["pods"]
verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: r1-binding
namespace: ziduan
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: r1
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User # 如果是serviceaccount的话,apigroup就是""这个了
name: q1

浙公网安备 33010602011771号