如何在容器内运行kubectl命令?
在pod内的容器中,如何使用kubectl运行命令?例如,如果我需要在容器内执行以下操作:
kubectl得到豆荚
我已经试过了:在我的dockerfile中,我有以下命令:
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectlRUN chmod +x ./kubectl
RUN sudo mv ./kubectl /usr/local/bin/kubectl
编辑:我正在尝试OSX文件,我已将其更正为linux二进制文件。(由@svenwltr纠正
在创建docker文件时,这是成功的,但是当我在容器中运行kubectl get pod时,
kubectl get pods
我收到此错误:
与服务器的连接:被拒绝-您是否指定了正确的主机或端口?
当我在本地部署时,如果我的docker-machine没有运行,那么我会遇到此错误,但是在容器内部,docker-machine如何运行?
在本地,我通过运行以下命令来解决此错误:(dev是docker-machine的名称)
docker-machine env deveval $(docker-machine env dev)
有人可以告诉我我需要做什么吗?
回答:
我将使用kubernetes api,您只需要安装curl,而不是kubectl
其余的即可。
curl http://localhost:8080/api/v1/namespaces/default/pods
我在我的一个apiserver上运行以上命令。将 更改为 。
根据您的配置,您可能需要使用ssl或提供客户端证书。
为了找到API端点,可以使用--v=8
同kubectl
。
例:
kubectl get pods --v=8
资源:
Kubernetes API文档
我假设您已经配置了rbac,为您的pod创建了一个服务帐户并使用它运行。此服务帐户应具有所需名称空间中的Pod的列表权限。为此,您需要为该服务帐户创建角色和角色绑定。
群集中的每个容器都填充有可用于向API服务器进行身份验证的令牌。要验证,在容器内部运行:
cat /var/run/secrets/kubernetes.io/serviceaccount/token
要向apiserver发出请求,请在容器内运行:
curl -ik \ -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
https://kubernetes.default.svc.cluster.local/api/v1/namespaces/default/pods
以上是 如何在容器内运行kubectl命令? 的全部内容, 来源链接: utcz.com/qa/435464.html