首先,我们需要理解一下`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所在的宿主机即可。

您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏