首先,我们需要理解一下`hostNetwork: true` 是 Kubernetes 中一个用于 Pod 配置的选项,它允许 Pod 直接使用主机的网络命名空间。当你将 `hostNetwork` 设置为 `true` 时,Pod 中的容器将共享主机的网络栈,这意味着它们可以使用主机上的网络接口和端口。
使用 `hostNetwork: true` 可能会带来一些注意事项和潜在的安全风险。下面是一些需要考虑的因素:
1. 端口冲突:如果多个 Pod 使用相同的端口,可能会导致冲突。你需要确保在同一主机上的不同 Pod 或容器使用不同的端口。
2. 网络隔离:使用 `hostNetwork: true` 可能会降低 Pod 的网络隔离性。Pod 中的容器可以直接与主机上的其他进程进行通信,这可能增加了安全风险。
3. 资源竞争:如果多个 Pod 共享主机的网络资源,如带宽和连接数限制,可能会导致资源竞争和性能问题。
在使用 `hostNetwork: true` 时,请确保你了解并考虑了这些因素,并根据你的特定需求和安全要求做出适当的决策。
下面我们创建一个nginx看一下是否可以实现通信。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: hostNetwork: true # 使用主机网络 dnsPolicy: ClusterFirstWithHostNet # 该设置是使POD使用k8s的dns,dns配置在/etc/resolv.conf文件中 # 如果不加,pod默认使用所在宿主主机使用的DNS,这样会导致容器 # 内不能通过service name访问k8s集群中其他POD containers: - name: nginx image: nginx:1.7.9 #ports: # - name: metrics # hostPort: 80 # containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx spec: selector: app: nginx type: NodePort ports: - name: http port: 80 targetPort: 80 protocol: TCP nodePort: 30080
直接创建,创建后我们你会发现创建的pod所在的宿主机上也会增加一个80端口,我们直接访问宿主机的80端口是可以请求到pod容器中的内容的。
[root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nfs-client-provisioner-7b44b7f8fd-v52q5 1/1 Running 8 (5h39m ago) 179d 10.244.58.218 k8s-node02 <none> <none> nginx-55c94bc4f-4fsfs 2/2 Running 0 36m 192.168.6.119 k8s-node42 <none> <none> nginx-55c94bc4f-zk7s7 2/2 Running 0 36m 192.168.6.85 k8s-node17 <none> <none> [root@k8s-master ~]# curl http://192.168.6.85 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a rel="external nofollow" target="_blank" href="https://www.wulaoer.org/wp-content/themes/begin/go.php?url=aHR0cDovL25naW54Lm9yZy8=">nginx.org</a>.<br/> Commercial support is available at <a rel="external nofollow" target="_blank" href="https://www.wulaoer.org/wp-content/themes/begin/go.php?url=aHR0cDovL25naW54LmNvbS8=">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
如果我们把ingress做hostNetwork: true,直接在ingress里做路由解析岂不是更简单也不需要多什么转发里,直接请求ingress所在的宿主机即可。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏