簡體   English   中英

無法訪問部署在 Azure ACS Kubernetes 集群中的 Web API

[英]Cannot access Web API deployed in Azure ACS Kubernetes Cluster

請幫忙。 我正在嘗試將 Web API 部署到 Azure ACS Kubernetes 集群,它是一個在 VSTS 中創建的簡單 Web API,結果應該是這樣的: { "value1", "value2" }

我計划將類型設為 Cluster-IP,但我想先測試並訪問它,這就是為什么這是LoadBalancer ,pod 正在運行並且沒有重新啟動(我認為這很好)。

我遵循的指南是: 使用 Docker 和 Kubernetes 運行 Web API

NAME                TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)            AGE
kubernetes          ClusterIP      10.0.0.1       <none>         443/TCP            3d
sampleapi-service   LoadBalancer   10.0.238.155   102.51.223.6      80:31676/TCP   1h

當我嘗試瀏覽 IP 102.51.223.6/api/values它說:

“無法訪問此站點”

服務.yaml

kind: Service
apiVersion: v1
metadata:
  name: sampleapi-service
  labels:
    name: sampleapi
    app: sampleapi
spec:
  selector:
    name: sampleapi
  ports:
   - protocol: "TCP"
     # Port accessible inside the cluster
     port: 80
     # Port to forwards inside the pod
     targetPort: 80
     # Port accessible oustide the cluster
     #nodePort: 80
  type: LoadBalancer

部署.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: sampleapi-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: sampleapi
    spec:
      containers:
      - name: sampleapi
        image: mycontainerregistry.azurecr.io/sampleapi:latest
        ports:
        - containerPort: 80

Name:           sampleapi-deployment-498305766-zzs2z
Namespace:      default
Node:           c103facs9001/10.240.0.4
Start Time:     Fri, 27 Jul 2018 00:20:06 +0000
Labels:         app=sampleapi
                pod-template-hash=498305766
Annotations:    kubernetes.io/created-by={"kind":"SerializedReference","apiVersion":"v1","reference":{"kind":"ReplicaSet","namespace":"default","name":"sampleapi-deployme
-498305766","uid":"d064a8e0-9132-11e8-b58d-0...
Status:         Running
IP:             10.244.2.223
Controlled By:  ReplicaSet/sampleapi-deployment-498305766
Containers:
  sampleapi:
    Container ID:   docker://19d414c87ebafe1cc99d101ac60f1113533e44c24552c75af4ec197d3d3c9c53
    Image:          mycontainerregistry.azurecr.io/sampleapi:latest
    Image ID:       docker-pullable://mycontainerregistry.azurecr.io/sampleapi@sha256:9635a9df168ef76a6a27cd46cb15620d762657e9b57a5ac2514ba0b9a8f47a8d
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Fri, 27 Jul 2018 00:20:48 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-mj5m1 (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          True
  PodScheduled   True
Volumes:
  default-token-mj5m1:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-mj5m1
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type    Reason                 Age   From                   Message
  ----    ------                 ----  ----                   -------
  Normal  Scheduled              50m   default-scheduler      Successfully assigned sampleapi-deployment-498305766-zzs2z to c103facs9001
  Normal  SuccessfulMountVolume  50m   kubelet, c103facs9001  MountVolume.SetUp succeeded for volume "default-token-mj5m1"
  Normal  Pulling                49m   kubelet, c103facs9001  pulling image "mycontainerregistry.azurecr.io/sampleapi:latest"
  Normal  Pulled                 49m   kubelet, c103facs9001  Successfully pulled image "mycontainerregistry.azurecr.io/sampleapi:latest"
  Normal  Created                49m   kubelet, c103facs9001  Created container
  Normal  Started                49m   kubelet, c103facs9001  Started container

在我看來,您的服務未設置為容器上的端口。 您已將targetPort注釋掉。 因此該服務可在端口 80 上訪問,但該服務不知道將 pod 定位到該端口上。

您將需要啟動該服務,該服務將內部端口暴露給某些可在瀏覽器中使用以訪問該服務的外部 Ip:port。 在部署部署和服務yml文件后嘗試此操作:

kubectl service sampleapi-service

暫無
暫無

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

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