목록전체 글 (194)
코알못
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bPoinf/btssUNrRG4l/HLjDHa2s62ZF3HjOgo25ik/img.png)
DaemonSet 컨트롤러는 노드당 Pod가 한개씩 실행 되도록 보장하는것으로 이는 어디다 쓸까? 노드당 하나씩 실행해야하는 로그 수집기, 모니터링 에이전트 프로그램 실행시 적용하게 된다! DaemonSet의 경우 ReplicaSet 과 동일한 형식으로 작성하고 노드당 1개씩 띄워 지므로 replicas만 정의 하지 않는다. 우선 노드 추가시 daemonSet에 의해 pod 가 생성 되는지 실습을 위해 노드 하나를 제거 하고 시작한다 우선 노드 확인후 $ kunectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready control-plane 4m39s v1.27.2 node2 Ready 42s v1.27.2 node3 Ready 20s v1.27.2 노드 명을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c7ELQ9/btssThUERf1/VONVJ4A8OFbv3SYnrBJPs1/img.png)
이번 시간에는 Controller 중에 하나인 Deployment 를 알아보자! Deployment의 경우 배포를 위한 Controller로 ReplicaSet을 이용해서 Pod 수를 조절하는 방법을 사용한다. 그리고 Rolling Update(파드를 '점진적=하나씩'으로 새 버전으로 업데이트하여 서비스 중단없이 배포 한다.), RollBack 기능을 지원하여 배포를 원활하게 진행 할 수 있다. Rolling Update, RollBack 기능을 이용하지 않으면 내부 문법은 ReplicaSet과 동일하게 이용할 수 있어 저번 시간에 사용한 ReplicaSet yaml 파일에 kind 부분만 ReplicaSet에서 Deployment로 변경하여 deploy-nginx.yaml 을 생성해보자! # deplo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/k64Qp/btssN3bLTnb/kP7L3oRGwand5D4knIsCx0/img.png)
이번 시간에는 Contoller 종류중 하나인 ReplicaSet에 대해 알아보자! 저번 시간에 알아본 ReplicationController 보다 풍부한 selector를 가지고 있다. 예시를 통해 살펴보자! 이전 ReplicationController의 경우 아래와 같이 정의 하고 label 2개 모두 해당 될 시 관리 대상에 포함된다. spec: replicas: 3 selector: app: webui version: "2.1" ReplicaSet 으로 동일하게 구현 하면 matchLabels를 통해 구현하면 된다. spec: replicas: 3 selector: matchLabels: app: webrui version: "2.1" matchLabels으로만 구현도 가능하나 matchExpre..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cQ6F0t/btssVGr8ECi/9PEOIE6KGMWkDMt7W3T42k/img.png)
컨트롤러는 Pod의 갯수를 보장해주는 역할을 하며 아래와 같이 여러개의 컨트롤러가 있다. ReplicationController ReplicaSet Deployment DaemonSet StatefulSet Job CronJob 이번 시간에는 ReplicationController를 먼저 알아보도록 하자! ReplicationControllers는 지정한 label selector를 가진 Pod 가 요청한 replica 수 보다 작다면 정의한 template 를 보고 파드를 생성하는 Controller 로 아래와 같이 정의한다. # rc-nginx.yaml apiVersion: v1 kind: ReplicationController metadata: labels: run: rc-nginx name: rc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eoPcFK/btssvguTyvW/ORzQNRBMxJXFcB2ONjKCO1/img.png)
하나의 노드에 여러 컨테이너 파드가 뜰 수 있으며 리소스 제한을 두지 않는다면 하나의 파드가 리소스를 다써버려 다른 파드에 장애가 나게 된다. 우리는 이를 방지 하기 위해 Resource Requests를 사용하여 리소스 제한을 두도록 한다! 그리고 너무 타이트한 파드 배치가 되지 않도록 어느정도 리소스의 여유가 있는 노드에 할당하고 싶다면 Resource Requests 기능을 이용하면 된다! 리소스 조정 항목 내용 Resource Requests 파드를 실행하기 위한 최소 리소스양을 요청 Resource Limits 파드가 사용할 수 있는 최대 리소스양을 제한 단위는 아래를 참고한다. MB 1000KB 1Mib 1024Kib 1core 1000mc 이제 nginx 컨테이너 파드를 요청하는데 reque..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b981hm/btsr4jy79pi/nIYDsmmn1HhU3BEU8gdUD0/img.png)
pod 안에 init container, main container 를 같이 두고 반드시 실행 되어야 하는 컨테이너는 init 컨테이너로 지정하여 init 컨테이너가 정상일때 main container가 실행 되도록 해야할때 사용한다. init 컨테이너는 아래와 같이 spec.initContainers 에 컨테이너를 지정한다. apiVersion: v1 kind: Pod metadata: name: myapp labels: app: myapp spec: containers: - name: main-app image: initContainers: - name: init-app image: 쿠버네티스 홈페이지에 예시가 있어 해당 예시로 실습을 진행해보도록 하자! https://kubernetes.io/doc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVXNCJ/btsq2kZiYCV/skcyPXJcUTfUKMX7p3u6c0/img.png)
쿠버네티스는 self-healing 기능이 있으며 Liveness Probe를 이용하면 해당 기능을 사용할 수 있다. 아래와 같이 spec.containers 부분에 정의하며 apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: my-nginx image: nginx licenessProbe: httpGet: path: / port: 80 위에 httpGet 방식 포함하여 세가지가 있어 서비스에 맞게 사용하면 된다. 매커니즘 형식 어떻게 확인 httpGet httpGet: path: / port: 80 지정된 port, path를 주기적으로 호출하여 200이 아닌 값이 나오면 컨테이너 다시 시작 tcpSocket tcpS..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cb4xpO/btsq0wFGSSX/5hq0JNsSVez3fYra90IhU1/img.png)
우리는 쿠버네티스에서 클러스터 관리 할때 yaml 파일, 또한 yaml 파일에서 Object 정의시 apiVersion 을 정의한다. 하지만 저자의 경우 왜 이렇게 쓰는지에 대해 알아본적이 없으며 알고 사용하는것과 모르고 사용하는것은 다르기에 간단하게 알아 보도록 하자! 우선 yaml은 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식이다. 아래와 같은 구조를 가지고 있으며 $ vi nginx.yaml apiVersion: v1 kind: Pod metadata: labels: run: my-nginx name: my-nginx spec: containers: - image: nginx name: my-nginx :wq! 작성하는 방법은 아래와 같다. 구분 내용 상세 들여쓰기 스페이스바 Tab X 문법 Sc..