20220227作业

  1. HPA控制器实现pod弹性伸缩

    (1)手动扩容
    kubectl autoscale deployment magedu-tomcat-app1-deployment --min=3 --max=5 --cpu-percent=30 -n magedu
    (2)通过编写yaml进行扩容

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
    namespace: magedu
    name: magedu-tomcat-app1-podautoscaler
    labels:
    app: magedu-tomcat-app1
    version: v2beta1
    spec:
    scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: magedu-tomcat-app1-deployment
    minReplicas: 2
    maxReplicas: 10
    targetCPUUtilizationPercentage: 60

  2. CI/CD,基于Jenkins和gitlab实现代码部署和回滚

    (1)手动更新image:
    kubectl set image deployment/magedu-tomcat-app1-deployment magedu-tomcat-app1-container=192.168.1.138/magedu/nginx:v1.20.2.23.23 -n magedu
    (2)查看历史更新记录
    kubectl rollout history deployment magedu-tomcat-app1-deployment -n magedu
    (3)回滚到上一版本:
    kubectl rollout undo deployment magedu-tomcat-app1-deployment -n magedu
    (4)回滚到指定版本
    kubectl rollout undo deployment magedu-tomcat-app1-deployment --to-revision=2 -n magedu

  3. node亲和及反亲和,pod亲和及反亲和,污点与容忍

    (1)node打标签:
    kubectl label node 192.168.1.74 project=magedu
    kubectl label node 192.168.1.74 disktype=ssd
    (2)yaml中指定node标签:
    nodeSelector:
    project: magedu
    disktype: ssd
    (3)yaml中指定nodename
    nodeName: 192.168.1.73
    (4)存在多matchExpressions,只要其中一个满足就可以

点击查看代码
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions: #匹配条件1,多个values可以调度
              - key: disktype
                operator: In
                values:
                - ssd # 只有一个value是匹配成功也可以调度
                - hdd
            - matchExpressions: #匹配条件2,多个matchExpressions加上以及每个matchExpressions values只有其中一个value匹配成功就可以调度
              - key: project
                operator: In
                values:
                - mmm  #即使这俩条件2的都匹配不上也可以调度
                - nnn

(5)存在多key,必须全部满足才可以调度

点击查看代码
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions: #匹配条件1
              - key: disktype
                operator: In
                values:
                - ssd
                - hdd #同个key的多个value只有有一个匹配成功就行
              - key: project #条件1和条件2必须同时满足,否则不调度
                operator: In
                values:
                - magedu

(6)非强制亲和调度

点击查看代码
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 80 
            preference: 
              matchExpressions: 
              - key: project 
                operator: In 
                values: 
                  - mageduX
          - weight: 60 
            preference: 
              matchExpressions: 
              - key: disktype
                operator: In 
                values: 
                  - ssdX

(7)强制亲和+非强制亲和

点击查看代码
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution: #硬限制
            nodeSelectorTerms:
            - matchExpressions: #硬匹配条件1
              - key: "kubernetes.io/role" 
                operator: NotIn
                values:
                - "master" #硬性匹配key 的值kubernetes.io/role不包含master的节点,即绝对不会调度到master节点(node反亲和)
          preferredDuringSchedulingIgnoredDuringExecution: #软限制
          - weight: 80 
            preference: 
              matchExpressions: 
              - key: project 
                operator: In 
                values: 
                  - magedu
          - weight: 100 
            preference: 
              matchExpressions: 
              - key: disktype
                operator: In 
                values: 
                  - ssd

(8)node反亲和

点击查看代码
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions: #匹配条件1
              - key: disktype
                operator: NotIn
                values:
                - hdd #绝对不会调度到hdd的节点

(9)pod软亲和

点击查看代码
      affinity:
        podAffinity:
          #requiredDuringSchedulingIgnoredDuringExecution:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: project 
                  operator: In
                  values:
                    - python
              topologyKey: kubernetes.io/hostname 
              namespaces: 
                - magedu

(10)pod硬亲和

点击查看代码
      affinity:
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: project
                operator: In
                values:
                  - python
            topologyKey: "kubernetes.io/hostname"
            namespaces:
              - magedu

(11)pod强制反亲和

点击查看代码
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: project
                operator: In
                values:
                  - python
            topologyKey: "kubernetes.io/hostname"
            namespaces:
              - maged

(12)node打污点
kubectl taint node 192.168.1.74 key1=value1:NoSchedule
(13)node去除污点
kubectl taint node 192.168.1.74 key1=value1:NoSchedule-
(14)当前 taint effect 支持如下三个选项:
NoSchedule :表示k8s将不会将Pod调度到具有该污点的Node上 PreferNoSchedule :表示k8s将尽量避免将Pod调度到具有该污点的Node上 NoExecute :表示k8s将不会将Pod调度到具有该污点的Node上,同时会将Node上已经存在的Pod驱逐出去
(15)yaml中污点编辑

点击查看代码
      tolerations: 
      - key: "key1"
        operator: "Equal"
        value: "value1"
        effect: "NoSchedule"
  1. Promethus基础

    prometheus server: 主服务,接受外部http请求,收集,存储与查询数据等
    promethues targets: 静态收集的目标服务数据
    service discovery: 动态发现服务
    promethues alerting: 报警通知
    push gateway: 数据收集代理服务器(类似于zabbix proxy)
    data visualization and export: 数据可视化与数据导出(访问客户端)

posted @ 2022-02-28 14:39  没有猫的猫奴  阅读(62)  评论(0)    收藏  举报