1. topologySpreadConstraints 규칙 적용
  2. deployment 버전을 변경했을 때, restart 했을 때

3.Deployment Pod들이 늘어났다가 줄어들 떄

오늘 사용한 파일들

#azApod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  annotations:
    topology.kubernetes.io/zone: A
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
#config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: flask-app-config
data:
  app.py: |
    from flask import Flask
    import os

    app = Flask(__name__)

    @app.route('/')
    def home():
        # 환경변수 AVAILABILITY_ZONE을 가져와서 출력
        availability_zone = os.getenv('AVAILABILITY_ZONE', '알 수 없음')
        return f'<h1>현재 가용영역: {availability_zone}</h1>'

    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=80)
  requirements.txt: |
    flask
#deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flask-web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: flask-web
  template:
    metadata:
      labels:
        app: flask-web
    spec:
      containers:
      - name: flask-container
        image: python:3.9-slim  # python 이미지를 그대로 사용
        ports:
        - containerPort: 80
        volumeMounts:
        - name: flask-app-volume
          mountPath: /app.py
          subPath: app.py
        - name: flask-requirements
          mountPath: /requirements.txt
          subPath: requirements.txt
        env:
        - name: AVAILABILITY_ZONE
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        command: ["sh", "-c", "pip install -r /requirements.txt && python /app.py"]
        
      volumes:
      - name: flask-app-volume
        configMap:
          name: flask-app-config
      - name: flask-requirements
        configMap:
          name: flask-app-config
---
apiVersion: v1
kind: Service
metadata:
  name: flask-web-service
  annotations:
    service.kubernetes.io/topology-mode: auto
spec:
  selector:
    app: flask-web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer
#저번주차 과제 yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
            
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-sevice
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
    service.kubernetes.io/topology-mode: auto
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80