본문 바로가기

k8s86

[K8s]DNS K8s DNS Service 및 pod용 DNS Cluster에서 실행하는 모든 pod가 사용할 수 있도록 구성 DNS를 통해 service와 pod access service_name.namespace.svc.cluster.local Pod-IP-Address.namespace.pod.cluster.local kube-dns service 작동 확인 kubectl get service --all-namespaces NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE default kubernetes ClusterIP 10.96.0.1 443/TCP 4d20h kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP.. 2023. 4. 17.
[k8s] kube-proxy kube-proxy default mode는 iptables API로 service를 생성하면 그 service의 목적지에 따른 endpoint(진입점)을 iptables rule로 만들어 달라고 kernel에게 요청함 worker node마다 1개씩 존재 nodeport를 생성하면 iptables의 rule를 통해서 외부로 서비스 될 수 있게 port listen 3가지 mode : user space mode iptables mode IPVS mode [hands - on] K8s service 동작 vi deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web spec: replicas: 3 selector: matchLabe.. 2023. 4. 10.
[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.