본문 바로가기

INFRA246

[K8s] Network Container Network Model Docker0 Virtual ethernet bridge : 172.17.0.0/16 L2 통신 기반 Container 생성 시 veth 인터페이스 생성(sandbox) 모든 container는 외부 통신을 docker0를 통해 진행 Container running 시 172.17.X.Y로 IP 주소 할당 Container Network Interface(CNI) K8s cluster 환경에서 multi-host에서 container간의 통신이 가능하게 하기 위한 목적 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준 https://kubernetes.io/docs/concepts/cluster-administration/networking/.. 2023. 4. 10.
[k8s] Persistent Volume & Persistent Volume Claim PV(Persistent Volume) K8s cluster 외부 storage와 연결을 담당하는 리소스 https://kubernetes.io/docs/concepts/storage/persistent-volumes/ 참고 PVC(Persistent Volume Claim) PV와 pod를 연결하기 위한 리소스 https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims 참고 ❗ 역할을 나눈다면, 스토리지 지식이 있는 쿠버네티스 클러스터 관리자 또는 스토리지 관리자는 PV 리소스를 생성해 스토리지와 연결해 두고, 파드 개발자는 PVC를 생성해 자신의 파드 및 관리자가 제공해 준 PV와 연결해 파드에서 볼륨을 .. 2023. 4. 3.
[K8s] Storage NFS NFS 서버가 공유하고 있는 데이터 디렉토리를 worker node의 pod들이 access할 수 있도록 지원 사전준비 NFS 서버는 application이 사용할 공유 디렉토리를 지원하고 있어야 함. Worker node는 NFS 클라이언트가 되어서 NFS Server가 지원하는 공유 폴더에 접근할 수 있어야 함. definition volumes: - name: webdata nfs: server: nfs.server.name path: /share/dir/path [Hands - on] NFS 서버 설치 및 설정 별도의 nfs 서버에서 진행 apt-get install -y nfs-common nfs-kernel-server rpcbind portmap 공유할 디렉터리 설정 mkdir -p /sha.. 2023. 3. 27.
[k8s] Storage emptyDir 및 share volume emptyDir volume 빈 디렉토리로 시작 Pod 내부에서 실행중인 application은 필요한 모든 파일 작성 Pod를 삭제하면 volume의 내용은 손실 동일한 pod에서 실행되는 컨테이너 간에 파일을 공유할 때 유용 https://kubernetes.io/docs/concepts/storage/volumes/#emptydir참고 [Hands - on] pod 생성 및 확인 vi empty.yaml apiVersion: v1 kind: Pod metadata: name: web-empty spec: containers: - image: nginx:1.14 name: nginx volumeMounts: - name: html mountPath: /usr/share/nginx/html volume.. 2023. 3. 20.
[K8s] Storage 개념 및 hostPath Volume은 K8s storage의 추상화 개념 Container는 pod에 binding 되는 volume을 mount하고 마치 local filesystem에 있는 것처럼 storage에 접근 https://kubernetes.io/docs/concepts/storage/volumes/ 참고 K8s storage definition volumes: #node에 존재 - name: html hostPath: path: /hostdir_or_file container 단위로 mount volumeMounts: - name: html mountPath: /usr/share/nginx/html [Hands - on] node1,2,3에 각각 /webdata/index.html 생성 각 node를 구분할 수.. 2023. 3. 14.
[k8s] 인증과 권한 관리 - 권한편 권한관리 특정 유저나 ServiceAccount가 접근하려는 API에 접근 권한을 설정 권한 있는 User만 접근하도록 허용 권한제어 Role 어떤 API를 이용할 수 있는지의 정의 K8s의 사용권한을 정의 지정된 namespace에서만 유효 verbs : create : 새로운 리소스 생성 get : 개별 리소스 조회 list : 여러 건의 리소스 조회 update : 기존 리소스 내용 전체 업데이트 patch : 기존 리소스 중 일부 내용 변경 delete : 개별 리소스 삭제 deletecollection : 여러 리소스 삭제 RoleBinding User/Group 또는 ServiceAccount와 Role을 연결 .. 2023. 3. 6.
[K8s] 인증과 권한 관리 - 인증편 API 접근제어 API 인증요청 User/Group Service Account(Application) Authentication user 또는 application이 API에 접근을 허가 받는 과정 인증방식 ; 클라이언트 인증서, 베어러 토큰(bearer token), HTTP 기본인증 지원 Authoriztion RBAC 모델 기반 요청 ID에 적절한 role이 있는지 확인 Admission Control 요청이 올바른 형식인지 판별 요청이 처리되기 전에 수정사항을 잠재적으로 적용 API 인증 API 서버에 접근하기 위해서는 인증 작업 필요 일반 사용자(Human User) 또는 그룹(Group) Cluster 외부에서 k8s를 조작하는 사용자로, 다양한 방법으로 인증 kubernetes-admin .. 2023. 2. 27.
[K8s] Cordon& Drain Cordon& Drain이란? Cordon node scheduling 중단(cordon)및 허용(uncordon) 특정 node에 pod 스케줄을 금지하거나 해제 kubectl [cordon|uncordon] NODE [options] [ Hands - on ] node2의 scheduling 중단 및 확인 kubectl cordon node2.example.com kubectl get nodes NAME STATUS ROLES AGE VERSION master.example.com Ready control-plane 22h v1.24.1 node1.example.com Ready 22h v1.24.1 node2.example.com Ready,SchedulingDisabled 22h v1.24.1 p.. 2023. 2. 20.