2017-02-09 56 views
1

我創建了一個YAML文件,在一個窗格中有三個圖像(它們需要通過127.0.0.1與海誓山盟進行通信)看起來,這一切都正常。我已經在yaml文件中定義了一個nodeport。Kubernetes nodeport不起作用

有定義applications一個部署它包含三個圖像:

  • 接觸-DB(MySQL數據庫)
  • 前端(角網站)
  • 網核心(一個API)

我定義了三個服務,每個容器一個。在那裏我已經定義了類型NodePort來訪問它。

所以我檢索到的服務來獲得端口號:

NAME   CLUSTER-IP  EXTERNAL-IP PORT(S)   AGE 
contacts-db 10.103.67.74  <nodes>  3306:30241/TCP 1d 
front-end  10.107.226.176 <nodes>  80:32195/TCP  1d 
net-core  10.108.146.87 <nodes>  5000:30245/TCP 1d 

而且我在我的瀏覽器導航到http://:32195,它只是不斷加載。這不是連接。這是完整的Yaml文件:

--- 
apiVersion: v1 
kind: Namespace 
metadata: 
    name: three-tier 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: applications 
    labels: 
    name: applications 
    namespace: three-tier 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     name: applications 
    spec: 
     containers: 
     - name: contacts-db 
     image: mysql/mysql-server #TBD 
     env: 
      - name: MYSQL_ROOT_PASSWORD 
      value: quintor 
      - name: MYSQL_DATABASE 
      value: quintor #TBD 
     ports: 
     - name: mysql 
      containerPort: 3306 
     - name: front-end 
     image: xanvier/angularfrontend #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 80 
     - name: net-core 
     image: xanvier/contactsapi #TBD 
     resources: 
      requests: 
      cpu: 100m 
      memory: 100Mi 
     ports: 
     - containerPort: 5000 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: contacts-db 
    labels: 
    name: contacts-db 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    # the port that this service should serve on 
    - port: 3306 
    targetPort: 3306 
    selector: 
    name: contacts-db 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: front-end 
    labels: 
    name: front-end 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
    targetPort: 80 #nodePort: 30001 
    selector: 
    name: front-end 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: net-core 
    labels: 
    name: net-core 
    namespace: three-tier 
spec: 
    type: NodePort 
    ports: 
    - port: 5000 
    targetPort: 5000 #nodePort: 30001 
    selector: 
    name: net-core 
--- 

回答

3

服務的選擇符與您的容器的標籤相匹配。在你的情況下,定義的選擇器指向容器,當選擇容器時,它將變成什麼都沒有。

您必須重新定義您的服務才能使用一個選擇器或將您的容器拆分到不同的Deployments/Pods。

要查看某個服務定義選擇是否奏效,你可以檢查它們:

kubectl get pods -l key=value 

如果結果是空的,你的服務將運行到空隙太大。

+1

此外,您還可以看到哪些服務實際上由具有'kubectl get endpoints'的端點(pod)支持 –

相關問題