簡體   English   中英

如何使用Kubernetes中的NodePort服務在公共Ip上公開Nginx?

[英]How to expose nginx on public Ip using NodePort service in Kubernetes?

我正在執行kubectl create -f nginx.yaml ,它成功創建了pod。 但是PODS並未在我的實例的公共IP上公開。 以下是用於服務類型為nodeport的YAML:

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
    - port: 443
      nodePort: 30443
      name: https
  selector:
    name: nginx

在我的方法中或在YAML文件上方以將pod公開給公共IP暴露的方法有什么不正確之處?

PS:防火牆和ACL在所有TCP上均對Internet開放

耶爾是對的。 您的服務選擇器與Pod標簽不匹配。

如果您像Jeel已在此答案中添加的那樣解決問題

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
  selector:
    name: nginx

您的服務將在節點IP地址中公開。 因為您的服務類型是NodePort。

如果您的Node IP是35.226.16.207 ,則可以使用此IP和NodePort連接到Pod

$ curl 35.226.16.207:30080

在這種情況下,您的節點必須具有公共IP。 否則,您將無法訪問

第二種選擇 ,您可以創建LoadBalancer Type Service

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: LoadBalancer
  ports:
    - port: 80
      name: http
  selector:
    name: nginx

這將為您提供一個公共IP。

有關更多詳細信息, 請檢查此

沒有添加端點。 在調試時,我發現部署和服務之間的標簽不匹配。 因此,將標簽類型從“ app”更改為“ name”,並且可以正常工作。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      name: nginx
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30080
      name: http
  selector:
    name: nginx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM