연재 시리즈

쿠버네티스 오퍼레이터 스터디 1주차 - 실습

악분 2022. 5. 24. 21:29
반응형

이 글은 1주차에서 진행한 실습내용을 정리했습니다.

 

1. 인프라 구조

aws환경에서 네이티브 쿠버네티스를 사용했습니다.

참고자료: 스터디 공유자료

 

2. 클러스터 구축

스터디에서 공유된 cloudformation템플릿을 사용하여 쿠버네티스를 구축했습니다. CNI는 calico를 사용했습니다.

$ curl -O https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/cloudneta-k8s.yaml
$ aws cloudformation deploy --template-file cloudneta-k8s.yaml --stack-name myk8s --parameter-overrides KeyName=<key-pair이름> SgIngressCidr=<공인IP>

# 원격 접속 후, 쿠버네티스 클러스터 구성되면 calico 등 설치
$ cd /root/DOIK/1 && ./final.sh && cd $HOME

 

3. headless서비스

3.1 statefulset, headless서비스 배포

배포할 쿠버네티스 리소스

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: "nginx"
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

 

3.2 sts, headless service, pod, pvc확인

 k get po,sts,svc,pvc

 

3.3 pv와 pvc고정 관계 확인

 k describe pv |  grep Source -A 3

 

3.4 headless서비스 dns질의

각 nginx파드 index.html에 hostname을 입력합니다.

for i in 0 2; do kubectl exec "web-$i" -- sh -c 'echo "$(hostname)-pv-test" > /usr/share/nginx/html/index.html'; done

 

netshoot파드를 실행합니다.

kubectl run -it --rm netdebug --image=nicolaka/netshoot --restart=Never -- zsh

 

netshoot파드에서 dns질의 결과를 확인합니다.

 

netshoot파드에서 srv타입 dns질의 결과를 확인합니다.

 

3.5 headless서비스를 이용한 파드접근

netshoot파드에서 headless서비스 srv레코드를 이용하여 파드에 접근합니다.

curl web-0.nginx.default.svc
curl web-1.nginx.default.svc
curl web-2.nginx.default.svc

 

4. 클러스터 삭제

cloudformation으로 쉽게 삭제할 수 있습니다.

$ aws cloudformation delete-stack --stack-name myk8s
반응형