本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

管理Kubernetes集群。
可用于CI/CD流程,或直接作为主要的Kubectl命令行工具(可通过更改标签指定版本)。
对于Flatcar Container Linux等精简/不可变Linux发行版,此容器尤为便捷,可利用Docker镜像的不可变性,无需依赖包管理器...详见提示:快速设置
获取d3fk/kubectl镜像的最佳方式是从Docker Hub Registry拉取预构建镜像。
该镜像通过Docker Hub的“自动化构建”功能从代码仓库构建为多架构镜像。
镜像名称 d3fk/kubectl
$ docker pull d3fk/kubectl:latest
Docker Hub仓库:[***]
。这些镜像版本固定,不会更改,通过代码仓库“releases”部分的代码由Docker Hub自动化构建,且稳定不再重建:
$ docker run --rm d3fk/kubectl
此命令将显示所有可用的kubectl命令列表
从v1.31版本开始,d3fk/kubectl容器镜像包含默认非root用户kubectl,UID为6009,以遵循Docker最佳实践。选择此UID是为了减少与本地文件系统现有用户的冲突(如访问配置文件、挂载卷等)。
若使用v1.31以下版本,此非root用户设置通常不会影响常规使用,除非处理具有特定读取权限限制的文件或目录。如遇此类情况,可通过--user选项将容器用户设置为自己的UID,以模拟本地运行kubectl的行为。
要连接远程集群,需加载自定义配置。
$ docker run --rm --name kubectl -v /path/to/your/kube/config:/.kube/config d3fk/kubectl
例如,列出集群中的Pod:
$ docker run --rm --name kubectl -v $HOME/.kube/config:/.kube/config d3fk/kubectl get pods
若需使用YAML文件、创建ConfigMap或处理其他文件,d3fk/kubectl容器中已设置工作目录/files。可将文件挂载到此路径并在容器内使用。
例如,从当前目录的deployment.yaml创建部署:
$ docker run --rm --name kubectl \ -v $(pwd):/files \ -v $HOME/.kube/config:/.kube/config \ d3fk/kubectl create -f deployment.yaml
若需与K8s组件进行终端交互,需在docker run命令中添加-ti选项。
例如,进入Pod内的容器shell进行调试或检查:
$ docker run -ti --rm --name kubectl \ -v $(pwd):/files \ -v $HOME/.kube/config:/.kube/config \ d3fk/kubectl exec -ti deployment/examplebashpod -- bash
若操作具有访问权限限制的文件或目录,可使用--user选项将当前用户设为容器默认用户。
可通过$(id -u)和$(id -g)动态将当前用户的UID和GID纳入运行命令:
例如:
$ docker run -ti --rm --name kubectl \ --user $(id -u):$(id -g) \ -v $(pwd):/files \ -v $HOME/.kube/config:/.kube/config \ d3fk/kubectl apply -f deployment.yaml
为shell创建命令别名,可将此Docker容器当作系统$PATH中的kubectl二进制文件使用。
若$HOME/.kube/config文件对当前用户可访问,可在终端中复制粘贴以下命令进行快速本地设置:
alias k='docker run --rm -ti --user $(id -u):$(id -g) -v $(pwd):/files -v $HOME/.kube/config:/.kube/config d3fk/kubectl'
之后即可像以下方式简单运行d3fk/kubectl命令:
$ k get pods
由于别名仅在当前终端会话中生效,若需在未来会话中使用,需将别名添加到shell启动脚本(如.bashrc、.shrc、.rc等)。
此容器最初用于K8s CronJob,以定期触发特定部署的强制滚动更新,使相关伸缩应用通过定期重启Pod获得新容器,提升稳定性且无 downtime。
为便于说明和测试,模板YAML文件位于代码仓库的k8s目录。
可通过补丁更新目标部署或使用kubectl rollout restart触发Pod滚动更新,需定义滚动更新策略以确保触发预期行为,例如:
spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: max***: 1 # 每次可添加的Pod数量 maxUnavailable: 1 # 滚动更新期间不可用的Pod数量
完整的模板部署文件见k8s目录:test-deployment.yaml
默认K8s RBAC规则不允许从其他Pod执行补丁或rollout操作。因此需创建具有所需权限(如“get”和“patch”)的RBAC Role和RoleBinding。
为便于测试,我们在专用命名空间“r-updated”中操作,确保不影响默认命名空间,且仅应用于需定期滚动更新的目标部署(CronJob、目标部署及专用RBAC规则需在同一命名空间)。若使用现有命名空间,需编辑部署、RBAC、ConfigMap和CronJob模板中的命名空间行;否则,创建“r-updated”命名空间:
$ kubectl create namespace r-updated
k8s目录中提供了包含所需RBAC Role和RoleBinding的模板YAML文件:rbac-rupdate.yaml,请根据需求调整权限和命名空间。
$ kubectl create -f rbac-rupdate.yaml
可通过以下命令从.kube/config文件创建供Pod/Job/CronJob使用的ConfigMap(假设配置文件位于$HOME/.kube):
$ kubectl create configmap kubeconfig --namespace r-updated --from-file $HOME/.kube
可使用代码仓库k8s目录中的rolling-update-cronjob.yaml作为CronJob模板(测试时每分钟触发一次Job,需根据需求调整Cron配置)。
该模板CronJob使用之前创建的ConfigMap“kubeconfig”加载kubectl配置(可根据需求修改)。编辑CronJob文件中的目标部署名称后,即可创建K8s CronJob:
$ kubectl create -f rolling-update-cronjob.yaml
之后K8s将根据CronJob配置定期执行滚动更新。
GitHub代码仓库的内容采用MIT许可证
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429