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