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가 생성된 것을 확인할 수 있다.
반응형