정보통신공학과 노선변경기
Kubernetes 4일차 daemonset, Job controller, Cronjob controller, 네트워크- 서비스, Nodeport, Loadbalancer(Metal lb 설치) 본문
Kubernetes 4일차 daemonset, Job controller, Cronjob controller, 네트워크- 서비스, Nodeport, Loadbalancer(Metal lb 설치)
HEONPOLI 2021. 7. 19. 22:53*데몬셋(ds)
모든 노드에 파드를 하나씩만 배치하는 컨트롤러, 복제본 지정 X
레플리카셋은 파드를 지정하지만, 데몬셋은 노드를 지정한다(nodeSelector 이용,파드 또한 생성하기는 한다)
apiVersion: apps/v1 kind: DaemonSet metadata: name: myapp-ds spec: selector: matchLabels: app: myapp-ds template: metadata: labels: app: myapp-ds spec: nodeSelector: node: development containers: - name: myapp image: ghcr.io/c1t1d0s7/go-myweb ports: - containerPort: 8080 |
node에 label 생성해주지 않고 daemonset 생성한다면
kubectl get ds 하더라도 desired가 0이다.
따라서 k-node1을 예시로 node=development 레이블을 지정해준다면
kubectl label node k-node1 node=development
desired는 1이되고 pod가 k-node1에 배치,생성된다.
노드에 장애가 일어나도 다른 노드로의 파드가 배치되지는 않는다..
<<노드 하나 없애보기>>
*Job 컨트롤러
어플리케이션이 실행되고 완료되면 파드의 할 일이 끝난 것으로 간주하고, 파드를 종료시킨다.
레이블 셀렉터 직접지정X, 셀렉터에 의해 관련없는 파드가 선택되서 잡이 이미 완료되었다고
판단해서 잘못 종료시킬 수 있기 때문이다.
apiVersion: batch/v1 kind: Job metadata: name: myapp-job spec: template: metadata: labels: app: myapp-job spec: restartPolicy: OnFailure containers: - name: myapp image: busybox command: ["sleep", "60"] |
**다중 잡 컨트롤러
spec.completions 의 개수를 지정해주면 순차적으로 그 개수만큼 작업을 진행한다.
spec.parallelism 의 개수를 지정하면 동시에 실행할 잡의 개수를 지정해줄 수 있다.
apiVersion: batch/v1 kind: Job metadata: name: myapp-job-para spec: completions: 3 parallelism: 3 #동시에 실행할 잡의 개수를 3개로 지정 template: metadata: labels: app: myapp-job-para spec: restartPolicy: OnFailure containers: - name: myapp image: busybox command: ["sleep", "60"] |
**백오프, 유효 데드라인 설정
spec.backoffLimit: 잡을 실패로 만들기 전 재시도 횟수
spec.activeDeadlineSeconds : 잡이 시작된 후 작동할 유효한 시간설정 가능
*CronJob
주기적으로 잡을 반복적으로 실행할 필요가 있을 때 사용하는 컨트롤러
apiVersion: batch/v1beta1 kind: CronJob metadata: name: myapp-cj spec: schedule: "*/2 * * * *" jobTemplate: spec: template: metadata: labels: app: myapp-cj spec: restartPolicy: OnFailure containers: - name: myapp image: busybox command: ["sleep", "20"] |
**크론잡 컨트롤러의 제한사항
1) startingDeadlineSeconds
초를 기준, 마지막 스케줄링된 잡 시점부터 지금까지 얼마나 많은 잡이 누락되었는지 확인 카운팅할 데드라인시간.
100 ⇒ 마지막 스케줄링부터 100초까지 일정을 놓친 잡이 있는지 확인
2) concurrencyPolicy
Allow: 잡 동시실행 가능
Forbid: 동시실행 불가능
Replace: 현재 실행중인 잡 취소 후 새로운 잡으로 교체
apiVersion: batch/v1beta1 kind: CronJob metadata: name: myapp-cj-dl-al spec: schedule: "* * * * *" startingDeadlineSeconds: 100 concurrencyPolicy: Allow jobTemplate: spec: template: metadata: labels: app: myapp-cj-dl-al spec: restartPolicy: OnFailure containers: - name: myapp image: busybox command: ["sleep","80"] |
*네트워크
**클러스터 내부 서비스
1) 서비스
**서비스 탐색
환경변수이용 => 많이 안써
***DNS를 이용한 서비스탐색
모든 서비스를 생성할 때 FQDN이 할당된다
host -v myapp-svc # fqdn 확인
네임스페이스가 다른 파드에서 서비스 검색할 때
myapp-svc.default 이렇게 정해줘야 검색된다
**클러스터 외부 서비스
서비스의 종류
1) ClusterIP : 클러스터 내부용 서비스
2) NodePort :
클러스터 모든 노드에 외부 접근용 포트를 할당함, 노드의 포트를 사용하여 외부에서 접근 가능, 노드의 포트로 접근하면 서비스가 파드로 리다이렉트 해준다.
3) LoadBalancer : metalLB를 사용하여 구현한다. NodePort의 확장, 로드밸런서로 접근하면 서비스를 통해 파드로 리다이렉션 함
서비스형태로 로드밸런서를 type으로 해주고, rs pod 들이 이미 running 상태임을
이미 running 상태이다. myapp-rs.yaml 파일을 create한 상태이다.
Metallb가 설치되어있다면
Kubectl get svc myapp-svc-lb 확인했을 때 external-ip 또한 주어진다.
curl http://192.168.200.200 으로 접근가능하다.
4) ExternalName :
lb - > node port -> svc -> enpoint 를 통해서 pod로.. 의 경로로 파드에 접속 가능하게 해준다..
똑같은 파드를 셀렉팅한다는 것을 알아보느ㄴ 법
kubectl get ep # 엔드포인트 같으면 똑같은 파드 셀렉팅 한 것
sudo ss -tnlp # 포트상태 보는 명령어
***LB 구성
***MetalLB 설치
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.10.2/manifests/metallb.yaml
<config.yaml 파일 작성>
kubectl apply -f config.yaml 실행
'Sub7_Kubernetes' 카테고리의 다른 글
Kubernetes 6일차 어플리케이션 사용자화, 이미지 사용자화, ConfigMap, Secret, ingress(인그레스) 이용 TLS종료 Proxy 구현 (0) | 2021.07.19 |
---|---|
Kubernetes 5일차 인그레스, 스토리지(rook-ceph설치), 정적볼륨프로비저닝, 동적볼륨프로비저닝, (0) | 2021.07.19 |
Kubernetes 3일차 주요사용 리소스, Label, 파드의 생명주기, Replication Controller, Replicaset (0) | 2021.07.19 |
Kubernetes 2일차 쿠버네티스 버전관리, Yaml파일 작성, 파드 생성 (0) | 2021.07.19 |
Kubernetes 1일차 kubeadm 이용 쿠버네티스 설치, 클러스터 생성하기 (0) | 2021.07.19 |