【问题标题】:Kubernetes cluster with flannel - port forwarding带有 flannel 的 Kubernetes 集群 - 端口转发
【发布时间】:2021-04-17 13:02:59
【问题描述】:

在机器上设置:

  • Ubuntu 20.04
  • Kubernetes 集群使用 kubeadm 和 flannel 网络插件启动

在我的工作机器上,我在集群上安装了 Jenkins,并希望将网络配置为能够从端口 8081 访问 jenkins。默认情况下,只能转发端口(在我的情况下为 30667)。在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         42s

也尝试使用 calico 网络插件 - 结果相同

但在我在 Mac 和 Windows 上使用 Docker 桌面之前,这可能是开箱即用的

【问题讨论】:

    标签: kubernetes kubeadm kubelet flannel calico


    【解决方案1】:

    Loadbalancer 服务类型在您在云上运行时效果最佳,因为云供应商将自动为您创建外部负载均衡器并将其配置为与 Kubernetes 一起使用。如果在 prem 上工作,整个过程必须由您完成。您必须自己做或使用 3rd 方工具来做,例如Metallb.

    注意External-ip 列中的待处理字段。最简单的方法是手动将其设置为节点的 IP 地址。

    首先你得到你的节点ip:

    ➜  ~ 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
    

    然后在服务规范的externalIPs字段中添加这个IP地址:

    ➜  ~ 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: LoadBalancer
    

    您将能够看到外部 IP 不再处于待处理状态:

    NAME                  TYPE           CLUSTER-IP        EXTERNAL-IP     PORT(S)                      AGE
    my-service            LoadBalancer   10.101.150.192 ? 10.128.15.230   80:11438/TCP                 5m1s
    

    然后您只需将外部 IP 与 nodePort 在该节点上打开的 nodePort 一起使用:

    ➜  ~ 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": {}
    

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2016-02-12
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多