簡體   English   中英

如何在 minikube 中啟動服務並訪問它

[英]How to start a service and access it in minikube

我在 minikube 中部署了一個 web 應用程序。

部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: maypp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: myapp
          imagePullPolicy: Never
          ports:
          - containerPort: 8080
      restartPolicy: Always

服務:

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  type: NodePort
  ports:
  - port: 8080

kubectl apply -f. 要部署,它們都在運行。

kubectl get po
NAMESPACE   NAME                       READY   STATUS    RESTARTS   AGE
default     myapp-5d042b65c8-h7kag     1/1     Running   0          10m

kubectl get svc
NAMESPACE   NAME        TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
default     myservice   NodePort   10.102.128.35  <none>        8080:32212/TCP           10m

運行minikube service在瀏覽器中打開服務:

minikube service myservice
|----------------|--------------------|-------------|---------------------------|
|   NAMESPACE    |        NAME        | TARGET PORT |            URL            |
|----------------|--------------------|-------------|---------------------------|
|   default      | myservice          |        8080 | http://192.168.49.2:32212 |
|----------------|--------------------|-------------|---------------------------|
🏃  Starting tunnel for service myservice.
|----------------|--------------------|-------------|------------------------|
|   NAMESPACE    |        NAME        | TARGET PORT |          URL           |
|----------------|--------------------|-------------|------------------------|
|   default      | myservice          |             | http://127.0.0.1:55401 |
|----------------|--------------------|-------------|------------------------|
🎉  Opening service default/myservice in default browser...

在瀏覽器中,我無法同時使用http://192.168.49.2:32212http://127.0.0.1:55401訪問我的應用程序。 甚至http://127.0.0.1:8080

從 pod 的日志來看,容器中的 web 服務器正在運行:

kubectl logs -f myapp-5d042b65c8-h7kag

...
____________________________________O/_______
                                    O\
⇨ http server started on [::]:8080

但是沒有得到正確訪問端點的方法。 所以沒有任何交通發生。

如果我使用 docker 部署容器,它可以與http://127.0.0.1:8080一起使用。

問題是Service中缺少selector字段。

apiVersion: v1
kind: Service
metadata:
  name: myservice
spec:
  type: NodePort
  selector:
    app: myapp
  ports:
  - port: 8080

服務根據服務規范中定義的與 Pod 上定義的標簽匹配的選擇器將流量路由到 Pod。

從文檔的定義服務部分:

服務選擇器的 controller 持續掃描與其選擇器匹配的 Pod,然后將任何更新發布到端點 object 也稱為“我的服務”。

暫無
暫無

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

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