k8s 46

controller/ job

# 기본적인 pod 동작원리 kubectl run testpod --image centos:7 --command sleep5 pod의 기본적인 특징이, pod안에 컨테이너가 제대로 안되면 계속 재시작을 시킴 liveness container는 이런걸 커스텀 할 수 있는것 같고.. 기본적으로는 pod안에 컨테이너가 정상이아니면 계속 살려냄. kubectl get pods -o wide --watch containerCreating으로 컨테이너가 생겨나고, running하다가 5초후에 sleep 5 커맨드가 끝나고 멈춰버린다. 안에있던 코드는 정상적으로 종료된거다. 때문에 completed가 뜨고 실행중인 컨테이너가 0/1로 바뀌는데, 이제 동작하는 컨테이너가 없으니 다시 이 컨테이너를 살려내고 다시 5초후..

k8s/concept 2023.12.02

controller/ daemonSet & statefulSet

## 마스터노드 - 워커노드 커넥션 연동&해제하기 # 마스터 노드 - 워커 노드를 연결을 끊는 방법부터 알아보자. master node에서 먼저 node를 제거해줘야 한다. kubectl get nodes 난 현재 worker1, worker2 이렇게 두 워커 노드가 있다. 여기서 worker1 node를 삭제해보겠다. 삭제하기전에 node1에서 작동중인 pod가 있는지를 체크하고 삭제하자. kubectl delete nodes worker1 삭제 후에 해당 워커노드 vm으로 가서, kubeadm reset 명령어를 치면 master node와의 행복한 기억들을 모두 지워준다. 중간에 y까지 치고 동의하면, 뭐가 뜨는데 잘된건진 모르곘다. 이후에 join을 쳤을때 안되면 잘안된거다. # master no..

k8s/concept 2023.12.01

controller/ replicaSet & deployment

하씨발 이틀동안 적어놓은 포스팅 임시저장 싹다 사라져서 다시 적어야 한다 ㅈ같은씨발 # replicaSet replicaSet은 replication controller와 거의 비슷하다고 봐도 될것같다. 그냥 파드 수를 보장하는기능은 가능한데 조금더 업그레이드 된 기능은 더욱 풍부한 라벨셀렉터를 지원한다는 점이다. 단순히 replication controller는 라벨을 AND연산으로 관리한다고 하면, replica Set의 셀렉터는 OR연산등 여러가지를 지원한다. # replication controller와 replicaSet의 yaml형식 비교 replication controller와 뭐 다 비슷하게 생겼지만 셀렉터가 다르다. 얘는 matchLabels으로 한번 더 들어간다. 그리고 그 이후는 키..

k8s/concept 2023.11.30

controller/ 개념 & replication controller

# 개념 이전에 pod 실행 순서를 설명하면서 써먹었던 그림인데, 파드가 생성되는건 먼저 API에 명령어로 요청을 보내고 etcd에서 노드 정보들을 가져와서 scheduler가 파드를 노드에 알아서 분배해주는 과정으로 pod가 생성된다고 했다. 근데 그 전에도 있던 controller도 포함했는데 설명에 없었다. controller는 pod의 갯수를 보장해주는? 그런거라고 볼 수있다. aws의 auto scaling?에서의 수평적 확산 개념과 연동지어서 생각 할 수도 있을듯..? 파드의 갯수를 보장해준다. 이걸 마스터 노드의 controller가 보장을 해주게 된다. # 컨트롤러의 종류 이렇게 일곱가지의 컨트롤러 종류가 있는데, cronjob - job은 짝꿍, deployment와 replicaset은..

k8s/concept 2023.11.28

pod/ static pod & resource & 환경변수

## static pod 만들기 보통 마스터노드에서 컨테이너를 만들면 저렇게 api서버를 거쳐서 pod가 생성된다. 하지만 static pod는 워커 노드 자체에서 kubelet이 직접 pod를 만든다는 것이다. 즉 이 pod는 kublet데몬에 의해 관리되는 파드이다. 마스터노드에서 확인가능 # 직접 만들어보자. 일단 워커 노드중 아무거나 하나 가서 해당 파일 내용을 보자. cat /var/lib/kubelet/config.yaml 요기에 static pod path가 있음 static pod path는 /etc/kubernetes/manifests 라고 한다. 직접 이 경로에 가보자. cd /etc/kubernetes/manifests https://kubernetes.io/docs/concepts/..

k8s/concept 2023.11.27

pod/ liveness-probe(self-healing)

# 기본개념 pod안에있는 컨테이너가 자체적으로 자가검진을 해서 원하는 기능이 동작안할경우 컨테이너를 재시작 해주는 기능이다. 예를들어 웹서버를 띄웠는데 80포트로 연결했는데 응답이 500번대가 뜨면 컨테이너를 재시작 해주는 거임. # 종류 - httpGet 웹사이트에 80번포트로 게쏙 get요청보내고 응답하는지 확인함. 200응답안주면 컨테이너 재시작해주는거다. - tcpSocket tcp연결을 지정한 포트로 시도하고 안되면 컨테이너 재시작 - exec 커맨드 게속 날리고 종료코드가 0이아니면 컨테이너 재시작 걍 커맨드 날렸는데 응답이 없으면 재시작하는 그런 기능이다. # http로 예를 들어볼까? apiVersion: v1 kind: Pod metadata: name: test-pod spec: co..

k8s/concept 2023.11.27

pod/ flow & init container & infra container

# 파드 생성 순서 우리가 마스터 노드에서 kubectl 명령어를 치면 먼저 api 가 문법 맞는지 체크부터한다. 그다음, etcd정보(node정보들)를 가져와서 스케줄러에 보낸다. etcd가 노드 관리하는듯? 스케줄러는 어느 노드에 pod를 띄울지 정하는애니까 이런 정보를 받아야 노드를 정할 수 있을것이다. 스케줄러는 파드를 어느 node에 띄울지 선택하고 띄워준다. 띄워주고 나서는 running상태가 된다. 배치 받고나서는 running상태 or fail상태 뭐 단순하게 배웠는데, 실제 환경에서 테스트를 해보면.. 현재 위아래로 세션을 두개 띄웠고 위 세션에서는 kubectl get pods -o wide --watch 명령어로 파드생성을 실시간으로 모니터링하고 있다. 이제 아래 세션에서 새로운 파드..

k8s/concept 2023.11.26

pod/ 멀티파드, yaml파일 생성

# pod란? 컨테이너를 표현하는 k8s의 최소단위(멀티컨테이너도 됨) 내가 실수 했던게.. 파드하나가 컨테이너인줄 알았는데 api단위라더라. 아이피 하나씩 부여되고 여기엔 여러 컨테이너가 들어갈수도, 하나만 있을수도 있을 수 있는듯. 포트포워딩으로 나눠줄테고.. 예를들어 3티어 아키텍쳐를 파드하나에 쑤셔넣었다고 보면 될듯 암튼 이렇다고 한다. # pod 만들어서 돌리기 kubectl run 파드이름 --image=nginx:latest # 야믈 템플릿 따기 kubectl run test --image=nginx:latest --dry-run -o yaml 현재 생성된걸로 할수도 있고..한데 기본적인 yaml따려면 이게 가장 편한듯? >xxxx.yaml로 아예 파일생성까지도 할 수 있다. 이 명령어를 치..

k8s/concept 2023.11.26

쿠버네티스 namespace

# 기본 개념 네임스페이스는 리소스들을 분리하고 관리하는거다. 그냥 컴퓨터에서 디렉토리 같은 분류라고 보면 될 것같다. 물론 디렉토리안에 또 다른 디렉토리 넣는것처럼 네임스페이스 안에 또다른 네임스페이스를 만들 수는 없다. 중첩은 불가능. # namespace생성 - 커맨드로 만들기 kubectl create namespace 네임스페이스이름 이렇게도 만들 수 있다. - yaml파일로 만들기 namespace는 metadata부분에 들어간다. apiVersion: v1 kind: Namespace metadata: name: my-namespace 여기서 이름부분을 바꾸고 kubectl create -f 파일경로 이렇게 만들어진다. # 네임스페이스 리스트 확인 난 이렇게 yaml파일 하나에 두개의 nam..

k8s/concept 2023.11.23