无法使用Azure CICD管道访问部署在Azure ACS Kubernetes群集中的应用程序

时间:2018-11-07 06:13:08

标签: azure docker kubernetes

我正在关注此文档。

https://github.com/Azure/DevOps-For-AI-Apps/blob/master/Tutorial.md

CICD管道运行正常。但是我想使用部署到Kubernete集群的外部ip来验证应用程序。

Deploy.yaml

apiVersion: v1
kind: Pod
metadata:
 name: imageclassificationapp
spec:
 containers:
   - name: model-api
     image: crrq51278013.azurecr.io/model-api:156
     ports:
       - containerPort: 88
 imagePullSecrets:
   - name: imageclassificationappdemosecret

吊舱详细信息

C:\Users\nareshkumar_h>kubectl describe pod imageclassificationapp
Name:         imageclassificationapp
Namespace:    default
Node:         aks-nodepool1-97378755-2/10.240.0.5
Start Time:   Mon, 05 Nov 2018 17:10:34 +0530
Labels:       new-label=imageclassification-label
Annotations:  kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"imageclassificationapp","namespace":"default"},"spec":{"containers":[{"image":"crr...
Status:       Running
IP:           10.244.1.87
Containers:
  model-api:
    Container ID:   docker://db8687866d25eb4311175c5ccb5a7205379168c64cdfe716b09557fc98e2bd6a
    Image:          crrq51278013.azurecr.io/model-api:156
    Image ID:       docker-pullable://crrq51278013.azurecr.io/model-api@sha256:766673989a59fe0b1e849469f38acda96853a1d84e4b4d64ffe07810dd5d04e9
    Port:           88/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Mon, 05 Nov 2018 17:12:49 +0530
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-qhdjr (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          True
  PodScheduled   True
Volumes:
  default-token-qhdjr:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-qhdjr
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

服务详细信息:

C:\Users\nareshkumar_h>kubectl describe service imageclassification-service
Name:                     imageclassification-service
Namespace:                default
Labels:                   run=load-balancer-example
Annotations:              <none>
Selector:                 run=load-balancer-example
Type:                     LoadBalancer
IP:                       10.0.24.9
LoadBalancer Ingress:     52.163.191.28
Port:                     <unset>  88/TCP
TargetPort:               88/TCP
NodePort:                 <unset>  32672/TCP
Endpoints:                10.244.1.65:88,10.244.1.88:88,10.244.2.119:88
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

我点击了以下网址,但请求超时。 http://52.163.191.28:88/

有人可以帮忙吗?如果您需要更多详细信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

对于您的问题,我进行了测试,结果对我来说很有效。 yaml文件在这里:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 88
    targetPort: 80
  selector:
    app: nginx

还有一些要注意的地方。

  1. 您应确保服务在容器中侦听哪个端口。例如,在我的测试中,nginx服务监听默认的端口80。
  2. 要在节点中公开的端口应为空闲状态。换句话说,该端口未被其他服务使用。
  3. 所有步骤完成后。您可以使用节点中公开的端口访问公共IP。

屏幕截图显示了我的测试结果:

enter image description here enter image description here

希望这对您有帮助!

答案 1 :(得分:0)

使用正确的配置重新配置Kubernetes Service并按如下所示更改deploy.yaml文件后,我们能够解决此问题-

apiVersion: apps/v1beta1
kind: Deployment 
metadata: 
name: imageclassificationapp 
spec: 
  selector: 
   matchLabels: 
     app: imageclassificationapp 
replicas: 1 # tells deployment to run 2 pods matching the template 
template:
 metadata: 
  labels: 
    app: imageclassificationapp 
spec: 
   containers: 
    - name: model-api 
     image: crrq51278013.azurecr.io/model-api:205
     ports: 
     - containerPort: 88
---
apiVersion: v1
kind: Service   
metadata:   
  name: imageclassificationapp  
spec:   
 type: LoadBalancer 
 ports: 
 - port: 85
 targetPort: 88 
selector:   
 app: imageclassificationapp

我们现在可以关闭该线程。