티스토리 뷰

독후감

Chap14. Kube-API Server

killog 2022. 3. 7. 00:57
반응형

개요

kube-api server 는 쿠버네티스의 primary 관리 컴포넌트이다.

예제1. kubectl get nodes

  • 내가 kubectl 명령을 실행하면, kubectl 유틸리티는 실제로, kube-apiserver 에 도달한다.
    • 예1. kubectl get nodes
      1. kube-api server 는 먼저 요청을 인증하고, (1. Authenticate User)
      2. 유효성을 검사한다.(2. Validate Request)
      3. 그런 다음 etcd 클러스터에서 데이터를 검색한후, 해당 검색된 데이터를 response 한다. (3. Retrieve Data= Do Job)

예제2. curl -X POST /api/v1/namespace/default/pods ..

  • 실제로, 우린 꼭 kubectl 안쓰고 직접 , kube-apiserver API 를 호출할 수 있다.
    • 예2. Authenticate는 됐지만,Validate Request 되기 전에 creating pod(Do Job) 하는 예
      • curl -X POST /api/v1/namespace/default/pods ...[other]
      • 이 경우, API 서버는 노드에 할당하지 않고, Pod 객체를 생성하고, etcd 서버에 정보를 업데이트합니다.
      1. Authenticate User
      2. Validate Request
      3. Retrieve Data
      4. Update ETCD
      5. 스케줄러는 API server를 모니터링하다가, 새로운 Pod 가 node 없이 생성된 것을 알아차린다.
      6. 스케줄러는 place 할 node 를 찾아 해당 Pod 를 배치하고, 이것을 kube api server 에 알린다.
      7. kube api server 은 etcd 클러스터에 정보를 업데이트하고, api 서버는 이 정보를 적절한 워커 노드 kubelet 에 넘긴다.
      8. kubelet은 node에 pod 를 만들고, 칸테이너 런타인 엔진(Container Runtime Engine:Docker)에게 어플리케이션 이미지를 deploy 하도록 유도한다.
      9. 위가 끝나면, kubelet은 API server에 status를 업데이트하고, ETCD 클러스터에 데이터를 업데이트한다.
      10. 똑같은 request 가 오면 비스무레한 행위가 반복된다.

결론

  • 'KUBE-APISERVER'는 ETCD 데이터 저장소의 요청을 인증 및 검증하고 데이터를 검색 및 업데이트하는 역할을 한다.
  • 실제로 'KUBE-APISERVER'는 etcd 데이터스토어와 직접 상호 작용하는 유일한 구성 요소이다.
  • 스케줄러, Kube-Controller-Manager & Kubelet과 같은 다른 구성 요소들은 KUBE-APISERVER'를 사용하여 각각의 영역에서 클러스터에서 업데이트를 수행한다.
  • kubeadm 도구를 사용하여 클러스터를 부팅하는 경우 이 사실을 알 필요는 없지만, 하드 설정 중인 경우 'KUBE-APISERVER'를 kubernetes 릴리스 페이지에서 이진 형식으로 사용할 수 있습니다. 다운로드하고 kubernetes 마스터 노드에서 서비스로 실행되도록 구성하십시오. 'KUBE-APISERVER'는 여기서 보는 바와 같이 많은 매개 변수를 사용하여 실행됩니다.
  • 이 섹션에서는 이러한 쿠버네티스 아키텍처의 개별 구성 요소를 설치하고 구성하는 방법에 대해 자세히 알아보겠습니다.

installing kube-api server

$wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kubapiserver
# kube-apiserver.service
ExecStart=/usr/local/bin/kube-apiserver \\ 
        --advertise-address=${INTERNAL_IP} \\
    --allow-privileged=true 
    --apiserver-count=3 \\ 
    --authorization-mode=Node,RBAC \\ 
    --bind-address=0.0.0.0 \\ 
    --client-ca-file=/var/lib/kubernetes/ca.pem \\
    --enable-admission- 
plugins=Initializers,NamespaceLifecycle,NodeRestriction,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota \\ 
     --enable-swagger-ui=true \\
     --etcd-cafile=/var/lib/kubernetes/ca.pem \\ #1
     --etcd-certfile=/var/lib/kubernetes/kubernetes.pem \\ #1
     --etcd-keyfile=/var/lib/kubernetes/kubernetes-key.pem \\  #1
     --etcd-servers=https://127.0.0.1:2379 \\ #2 etcd  서버 위치 지정
     --event-ttl=1h \\
     --experimental-encryption-provider-config=/var/lib/kubernetes/encryption-config.yaml \\ 
     --kubelet-certificate-authority=/var/lib/kubernetes/ca.pem\\ #1
     --kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem\\ #1
     --kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem\\ #1
     --kubelet-https=true \\ #1
     --runtime-config=api/all \\ 
     --service-account-key-file=/var/lib/kubernetes/service-account.pem \\
     --service-cluster-ip-range=10.32.0.0/24 \\

  • 1. 다른 것은 몰라도, 모든 컴포넌트들은 certificates 를 가진다는 것을 기억하자.
    1. kube api 서버가 etcd 연결하는 방법

기존 클러스터에서 Kube api server 옵션 보는법

  • 클러스터 설정 방법마다 다르다. 여기에선 kubeadme 로 배포된 경우만 보여줌.

kubectl pod 로 확인

view api-server - kubeadme

$kubectl get pods -n kube-system
# .kubeadme로 클러스터를 설정한 경우, kube-api server를 kube-system namespace의 마스터 노드에 pod 로 배포한다.

 

 

 

  • .kubeadme로 클러스터를 설정한 경우, kube-api server를 kube-system namespace의 마스터 노드에 pod 로 배포한다.

pod discription 확인

  • 만약에 pod definition 옵션들을 보고 싶은경우, etc kubernetes manifests 폴더에 가면된다.
    • kube-api server의 경우, /etc/systemd/system/kube-apiserver.service가면 볼 수 있다.

 

마스터 노드에서 ps랑 option 확인

$ ps -aux | grep kube-apiserver

 

반응형

'독후감' 카테고리의 다른 글

Chap 16. Kube Scheduler  (0) 2022.03.07
Chap 15. Kube Controller Manager  (0) 2022.03.07
Chap11-13. ETCD  (0) 2022.03.07
CKA udemy 강의 Core Concept 1 - main structure  (0) 2022.03.07
쿠버네티스 인 액션 5장. 서비스  (0) 2022.02.21
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함