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


posted @ 2026-04-14 09:04  q_7  阅读(15)  评论(0)    收藏  举报