Не удается получить доступ к приложению, развернутому в кластере Azure ACS Kubernetes, с помощью конвейера Azure CICD - PullRequest
0 голосов
/ 07 ноября 2018

Я слежу за этим документом.

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

Трубопровод CICD работает нормально. Но я хочу проверить приложение, используя внешний ip, который развертывается в кластере Kubernete.

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>

Я нажимаю на указанный ниже URL, но время ожидания запроса истекло. http://52.163.191.28:88/

Может кто-нибудь, пожалуйста, помогите? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Мы можем решить эту проблему после перенастройки 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

Мы можем закрыть эту тему сейчас.

0 голосов
/ 22 ноября 2018

По вашему вопросу я сделал тест, и он сработал в мою сторону. Файл 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

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...