我有多个Kubernetes背景。当我更改上下文时,我一直使用kill -9
来终止端口转发以重做pachtctl port-forward &
命令。我想知道这是否是正确的做法。
更详细:
我开始处于Kubernetes环境中,我们将其称为context_x。然后,我想将上下文更改为我的本地上下文,称为minikube。我也希望看到我对这个minikube上下文的回购,但是当我使用pachctl list-repo
时,它仍然会显示context_x的Pachyderm回购。当我pachctl port-forward
时,我会收到有关正在使用的地址的错误消息。所以我必须ps -a,然后在那些端口转发进程上杀死-9,然后再次执行pachctl port-forward命令。
我一直在做的一个例子:
$ kubectl config use-context minikube
$ pachctl list-repo #doesn't show minikube context's repos
$ pachctl port-forward &
...several error messages along the lines of:
Unable to create listener: Error listen tcp4 127.0.0.1:30650: bind: address already in use
$ ps -a | grep forward
33964 ttys002 0:00.51 kubectl port-forward dash-12345678-abcde 38080:8080
33965 ttys002 0:00.51 kubectl port-forward dash-12345679-abcde 38081:8081
37245 ttys002 0:00.12 pachctl port-forward &
37260 ttys002 0:00.20 kubectl port-forward pachd-4212312322-abcde 30650:650
$ kill -9 37260
$ pachctl port-forward & #works as expected now
另外,pachctl port-forward
进程37245上的kill -9不起作用,好像我必须在kubectl port-forward
上杀掉-9
答案 0 :(得分:3)
您可以根据需要指定端口,如docs中提到的那样使用-p
标志的另一个端口是否有理由不这样做?
同时在后台启动进程然后向其发送SIGKILL
会导致资源无法正确分配,因此当您再次尝试加入时,您可能会看到它出错,因为它无法再次分配相同的端口。因此,最后尝试不使用&
运行它。
因此,每当您更改上下文时,您需要做的只是CTRL + C
并再次启动它,这将正确释放资源并获得收益。
答案 1 :(得分:0)
只需为找到它的任何人更新此答案-pachctl
现在支持上下文,而Pachyderm上下文包括对其关联的kubectl
上下文的引用。当您切换到新的pachctl
上下文时,pachctl
现在将自动使用关联的kubectl
上下文(您仍然需要在kubectl
中切换上下文)