Kubernetes · Networking ·
[Kubernetes] Host Network
hostNetwork: false #
1apiVersion: v1
2kind: Pod
3metadata:
4 name: test-pod
5spec:
6 containers:
7 - name: nginx
8 image: nginx
9 ports:
10 - name: nginx-port
11 hostIP: [Node IP]
12 hostPort: 30123
13 containerPort: 8888
14 volumeMounts:
15 - mountPath: /etc/nginx/conf.d/default.conf
16 name: nginx-conf
17 volumes:
18 - name: nginx-conf
19 hostPath:
20 path: /root/default.conf
21 type: File- 해당 Pod가 배포된 Node의 IP + NodePort로 해당 서비스에 접근이 가능해진다.
- curl [hostIP]:[hostPort]로 nginx 웹서버의 정상적인 응답을 받을 수 있게 된다.
hostNetwork: true #
1apiVersion: v1
2kind: Pod
3metadata:
4 name: danger-pod
5spec:
6 hostNetwork: true
7 containers:
8 - name: nginx
9 image: nginx
10 ports:
11 - name: nginx-port
12 hostPort: 8888
13 containerPort: 8888
14 volumeMounts:
15 - mountPath: /etc/nginx/conf.d/default.conf
16 name: nginx-conf
17 volumes:
18 - name: nginx-conf
19 hostPath:
20 path: /root/default.conf
21 type: File- hostNetwork를 true로 설정하게되면 Pod가 자신이 배포된 node의 IP를 가지는 것을 확인할 수 있다.
- host의 Network를 사용하기 때문에 containerPort와 hostPort를 동일하게 설정해야한다. 그렇지않으면 에러가 발생할 것이다
해당 옵션을 사용할 시, 고려할 점 #
spec.hostNetwork #
- true와 false 두가지 옵션이 존재한다(미 설정시, Default: false).
- 해당 값을 true로 설정 시, Pod의 IP가 Pod가 배포된 Node의 IP로 설정된다.
spec.containers[].ports[].containerPort #
- 해당 설정을 명시한다고해서 해당 container의 Port가 open되는 것은 아니다.
- 해당 옵션을 원하는 Port로 사용하기 위해서는 반드시 해당 container에 원하는 Port를 사용하는 서비스 등이 동작중이여야 한다.
- 즉, container가 자체적으로 Port를 사용하고 있어야한다.
spec.containers[].ports[].hostIP #
- 아무 IP나 사용하면안되고 Node 중 하나의 IP를 사용하여야한다.
spec.containers[].ports[].hostPort #
- 0 < port < 65536 중에서 Port를 사용하면 된다.
- 만약 hostNetwork 값을 true로 사용할 시, containerPort와 같은 값을 지정해야한다.
- 역시나 해당 설정을 한다고해서 해당 Pod가 배포된 Node의 Port가 Open 되는 것은 아니다.
Advertisement