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  没有猫的猫奴  阅读(17)  评论(0)    收藏  举报