【笔记8】HPA与Networkpolicy

HPA

什么是HPA

Kubernetes的HPA(Horizontal Pod Autoscaler)是一种自动缩放Pod副本数的功能,它根据监视的资源指标(如CPU、内存等)的变化来动态调整Pod的副本数量。这种自动缩放功能可以帮助应用程序在负载波动的情况下保持性能和稳定性。

HPA的工作原理是,当应用程序的资源使用率超过预设的阈值时,HPA会根据预设的扩容策略来增加Pod的副本数量。相反,当资源使用率下降并低于预设的阈值时,HPA会根据预设的缩容策略来减少Pod的副本数量。这种动态调整Pod副本数量的方式可以帮助应用程序在负载波动的情况下保持响应性和性能。

注意HPA的工作需要依赖merics-server,需要先部署此程序。
下载merics-server部署文件:

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml

修改YAML文件

vi high-availability-1.21+.yaml
添加一个配置参数: - --kubelet-insecure-tls 

HPA示例

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1  ##最小Pod数为1
  maxReplicas: 10  ##最大Pod数为10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50  ##当Pod的CPU使用率超过50%时,需要自动扩容

上述示例定义了一个HPA资源,此HPA资源监视名叫php-apache的Deployment资源,一旦php-apache关联的Pod的使用率超过50%时进行自动扩容,扩容的最大值是10个Pod。

Networkpolicy

什么是Networkpolicy

NetworkPolicy是Kubernetes设计用来限制Pod访问的对象,通过设置NetworkPolicy策略,可以允许Pod被哪些地址访问(即入规则)、或Pod访问哪些地址(即出规则)。这相当于从应用的层面构建了一道防火墙,进一步保证了网络安全。

应用场景举例:

  • Pod A不能访问Pod B;
  • 开发环境所有Pod不能访问测试命名空间;
  • 提供对外访问时,限制外部IP;

NetworkPolicy的规则可以选择3种,具体如下:

  1. namespaceSelector:根据命名空间的标签选择,具有该标签的命名空间都可以访问。
  2. podSelector:根据Pod的标签选择,具有该标签的Pod都可以访问。
  3. ipBlock:指定IP地址

Networkpolicy示例

以下是官方示例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: db
  policyTypes:
    - Ingress
    - Egress
  ingress:
    - from:
        - ipBlock:
            cidr: 172.17.0.0/16
            except:
              - 172.17.1.0/24
        - namespaceSelector:
            matchLabels:
              project: myproject
        - podSelector:
            matchLabels:
              role: frontend
      ports:
        - protocol: TCP
          port: 6379
  egress:
    - to:
        - ipBlock:
            cidr: 10.0.0.0/24
      ports:
        - protocol: TCP
          port: 5978

此示例定义了网络策略,此策略对出方向(ingress)和入方向(ingress)做了限制,并作用在拥有role=db标签的pod上。

其中对于入方向的定义是:

  1. 允许来自172.17.0.0/16网段(排除172.17.1.0/24)的IP地址访问TCP的6379端口
  2. 允许来自名为myproject的namespace的Pod访问TCP的6379端口
  3. 允许来自拥有role=frontend标签的Pod访问TCP的6379端口

对于出方向的定义是:

  1. 允许访问10.0.0.0/24网段的IP地址访问TCP的5978端口
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值