2023-03-22 12:53:00
22 03 2023
摘要:k8s 自动扩缩

新建一个my-app.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
  namespace: dev
  #uid: 2f365299-c285-4624-aa4e-4cdd88ecbc39 #这个是级联删除的作用
  labels:
    app: my-app
spec:
  replicas: 6
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      affinity:
          podAntiAffinity:
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchExpressions:
                    - key: app
                      operator: In
                      values:
                      - my-app
                  topologyKey: "kubernetes.io/hostname"

      containers:
      - name: my-app
        image: $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:v$BUILD_NUMBER
        ports:
        - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  name: my-app-server
  namespace: dev
  labels:
    app: my-app-server
spec:
  ports:
    - name: http-my-app
      protocol: TCP
      port: 9001
      targetPort: 80
      nodePort: 32393
  selector:
    app: my-app
  type: NodePort
  sessionAffinity: None
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-deployment
  namespace: dev
  #ownerReferences: #这个是级联删除的作用
  #- apiVersion: apps/v1
  #  blockOwnerDeletion: true
  #  controller: true
  #  kind: Deployment
  #  name: my-app-deployment
  #  uid: 2f365299-c285-4624-aa4e-4cdd88ecbc39
spec:
  maxReplicas: 20
  metrics:
  - resource:
      name: memory
      target:
        averageValue: 2Gi
        type: AverageValue
    type: Resource
  - resource:
      name: cpu
      target:
        averageUtilization: 60
        type: Utilization
    type: Resource
  minReplicas: 5
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app-deployment

命令行执行:
kubectl apply -f my-app.yaml

延伸阅读
  1. 上一篇:JDK
  2. 下一篇:Nginx
发表评论