如何通过Docker镜像在Kubernetes容器中安装Kubectl

Cha*_*dra 2 docker kubernetes dockerfile

我想在容器中运行'kubectl'命令,所以我想在构建Docker映像时通过容器安装kubectl。任何帮助表示赞赏!

Pet*_*rch 23

kubectl是用go编写的,所以是完全独立的。

因此,您可以从另一个已包含它的容器中复制它。就像我在这里所做的那样,从以下位置复制它bitnami/kubectl:1.20.9

FROM bitnami/kubectl:1.20.9 as kubectl

FROM ubuntu-or-whatever-image:tag

# Do whatever you need to with the
# ubuntu-or-whatever-image:tag image, then:

COPY --from=kubectl /opt/bitnami/kubectl/bin/kubectl /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

我更喜欢这个而不是摆弄curl,因为现在你正在利用 Docker 缓存bitnami/kubectl:1.20.9图像的能力。


Ala*_*ier 21

把它放在你的 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/kubectl
RUN chmod +x ./kubectl
RUN mv ./kubectl /usr/local/bin
Run Code Online (Sandbox Code Playgroud)


Wei*_*ike 6

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

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

      containers:
      - image: container-image-name
        name: container-name
        volumeMounts:
        - name: kubectl-binary
          mountPath: /usr/local/bin/kubectl
          readOnly: true
        - name: kubectl-config
          mountPath: /root/.kube/config
          readOnly: true
      volumes:
      - name: kubectl-binary
        hostPath:
          path: /usr/local/bin/kubectl
      - name: kubectl-config
        hostPath:
          path: /root/.kube/config
Run Code Online (Sandbox Code Playgroud)

聚苯乙烯

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

$ curl -L https://dl.k8s.io/v1.10.6/bin/linux/amd64/kubectl -o /usr/local/bin/kubectl
Run Code Online (Sandbox Code Playgroud)