Docs/CloudNative/Kubernetes/Base/外部访问集群内部应用.md
2022-10-18 16:59:37 +08:00

2.4 KiB
Raw Blame History

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