9.5、端口配置(ports)

5.2.5 端口设置

本小节来介绍容器的端口设置,也就是 containers 的 ports 选项。

首先看下ports支持的子选项:

1
2
3
4
5
6
7
8
9
10
[root@k8s-master01 ~]# kubectl explain pod.spec.containers.ports
KIND: Pod
VERSION: v1
RESOURCE: ports <[]Object>
FIELDS:
name <string> # 端口名称,如果指定,必须保证name在pod中是唯一的
containerPort<integer> # 容器要监听的端口(0<x<65536)
hostPort <integer> # 容器要在主机上公开的端口,如果设置,主机上只能运行容器的一个副本(一般省略)
hostIP <string> # 要将外部端口绑定到的主机IP(一般省略)
protocol <string> # 端口协议。必须是UDP、TCP或SCTP。默认为“TCP”。

接下来,编写一个测试案例,创建 pod-ports.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
apiVersion: v1
kind: Pod
metadata:
name: pod-ports
namespace: dev
spec:
containers:
- name: nginx
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:nginx-latest # nginx:1.17.1
ports: # 设置容器暴露的端口列表
- name: nginx-port
containerPort: 80
protocol: TCP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建Pod
kubectl create -f pod-ports.yaml

# 查看pod
# 在下面可以明显看到配置信息
kubectl get pod pod-ports -n dev -o yaml
......
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:nginx-latest
imagePullPolicy: IfNotPresent
name: nginx
ports:
- containerPort: 80
name: nginx-port
protocol: TCP
......

访问容器中的程序需要使用的是Podip:containerPort