连接到pod中其他容器的shell终端

时间:2017-09-11 03:24:55

标签: kubernetes kubernetes-helm kubernetes-security

当我在pod / pod模板中定义多个容器,例如一个运行agent和另一个php-fpm的容器时,它们如何相互访问?我需要agent container通过shell连接到php-fpm,并且需要通过agent container以交互方式执行几个步骤。

根据我的理解,我们可以将kubectl打包到agent container并使用kubectl exec -it <container id> sh连接到容器。但我不希望Agent container拥有更多权限,而不是以php-fpm连接到目标容器。

是否有更好的方法让agent container通过shell连接到php-fpm并以交互方式执行命令?

此外,由于以下错误,我在使用kubectl时从容器运行minikube并不成功

docker run -it -v ~/.kube:/root/.kube lachlanevenson/k8s-kubectl get nodes
Error in configuration:
* unable to read client-cert /Users/user/.minikube/apiserver.crt for minikube due to open /Users/user/.minikube/apiserver.crt: no such file or directory
* unable to read client-key /Users/user/.minikube/apiserver.key for minikube due to open /Users/user/.minikube/apiserver.key: no such file or directory
* unable to read certificate-authority /Users/user/.minikube/ca.crt for minikube due to open /Users/user/.minikube/ca.crt: no such file or directory

1 个答案:

答案 0 :(得分:0)

  

docker run -it -v~ / .kube:/root/.kube lachlanevenson / k8s-kubectl get nodes

  1. 首先,k8s群集中的每个Pod都有/var/run/secrets/kubernetes.io/serviceaccount/token提供的自己的k8s凭据,因此绝对不需要尝试将主目录卷装入docker容器
  2. 您收到client-cert错误的原因是因为~/.kube的内容只是字符串,指向外部定义的ssl密钥,ssl证书和ssl在~/.kube/config内定义的CA证书 - 但由于没有充分的理由使用该方法,我不会进一步解决该问题