kubectl
我正在尝试在krew
Docker 容器内使用。这是我的Dockerfile
:
FROM alpine:latest
ENV KUBECTL_VERSION=v1.30.5 KREW_VERSION=v0.4.4
RUN apk update && apk add --no-cache curl bash git \
&& curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \
&& chmod +x kubectl && mv kubectl /usr/local/bin/ \
&& curl -fsSL "https://github.com/kubernetes-sigs/krew/releases/download/${KREW_VERSION}/krew-linux_amd64.tar.gz" | tar xz -C /tmp \
&& mv /tmp/krew-* /usr/local/bin/krew \
&& /usr/local/bin/krew install konfig
ENV PATH="/root/.krew/bin:${PATH}"
CMD ["tail", "-f", "/dev/null"]
我遵循的步骤:
- 构建图像:
docker build -t kubectl-krew .
- 运行容器:
docker run -it kubectl-krew
- 容器内部:
kubectl version
作品及展览:Client Version: v1.30.5 Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 The connection to the server localhost:8080 was refused - did you specify the right host or port?
krew version
显示:OPTION VALUE GitTag v0.4.4 GitCommit 343e657 IndexURI https://github.com/kubernetes-sigs/krew-index.git BasePath /root/.krew IndexPath /root/.krew/index/default InstallPath /root/.krew/store BinPath /root/.krew/bin DetectedPlatform linux/amd64
- 但
kubectl krew update
失败了:
error: unknown command "krew" for "kubectl"
环境变量$PATH
是:
/root/.krew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
。
为什么kubectl krew
无法识别?我该如何修复?
哈哈!!!我解决了这个问题。
如果你查看krew 安装页面,
krew
你会发现安装说明Linux
。因此,我需要运行最后:
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
因此,我将上述更改包含在
Dockerfile
下面:现在当我运行时
kubectl krew version
,我得到: