Kubernetes 용어 정리

By | 2024년 1월 13일
Table of Contents

Kubernetes 용어 정리

포트(Port)

NodePort -> Port -> targetPort(=containerPort)

  • NodePort
    외부에서 Node 에 접속하기 위한 포트입니다.
    개발자 PC 의 경우 localhost 가 되며, 클라우드의 경우 인스턴스에 할당되는 아이피(퍼블릭 IP)입니다.

  • Port
    클러스터 내부에서 사용되는 포트입니다.
    NodePort-targetPort 연결을 위해서만 사용되고, 외부에서는 접근할 수 없습니다.

  • targetPort
    Deployment 에 접근하기 위한 포트입니다.
    containerPort 와 일치시켜 줍니다.

  • containerPort
    컨테이너 이미지의 포트입니다. (Optional)

Label, Selector

Label 은 key-value 형태의 값입니다.
사용자에게 의미가 있고, 시스템에는 직접적인 의미는 없습니다.

"metadata": {
  "labels": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

Selector 는 오브젝트를 찾기 위한 도구입니다.

selector:
  matchLabels:
    app: server

Selector

Pod 는 spec.selector 가 없습니다.

apiVersion: v1
kind: Pod
metadata:
 name: myapp-pod
 labels:
   app: myapp
spec:
 containers:
 - name: myapp-container
   image: busybox
   command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']

Deployment, ReplicaSet, StatefulSet, DaemonSet 은 spec.template 을 찾아갑니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Service 는 spec.selector 가 있을수도 없을수도 있습니다.
있는 경우는 spec.template 를 찾아갑니다.
없는 경우는 Endpoints 를 수동으로 생성해 주어야 합니다.

apiVersion: v1
kind: Endpoints
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 192.0.2.42
    ports:
      - port: 9376

답글 남기기