kubernetes "hostNetwork: true",这是一种直接定义Pod网络的方式。如果在POD中
使用"hostNetwork: true"配置网络,pod中运行的应用程序可以直接看到宿主主机的网
络接口,宿主机所在的局域网上所有网络接口都可以访问到该应用程序及端口。
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
80端口是使用pod的"hostNetwork: true"方式暴露的,30080端口是使用service的"type: NodePort"方式暴露的。