쿠버강의 with practice tests_1
앞부분은 hands-on이랑 똑같은 부분만 넘겨가면서 수강했음
=>
일단 앞부분의 내용을 아는 사람은 패스하고, practice test를 해도 된다길래 test부터 진행해봄
==> 진행후에 부족한 내용에 대해서 강의를 더 듣는것도 괜찮다는 생각이 들었음
cluster architecture
etcd : 고가용 키:값 데이터베이스
scheduler : 컨테이너를 설치하기 위해 올바른 노 드를 식별
컨테이너 요구 리소스 요구 사항 / 워커 노드의 용량 / 정책이나 제약 조건들 등등을 규칙에 근거해서 식별
node-controller : 새 노드를 클러스터에서 사용할때, 노드가 사용불가하거나 파괴되는 상황을 처리
replication-controller : 항상 일정량 이상의 컨테이너/pod가 복제그룹에서 항상 유지되도록 함
api-server : 클러스터 내애서 모든 작업을 오케스트레이션(연결/관리)
kubelet : api 서버의 지시를 듣고 필요한 작업을 지시 -> 컨테이너를 배포 / 파괴
==> 각 노드의 선장(각 노드에서 실행되는 에이전트)-> api 서버로 주기적으로 상태보고서를 보냄
==> 이걸 받아서 api 서버에서 컨테이너들의 상태를 모니터링함
etcd => distributed reliable key-vaule store ==> 간단 / 안전 / 신속
--> 클러스터에 관련된 정보들을 저장함 => node / pod / config / sercret / account / role / binding / ... 등등
--> 변화가 있을 때, etcd 서버에 적용되어야만 변경이 완료됐다고 판단됨
기존 DB => table 형태 => rds realational database service
=> 새로운 유형의 정보를 저장할 때마다 테이블 전체가 영향을 받음 + 그 정보와 관련이 없는 부분들에 대한 값들은 모두 비어있음
key-vaule store
=> 개인마다 하나의 문서를 가지는 형태임 => 관련된 모든 정보가 그 문서에 저장됨
=> 어떠한 형태로도 저장될 수 있음
=> 당연하겍도 한 파일의 변화는 다른 파일에 영향을 주지 않음 => 자료의 변경이 쉬움
===> 더욱 복잡해지면 jason / yaml을 사용
1. 파일 다운로드 => git에서 받으면 됨
2. 파일 압축해제
3. 실행 => ./etcd : 2379
./etcdctl set 키 값 => DB에 값이 저장됨
./etcdctl get 키 ===> 값이 출력됨
./etcdctl --version
==> etcdctl의 버전 + api의 버전이 출력됨
version => 2,3이있음 => 명령을 실행하기 전에 버전을 확인해야함 ㅇㅇ
3버전으로 지정해주는 방법
=> 그 후에는 동일하게 사용하면 됨
ETCD in kubernets
배포 방법
-> 스크래치 - manual
마스터 노드에 바이너리 파일을 직접 다운로드 해서 설치 => 서비스 구현
-> kubeadm
etcd 서버를 배포함
pod practice test
=> 이거는 run이랑 create의 차이점을 찾아봐야할듯함
++ 어떤 이미지를 사용했냐 하는 문제 => 답을 도출하는 방법은 잘 아는데 describe => 더 꼼꼼하게 살펴봐야할듯
진짜 별 생각 없이 풀었다가 틀렸네 ㅋㅋㅋ => pod안에 컨테이너 들이 존재하는건데 //
=> run은 내가 알던 방식으로 다시 해봐도 잘되는걸 보면 run - create 는 분명 무슨 차이가 있음
++
돌고 있는 pod의 이미지를 바꾸라는 문제
=> edit을 쓰면 되지만, 이렇게 풀고 싶지 않았음 => 명령어를 통해서 바꾸고 싶었음 => 배운내용 정리한거 찾기
kubectl set image(바꿀 것) pod redis(pod이름) redis(container이름)=redis(바꿀 이미지)
=> 잘 바뀐것을 볼 수 있음
replicaset practice test
pod에 대한 정보를 k get pod -o wide로 얻을때는 이미지에 관련된 정보가 나오지 않았지만, replicaset는 나옴
=> 확인할 수 있음 => 사실 replicaset -> pod를 생성하는거라 여기서 정보 획득 가능하면 굳이 pod에 대해서도 따로 찾아보지 않아도 되지만... 그래도 ㅇㅇ
replicaset => apiVersion : v1 에서 지원하지 x | => apiVersion : apps/v1 => 이걸 사용해야함
controlplane ~ ➜ k apply -f replicaset-definition-2.yaml
The ReplicaSet "replicaset-2" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"tier":"nginx"}: `selector` does not match template `labels`
=> selector 와 matchLabels 부분이 맞지 않는다는 오류를 볼 수 있음
=> 이렇게 바꿔주고 생성
replica-2가 잘생성된것을 볼 수 있음
정상적이지 않은 이미지를 제대로 바꿔준후 -> 모든 pod를 다 지워야 => 정상적인 pod가 올라옴
스케일 => k edit 으로 해주는게 영구적인 방법이지만
$ kubectl scale rs/my-test-1170944398 --replicas=5
=> replicaset -> rs로 사용이 가능함
==> 이렇게 명령어로 해주는 방법도 일시적으로는 효과가 있음
=> 명령어를 사용하고 확인해보면 => 개수에 맞게 pod를 줄이는 모습을 볼 수 있음
=> 결과적으로 2개만 남음
practice test를 하면서 느낀건 , hands-on에서 하고 온거랑 거의 비슷하거나, 같은 부분들도 많다는것
=> 하지만 이런 명령어들과 사용법을 익히는 것이 목표이기 때문에 빼먹지 않고 다 진행하려함
==> 지금도 다 하고온 내용들이지만, 명령어나, 뭘 확인해야 하는지에 대해서 그새 까먹은 부분이 있었음..ㅠ
Deployment practice test
다른 부분에 대해서는 문제가 없고 =>
이걸 명령문으로만 만들어봄
문제에 나온 그대로를 명령문을 통해서 배포하는데 성공했음