美文网首页微服务 DevOps
Service Mesh - Kubernetes LoadBa

Service Mesh - Kubernetes LoadBa

作者: CatchZeng | 来源:发表于2021-06-09 09:22 被阅读0次

原文:https://makeoptim.com/service-mesh/kubernetes-external-ip-pending

问题现象

如果你使用自建的 Kubernetes 集群(minikubekubeadm 等)。在这种情况下,没有集成 LoadBalancer(与 AWS、Google Cloud、阿里云等云厂商不同)。使用此默认设置,你只能使用 NodePortIngress Controller

这时,如果你部署 LoadBalancer 则会出现 External-IP 一直处于 pending 的问题。

$ cat <<EOF | kubectl apply -f -
kind: Service
apiVersion: v1
metadata:
  name: nginx-ils-service
spec:
  ports:
    - name: http
      port: 80
      nodePort: 30062
  selector:
    app: nginx
  type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          ports:
          - containerPort: 80
  selector:
    matchLabels:
      app: nginx
EOF
$ kubectl get service
NAME                TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes          ClusterIP      10.96.0.1      <none>        443/TCP        11m
nginx-ils-service   LoadBalancer   10.98.76.166   <pending>     80:30062/TCP   2m1s

解决方法

minikube

如果你使用的是 minikube,官方提供了如下便捷的解决方法:

$ minikube tunnel
Status:
    machine: minikube
    pid: 22554
    route: 10.96.0.0/12 -> 192.168.64.3
    minikube: Running
    services: [nginx-ils-service]
    errors:
        minikube: no errors
        router: no errors
        loadbalancer emulator: no errors

执行完命令,External-IP 很快就会出现,详见 https://minikube.sigs.k8s.io/docs/handbook/accessing/#using-minikube-tunnel

$ kubectl get service
NAME                TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)        AGE
kubernetes          ClusterIP      10.96.0.1      <none>         443/TCP        13m
nginx-ils-service   LoadBalancer   10.98.76.166   10.98.76.166   80:30062/TCP   3m26s

浏览器访问 EXTERNAL-IP,验证

image

kubeadm

如果是使用的是 kubeadm,可以参考 使用 kubeadm 和 MetalLB 搭建 Kubernetes & Istio 环境 使用 MetalLB 来解决本问题。

参考链接

相关文章

网友评论

    本文标题:Service Mesh - Kubernetes LoadBa

    本文链接:https://www.haomeiwen.com/subject/jenseltx.html