企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
`hostNetwork`用于直接定义 Pod 网络,将 Pod 中所有容器的端口号直接映射到 Node 节点上。通过`spec.hostNetwork=true`设置,并且`spec.ports.containerPort`和`spec.ports.hostPort`必须相同: * 当不指定`spec.ports.hostPort`时,默认 hostPort 与 containerPort 相同 * 当指定`spec.ports.hostPort`时,hostPort 必须与 containerPort 相同 在`/home/shiyanlou`目录下新建`pod-hostnetwork.yaml`文件,并向其中写入如下代码: ~~~yaml apiVersion: v1 kind: Pod metadata: name: pod-hostnetwork labels: app: nginx spec: hostNetwork: true containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 hostPort: 80 ~~~ 执行创建: ~~~bash $ kubectl create -f pod-hostnetwork.yaml pod/pod-hostnetwork created $ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-hostnetwork 1/1 Running 0 63s 10.192.0.3 kube-node-1 <none> <none> ~~~ 可以看到 pod-hostnetwork 在 kube-node-1 节点上,并且 IP 地址也是节点的 IP 地址:10.192.0.3,然后可以直接通过`kube-node-1 IP:hostPort`直接访问容器: ~~~bash curl 10.192.0.3:80 ~~~ 这里由于节点是使用 docker 模拟的,在环境中不能直接访问,大家可以在自己的本地环境中尝试。 需要注意的是:启动 Pod 后它被调度分配到的节点可能都是不同的,所以想要访问 Pod 的 nodeIP 地址是不固定的,并且需要注意 Pod 的端口不能与 Node 节点的端口有冲突。