访问部署在Kubernetes上的应用程序

时间:2020-02-06 05:43:49

标签: kubernetes kubectl

我的图片托管在GCR上。 我在本地Kubernetes集群(mac)上部署了我的应用程序。 这是我的部署文件-

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sv-premier
spec:
  selector:
    matchLabels:
      app: sv-premier
  template:
    metadata:
      labels:
        app: sv-premier
    spec:
      volumes:
      - name: google-cloud-key
        secret:
          secretName: gcp-key
      containers:
      - name: sv-premier
        image: gcr.io/proto/premiercore1:latest
        imagePullPolicy: Always
        command: ["echo", "Done deploying sv-premier"]
        volumeMounts:
        - name: google-cloud-key
          mountPath: /var/secrets/google
        env:
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/secrets/google/key.json
        ports:
        - containerPort: 8080
      imagePullSecrets:
      - name: imagepullsecretkey

我正在尝试访问该应用程序,但无法访问。 我将服务创建为->

$ kubectl expose deployment sv-premier --port=8080 --target-port=8080
service/sv-premierleague exposed

$ kubectl get service sv-premier
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
sv-premier   ClusterIP   10.107.202.156   <none>        8080/TCP   58s

$ kubectl全部变宽

NAME                              READY   STATUS    RESTARTS   AGE   IP          NODE             NOMINATED NODE   READINESS GATES
pod/sv-premier-6b695d5fd7-l4995   1/1     Running   0          21h   10.1.0.45   docker-desktop   <none>           <none

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP    8d    <none>
service/sv-premier   ClusterIP   10.107.202.156   <none>        8080/TCP   23m   app=sv-premier

NAME                         READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                                    SELECTOR
deployment.apps/sv-premier   1/1     1            1           21h   sv-premier   gcr.io/sap-s4-proto/premiercore1:latest   app=sv-premier


NAME                                    DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES                                    SELECTOR
replicaset.apps/sv-premier-6b695d5fd7   1         1         1       21h   sv-premier   gcr.io/sap-s4-proto/premiercore1:latest   app=sv-premierleague,pod-template-hash=6b695d5fd7

$ kubectl获取节点-o宽

NAME             STATUS   ROLES    AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION     CONTAINER-RUNTIME
docker-desktop   Ready    master   8d    v1.15.5   192.168.65.3   <none>        Docker Desktop   4.19.76-linuxkit   docker://19.3.5

现在,如已接受的答案中的here所述,我正在尝试访问我的应用程序,例如- docker-desktop:NodePort,即192.168.65.3:8080。但是我不能。 enter image description here

1 个答案:

答案 0 :(得分:2)

更新您的命令以包括用于在节点端口上公开服务的类型

kubectl expose deployment sv-premier --port=8080 --type=NodePort

然后,您应该尝试使用.. ip:nodeport组合访问服务

您是否正在使用Google Cloud?您应该更喜欢service type = loadbalancer

创建类型为LoadBalancer的服务时,Google Cloud控制器会自动配置网络负载平衡器。等待一分钟,以便控制器配置网络负载平衡器并生成稳定的IP地址。使用负载均衡器中的详细信息来访问服务。