如何通过docker映像在kubernetes容器中安装kubectl

如何通过docker映像在kubernetes容器中安装kubectl,docker,kubernetes,dockerfile,Docker,Kubernetes,Dockerfile,我想在容器中运行'kubectl'命令,所以我想在构建Docker映像时在容器中安装kubectl。 感谢您的帮助 您只需将kubectl(例如/usr/local/bin/kubectl)二进制文件和kubeconfig(例如/root/.kube/config)映射到您的容器中即可 例如(用于部署的yaml文件): 附言 使用以下命令在每个节点上下载kubectl二进制文件,并将/root/.kube/config复制到每个节点: $ curl -L https://dl.k8s.io/v1

我想在容器中运行'kubectl'命令,所以我想在构建Docker映像时在容器中安装kubectl。
感谢您的帮助

您只需将
kubectl
(例如
/usr/local/bin/kubectl
)二进制文件和
kubeconfig
(例如
/root/.kube/config
)映射到您的容器中即可

例如(用于部署的yaml文件):

附言

使用以下命令在每个节点上下载
kubectl
二进制文件,并将
/root/.kube/config
复制到每个节点:

$ curl -L https://dl.k8s.io/v1.10.6/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl

Weike的解决方案对我来说适用于不同的kubectl路径,如果有人想在Docker映像中安装kubectl,那么这里是Docker文件(如果我们想通过python客户端api访问集群,它还安装python和kubernetes python客户端api):

另外,这是我的部署文件,用于将kubectl二进制文件和配置映射到容器,以访问kubernetes容器中的kubectl,pod中的:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: support
  labels:
    app: support
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: support
  template:
    metadata:
      labels:
        app: support
    spec:
      terminationGracePeriodSeconds: 3
      imagePullSecrets:
      - name: mysecret
      containers:
        - name: support
          image: image-name
          command:
            - "/bin/sh"
            - "-c"
            - "sleep infinity"
          volumeMounts:
          - name: kubectl-binary
            mountPath: /usr/bin/kubectl
            readOnly: true
          - name: kubectl-config
            mountPath: /etc/kubernetes/config
            readOnly: true
      volumes:
        - name: kubectl-binary
          hostPath:
            path: /usr/bin/kubectl
        - name: kubectl-config
          hostPath:
            path: /etc/kubernetes/config

如果你有docker,你可以做任何你想做的事情,因为你可以拉和启动任何图像。因此,如果要构建和部署:

docker login
docker build foo/bar .
docker push
docker run -v ~/.kube:/root/.kube lachlanevenson/k8s-kubectl set image deploy bar app=foo/bar

把这个放在你的档案里

RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN mv ./kubectl /usr/local/bin

到目前为止你试过什么?你有Dockerfile吗?从您正在使用的POD访问Kubernetes API的现有模式?谢谢,在我的例子中,路径略有不同,但工作正常。对于kubectl-
/usr/bin/kubectl
对于config-
/etc/kubernetes/config
docker login
docker build foo/bar .
docker push
docker run -v ~/.kube:/root/.kube lachlanevenson/k8s-kubectl set image deploy bar app=foo/bar
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN mv ./kubectl /usr/local/bin