### hostPort或hostNetwork #### hostNetwork 和containers平级的hostNetwork: true,表示pod使用宿主机网络,配合nodeSelector,把pod实例化在固定节点 ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: # node节点选择器 role: master # node节点标签(Label) hostNetwork: true # 使用node节点网络 containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx ports: ``` #### hostPort 和hostNetwork相比多了映射能力,可以把容器端口映射为node节点不同端口,hostPort,当然也需要nodeSelector来固定节点,不然每次创建,节点不同,ip也会改变 ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: # node节点选择器 role: master # node节点标签(Label) containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 8080 hostPort: 80 #重点 ``` ### nodePort 访问方式:集群内任意节点ip加nodePort所配端口号 ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: nginx-pod-service labels: app: nginx #自身标签 spec: type: NodePort # 类型ExternalName, ClusterIP, NodePort, and LoadBalancer ports: - port: 8080 # service在k8s集群内服务端口 targetPort: 8080 # 关联pod对外开放端口 nodePort: 30088 # 集群外访问端口,端口范围【30000-32767】 selector: app: nginx # pod标签 ``` ### ingress ### kubectl port-forward