我试图在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仪表板上也在终端上显示为待定。


当前回答

检查kube-controller日志。我能够通过将clusterID标记设置为我部署集群的ec2实例来解决这个问题。

其他回答

使用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):(端口)访问

如果您没有使用GCE或EKS(您使用的是kubeadm),您可以向您的服务YAML添加一个externalps规范。您可以使用与节点主接口相关联的IP,例如eth0。然后,您可以使用节点的外部IP从外部访问该服务。

...
spec:
  type: LoadBalancer
  externalIPs:
  - 192.168.0.10

有三种类型的服务公开 Nodeport ClusterIP loadbalance

当我们使用负载均衡器时,我们基本上要求我们的云提供商给我们一个可以在线访问的dns 注意不是域名,而是dns。

所以负载均衡器类型不工作在我们的本地minikube环境。

我在docker桌面上得到这个错误。我只是退出并再次打开它(Docker-desktop)。只花了几秒钟,然后就没问题了。

当使用Minikube时,您可以通过它获取IP和端口 可以通过运行以下命令访问服务:

minikube service [service name]

例如:

minikube service kubia-http