k8s

CKA 준비 (11) Deployment & Expose the service

Joon0464 2022. 5. 31. 23:36

이 게시물은 아래 강의를 참고 하였습니다.
참고 강의 https://www.youtube.com/watch?v=KdATmTulf7s&list=PLApuRlvrZKojqx9-wIvWP3MPtgy2B372f&index=1 

 

 

이론)

https://junior-developer.tistory.com/49

문제)
작업 클러스터 : k8s

  • Reconfigure the existing deployment front-end and add a port specification named http exposing port 80/tcp of the existing container nginx.
  • Create a new service named front-end-svc exposing the container port http
  • Configure the new service to also expose the individual Pods visa a NodePort on the nodes on which they are scheduled

풀이)

- context 변경

$ sudo kubectl config use-context k8s

- 기존에 존재하는 deployment 를 yaml 파일로 추출 및 수정

https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport 를 참고

$ sudo kubectl get deployments.apps front-end -o yaml > front-end.yaml
$ sudo vi front-end.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: front-end
spec:
  replicas: 2
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        name: http
        ports:
        - containerPort: 80
          name: http

---
apiVersion: v1
kind: Service
metadata:
  name: front-end-svc
spec:
  type: NodePort
  selector:
    run: nginx
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: http

Service의 targetPort 설정을 http로 설정한 이유 : Deployment의 containerport : 80 을 http로 name을 지정했기 때문

문제에 port:80 으로 하라는 말은 딱히 없는듯..

- 수정된 yaml 파일로 deploy 진행

$ sudo kubectl delete deployments.apps front-end
$ sudo kubectl apply -f front-end.yaml

- 정상 배포 및 동작 확인