我正在尝试运行这个命令:
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 &