Configuración en la máquina:
En mi máquina de trabajo, instalé Jenkins en el clúster y quiero configurar la red para poder acceder a jenkins desde el puerto 8081. De manera predeterminada, solo es posible al puerto reenviado (30667 en mi caso). ¿Es posible en ubuntu?
NAME READY STATUS RESTARTS AGE pod/jenkins-5b6cb84957-n497l 1/1 Running 4 93m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/jenkins LoadBalancer 10.96.81.85 <pending> 8081:30667/TCP 93m service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 94m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/jenkins 1/1 1 1 93m NAME DESIRED CURRENT READY AGE replicaset.apps/jenkins-5b6cb84957 1 1 1 93m NAME COMPLETIONS DURATION AGE job.batch/pv-recycler-generator 1/1 5s 42sIntenté también con el complemento de red calico: el mismo resultado
Pero antes trabajé con el escritorio Docker en Mac y Windows donde era posible de inmediato
El tipo de servicio de Loadbalancer funciona mejor cuando lo ejecuta en la nube porque los aprovisionadores de la nube automatizarán el proceso de creación de un balanceador de carga externo para usted y lo configurarán para que funcione con Kubernetes. En caso de que trabaje en las instalaciones, todo este proceso debe hacerlo usted. Tiene que hacerlo usted mismo o usar herramientas de terceros para hacerlo, por ejemplo, Metallb .
Observe el campo pendiente en la columna External-ip . La forma más fácil sería configurarlo manualmente en la dirección IP de su nodo.
Primero tienes que obtener tu ip de nodo:
➜ ~ k get node -owide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME instance-1 Ready master 221d v1.17.0 👉 10.128.15.230 <none> Ubuntu 16.04.6 LTS 4.15.0-1090-gcp docker://18.6.1 Luego agregue esta dirección IP en el campo externalIPs en la especificación del servicio:
➜ ~ cat loadbalancer.yml apiVersion: v1 kind: Service metadata: name: my-service spec: externalIPs: - 10.128.15.230 👈 selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerUna vez que hagas eso podrás ver que la IP externa ya no está pendiente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-service LoadBalancer 10.101.150.192 👉 10.128.15.230 80:11438/TCP 5m1s Y luego solo tiene que usar esa IP externa con el nodePort que kube-proxy abrió en ese nodo:
➜ ~ curl 10.128.15.230:11438 { "path": "/", "headers": { "host": "10.128.15.230:11438", "user-agent": "curl/7.47.0", "accept": "*/*" }, "method": "GET", "body": "", "fresh": false, "hostname": "10.128.15.230", "ip": "::ffff:10.128.15.230", "ips": [], "protocol": "http", "query": {}, "subdomains": [], "xhr": false, "os": { "hostname": "label-demo" }, "connection": {}