10/03
휴일
10/04
Kubernetes
k8s api resource
-
object
-
application
- container
- pod
- replicaSet
- deployment
-
Pod
- 고래, 물개 등의 작은 무리(떼)
- 배포 단위
- 하나의 pod는 여러 개의 container를 보유
- pod는 container의 host와 같음
- pod ip를 통해 container에 접근할 수 있음
- container type
- runtime container
- 일반적인 application container
- init container
- 특정 조건을 담고 있는 container
- 조건 만족 시, runtime container 실행
- sidecar container
- runtime container의 log 수집을 위한 container
- pattern
- sidecar
- ambassador
- adapter
- name
- pause container
- network namespace 공유
- port
- 추상화 object
- 격리된 container 포함
- 격리된 network(network namespace), storage(namespace) 자원 공유
- ip 할당
- calico
- 가상 cluster ip pool
- calico
- tunl
- label
- key-value 구조
- pod 식별, 그룹화
- 복합적
- service에 연결
- kubectl get po --show-labels
- kubectl get po -l key
- kubectl get po --selector=key=value
- node label 가능
- annotations
- namespace
- schedule
- kube-scheduler-k8s-master
- nodeName
- hostname으로 노드 지정
- kubelet을 통해 직접 할당
- nodeSelector
- 해당 노드의 label를 통해 지정
- control plane의 scheduler에 의해 할당
- 사용자 지정 방식
-
Service
-
Controller
-
Volume
Pod와 Service
DB
- RDBMS
- NoSQL
- mongoDB
- Pod + Service
- 제약사항
- log
10/05
Kubernetes
k8s api resource
- Pod
- pod 개수
- node당 110~5000개
- node는 150000개
- container는 300000개
- QoS
- 유지보수
- taint
- drain
- 특정 노드의 모든 pod 제거
- master node 5대 구성요소 제외
- cordon
- uncordon
- Service
- docker-compose > docker run -p
- multi container
- kompose
- pod.yaml
- service.yaml
- kube-proxy와 연관
- kube-proxy를 통해 트래픽 전달
- docker-proxy
- object
- ClusterIP
- NodePort
- LoadBalancer
- Metal LB
- private cloud를 구축하거나, 내부 서버스 구축하는 경우 사용
- Ingress
- externalIPs
- pod가 위치한 node의 IP 제공
- 해당 node의 IP를 이용해서 pod의 열려있는 port로 접근
- NeetworkPolicy
- 외부에서 pod 접근
- serviceIP:port
- endpoint
- service는 pod에 접근하기 위한 podIP:port 보유
- route
- mulit pod 연결
- 동작
- 3개 pod와 service 연결
- service 생성
- coredns(kube-dns) 자동 등록
- 서비스명:IP
- 외부에서 서비스를 통해 서비스 접속
- serviceIP:port
- NAT, NAPT, iptables
- podIP:port
- 분산 환경
- cluster
- k8s 특성상 노드 또는 pod에 장애가 발생할 경우 pod가 다른 노드 및 다른 ip로 실행
- 정적 라우팅으로 해결 안됨
- service는 label를 참조하기 때문에 pod ip가 바뀌어도 상관 없음
- kube-proxy
- DaemonSet
- 동작모드
- ClusterIP
- 내부에서만 사용 가능한 IP 제공
- --pod-network-cidr
- --service-cidr
- NodePort
- external
- 외부 연결용
- 30000~32767 중 랜덤으로 모든 노드의 port opne
- nodeIP:port
- kube-proxy
- route table 보유
- source, destination
- 외부 트래픽 > service > pods
- port 할당
- 설계
- NodePort : externalTrafficPolicy
- ClusterIP : seesionAffinity
- LoadBalancer
- external-ip에 public ip 제공
- cloud 환경에서 주로 사용
- vm 환경에서 MetalLB를 통해 구현 가능
- ingress
- L7
- http(80), https(443, TLS, Secret)
- rules
- smart router
- 특정 url로 들어오면 backend server의 특정 service로 이동
- ingress controller
- nginx
- nodeport방식의 proxy로 구성된 서비스
- Volume
- 데이터를 공유하고 유지
- emptyDir
- ephemeral
- pod lifecycle과 같음
- 휘발성
- hostPath
- 외부
- node to node
- NFS
- gitRepo(deprecated)
- GCE
- PV
- PVC
10/06
Docker
container
- 내부 용량 제한
- mount된 dir 용량 제어
Kubernetes
k8s api resource
- Volume
- 외부
- PV
- Persistent Volume
- 지속적 볼륨
- 가상 스토리지 인스턴스
- OS, Cloud 등에서 실제 storage의 물리적 공간(disk) 활용
- 용량, 권한(AccessMode)
- 권한
- ReadWriteOnce(RWO) : 하나의 노드가 볼륨을 RW 가능하도록 mount
- ReadWriteMany(RWX) : 여러 노드가 볼륨을 RW 가능하도록 mount
- ReadOnlyMany(ROX) : 여러 노드가 볼륨을 RO 가능하도록 mount
- PVC
- Persistent Volume Claim
- 사용자(개발자)에 의해 PV를 프로비저닝하는 요청
- 용량, 권한 부여
- 매칭되는 PV에 자동 연결
- Github
- ConfigMap
- key-value 구조 데이터 저장
- 환경변수, 명령 인수(args), 구성 파일(*.conf)
- Secret
- key-value 구조 데이터 저장
- 암호, 기밀 데이터
- encoding
- kubectl create
Multi-Container Design Patterns
- Sidecar Pattern
- Ambassador Pattern
- Adapter Pattern
10/07
Kubernetes
k8s api resource
- Secret
- Deployment
- 상위 추상화 개념
- pod, deployment는 stateless
- ReplicatSet, Replication controller
- pod 복제
- 안정성
- 무중단
- HA
- LB
- desired state management
- rolling update
- rollout
- spce
- replicas
- selector
- label과 매칭되는 pod가 있는지 확인 후 연결
- template
- 매칭되는 pod가 없을 때 생성되는 실질적인 Pod 의 내용
- metadata
- spec
- history
- scale-out/in
- revisionHistoryLimit
- HPA
- Horizontal Pod Autoscaler
- CPU, Memory 사용율 계산을 통해 적정한 pod 수 지정
- Deployment, ReplicaSet, DaemonSet 등
- scale-out/in
- 확장성 object
- autoscaling/v2
- 수평적 pod 자동 확장