如何在 microk8s 上执行端口转发并将该过程发送到后台?

如何在 microk8s 上执行端口转发并将该过程发送到后台?

我正在尝试运行这个命令:

microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443

但输出如下:

└─[$] <> microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443
Forwarding from 127.0.0.1:10443 -> 8443
Forwarding from [::1]:10443 -> 8443

这是一个“始终开启”的过程,有没有什么方法可以执行此配置而不需要我保持终端打开?

答案1

我对 microk8s 不是特别熟悉,但如果它的行为类似于标准 k8s 系统,那么您可以使用 NodePort 类型创建另一个服务。这将在 kubernetes 节点上的本地端口上公开仪表板。

kind: Service
apiVersion: v1
metadata:
  name: k8s-dash
  namespace: kube-system
spec:
  selector:
    app: k8s-dash
  type: NodePort
  ports:
  - name: https
    nodePort: 30443
    port: 443
    targetPort: 443
    protocol: TCP

更改选择器以匹配仪表板使用的标签。

或者,你可以部署一个 Ingress Controller(如下所示:https://github.com/nginxinc/kubernetes-ingress) 并使用 Ingress 资源来公开它。

入口控制器是更安全的路线,因为您可以应用额外的保护,如 ACL、OAUTH2 等。

编辑器节点:在 microk8s 上,以下服务清单运行良好(请注意 targetPort 和选择器的变化):

kind: Service
apiVersion: v1
metadata:
  name: k8s-dash
  namespace: kube-system
spec:
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort
  ports:
  - name: https
    nodePort: 30443
    port: 443
    targetPort: 8443
    protocol: TCP

答案2

虽然我对 Kubernetes 不是很熟悉,但让命令在后台运行的常用方法是nohup在开头和&结尾使用。

例如

nohup microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443 &

相关内容