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


当前回答

如果您尝试在on-prem云中执行此操作,则需要一个L4LB服务来创建LB实例。

否则,您将收到您所描述的无穷无尽的“待处理”消息。可以在这里看到一个视频:https://www.youtube.com/watch?v=p6FYtNpsT1M

您可以使用开源工具来解决这个问题,视频提供了一些关于自动化过程应该如何工作的指导。

其他回答

如果您尝试在on-prem云中执行此操作,则需要一个L4LB服务来创建LB实例。

否则,您将收到您所描述的无穷无尽的“待处理”消息。可以在这里看到一个视频:https://www.youtube.com/watch?v=p6FYtNpsT1M

您可以使用开源工具来解决这个问题,视频提供了一些关于自动化过程应该如何工作的指导。

对于您的用例,最好的选择是使用NordPort服务而不是loadbalancer类型,因为loadbalancer不可用。

您可以修补pod托管的节点的IP(节点的私有IP),这是简单的解决方案。

参考上述职位,以下对我来说很有用:

Kubectl补丁服务my-loadbalancer-service-name \ -n lb-service-namespace \ - p '{"规范":{“类型”:“loadbalance”、“externalIPs”:[" xxx.xxx.xxx。xxx物理服务器私有IP -节点-部署位置"]}}'

那些正在使用minikube并试图访问NodePort或LoadBalancer类服务的用户。

我们不能通过外部IP访问本地的服务 系统。所以一个好的选择是使用minikube IP

一旦您的服务公开,使用下面的命令获取minikube IP。

minikube service service-name --url

现在使用这个URL来达到你的目的。

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

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

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