我试图在kubernetes上部署nginx, kubernetes版本是v1.5.2, 我已经部署了nginx的3个副本,YAML文件如下,

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80

现在我想在节点的30062端口上公开它的80端口,为此我在下面创建了一个服务,

kind: Service
apiVersion: v1
metadata:
  name: nginx-ils-service
spec:
  ports:
    - name: http
      port: 80
      nodePort: 30062
  selector:
    app: nginx
  type: LoadBalancer

这项服务工作得很好,但它不仅在kubernetes仪表板上也在终端上显示为待定。


当前回答

删除所有旧的服务并创建新的服务解决了我的问题。IP被绑定到旧的服务。只需尝试“$kubectl获得svc”,然后逐个删除所有svc的“$kubectl删除svc' svc名称”

其他回答

使用NodePort:

$ kubectl run user-login --replicas=2 --labels="run=user-login" --image=kingslayerr/teamproject:version2  --port=5000

$ kubectl expose deployment user-login --type=NodePort --name=user-login-service

$ kubectl describe services user-login-service

(请记下端口)

$ kubectl cluster-info

获取主机正在运行的IP地址

您的服务可在(IP):(端口)访问

minikube隧道

下面的解决方案适用于我的情况。

首先,试试这个命令:

minikube tunnel

如果这对你不起作用。遵循以下几点:

我重启minikube容器。

docker minikube stop 

then

docker minikube start

之后重新运行kubernetes

minikube dashboard

完成后执行:

 minikube tunnel

删除所有旧的服务并创建新的服务解决了我的问题。IP被绑定到旧的服务。只需尝试“$kubectl获得svc”,然后逐个删除所有svc的“$kubectl删除svc' svc名称”

我也有同样的问题。 Windows 10 Desktop + Docker Desktop 4.7.1 (77678) + Minikube v1.25.2

根据我这边的官方文件,我决定:

PS C:\WINDOWS\system32> kubectl expose deployment sito-php --type=LoadBalancer --port=8080 --name=servizio-php
service/servizio-php exposed
PS C:\WINDOWS\system32> minikube tunnel
 * Tunnel successfully started

 * NOTE: Please do not close this terminal as this process must stay alive for the tunnel to be accessible ...

 * Starting tunnel for service servizio-php.


PS E:\docker\apache-php> kubectl get service
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes     ClusterIP      10.96.0.1      <none>        443/TCP          33h
servizio-php   LoadBalancer   10.98.218.86   127.0.0.1     8080:30270/TCP   4m39s

http://127.0.0.1:8080/上的开放浏览器

如果你正在使用minikube,那么从终端运行下面的命令,

$ minikube ip
$ 172.17.0.2 // then 
$ curl http://172.17.0.2:31245
or simply
$ curl http://$(minikube ip):31245