DevOps/Kubernetes

[Kubernetes] 배포

잔망루피 2024. 6. 9. 18:38

GKE 클러스터에 연결

export my_zone=us-central1-c
export my_cluster=cluster-1
source <(kubectl completion bash)
gcloud container clusters create $my_cluster --num-nodes 3 --zone $my_zone --enable-ip-alias
gcloud container clusters get-credentials $my_cluster --zone $my_zone

 

gcloud container clusters create $my_cluster --num-nodes 3 --zone $my_zone --enable-ip-alias를 실행시키니까 이미 존재한다고 한다.

난 GUI 기반으로 생성해서 그런 듯

 

 

deployment.yaml

cat > deployment.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: moonjukhim/nginx:1.7.8
          ports:
            - containerPort: 80
EOF

 

 

 

디플로이먼트 배포

kubectl apply -f deployment.yaml

 

 

디플로이먼트 상태 확인

kubectl get deployments

 

kubectl get pod

 

 

kubectl exec -it {POD_NAME} -- /bin/bash

nginx-deployment-5f5c45ccb-65k5x 파드의 bash에 접속한다.

bash에서 빠져나올 때는 exit를 실행한다.

 

 

수동 스케일업

kubectl scale --replicas=4 deployment nginx-deployment

 

kubectl get deployments

3개에서 4개로 늘어났다.

 

 

kubectl scale --replicas=0 deployment nginx-deployment

replica 수를 0으로 설정한다.

 

kubectl get deployments

 

nginx-deployment가 0개로 설정된 것을 확인할 수 있다.

 

 

서비스 지정

cat > service.yaml<<EOF
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 60000
      targetPort: 80
EOF

 

kubectl apply -f service.yaml

서비스를 생성한다.

 

kubectl get service nginx

생성된 서비스를 확인한다.

 

 

카나리아 배포

cat > canary.yaml<<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-canary
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
        track: canary
        Version: "1.24"
    spec:
      containers:
      - name: nginx
        image: moonjukhim/nginx:1.24
        ports:
        - containerPort: 80
EOF

 

kubectl apply -f canary.yaml

 

kubectl get deployments

nginx-canary가 생성된 것을 확인할 수 있다.

반응형

'DevOps > Kubernetes' 카테고리의 다른 글

[Kubernetes] CI/CD  (1) 2024.06.11
[Kubernetes] helm  (0) 2024.06.09
[Kubernetes] 컨테이너 생성  (0) 2024.04.18
[Kubernetes] Standard 클러스터 생성  (0) 2024.04.12