almalinux9.6系统:minikube部署kubernetes-1.33版本环境-单节点
almalinux9.6系统:minikube部署kubernetes-1.33版本环境-单节点
一、简介
本文是在almalinux9.6系统上用minikube快速部署k8s集群。
当你想要练习、验证或者查看k8s集群某些参数执行某些命令的时候,快速拉起一个k8s集群进行操作。这里不需要外网,所有容器镜像都是本地下载的,所需要的命令安装文件也是本地下载的,甚至做实验的两个nginx容器镜像也准备好了。
使用的虚机是按照之前文章创建出来的,这里我只用一台机器,资源给的多一点。
PS:我做实验这段时间非常不巧,好像是因为什么dns污染导致公网容器镜像无法正常下载,这里涉及到的容器镜像或者是命令文件我都下载到本地了,避免每次部署环境进行网络下载延长部署时间。
| 系统 | 版本 |
|---|---|
| almalinux9.6 | 5.14.0-570.12.1.el9_6.x86_64 |
| minikube | v1.36.0 |
| docker | 28.3.3 |
| kubectl | v1.33.0 |
kubernetes官方文档:kubernetes官方文档
minikube安装文档:kubernetes-minikube安装文档
minikube-v1.33部署压缩包:百度云
官方文档查看目前版本最新的是1.33那就部署1.33的。
官方文档给的实验虚机配置在这里,minikube官网要求的。
根据自己电脑配置来就好了,最低保证下面这个资源配置,我这里给的是4C8G,资源多一点,执行快。兄弟们自己选择哈!
二、部署安装
minikube部署起来相对简单,安装个docker+安装kubectl命令+部署minikube环境。但是中间有个前提,你的网络没得问题,公网源是好使的,容器镜像和下载的部署文件是可以正常下载的,不然你就傻了!
我这里也是被网上文档坑了,什么一键化部署,最全教程,进去一看就是给个minikube start命令就完了,也没说执行不下去怎么办?是否有其他办法?我这也是寸,正好做实验赶上什么dns污染公网不好使,下载个容器镜像清一水超时,是真打击我自信心。
为了避免兄弟们遇到和我类似的问题,我直接将部署中涉及到容器镜像+安装命令都下载到本地了,放到百度云盘中了,大家自取哈!
创建普通用户+下载压缩包
minikube的安装命令是要求使用普通用户进行创建的,如果使用root用户会和你扯什么安全不规范啥的,但是我看官方文档是没有提示的,真坑。
这里我们创建secure普通用户然后将它加到wheel组里面方便我们进行提权,然后将123作为用户密码设置。如果你是从almalinux9.6系统-基础环境准备过来的那么就不用操作了,因为已经创建并设置了。
useradd secure;usermod -aG wheel secure;echo 123 | passwd --stdin secure;su - secure
接着我们从百度云下载压缩包放到secure用户的家目录里面——》/home/secure/
[root@localhost minikube-kubernetes-1.33-20250704]# pwd
/home/secure/minikube-kubernetes-1.33-20250704
[root@localhost minikube-kubernetes-1.33-20250704]# ll
total 2861732
-rw-r--r-- 1 secure secure 1320816128 Aug 14 09:46 gcr.io-k8s-minikube-kicbase-v0.0.47.tar
-rw-r--r-- 1 secure secure 584254 Aug 14 09:43 kube-ps1-master.zip
-rw-r--r-- 1 secure secure 40064 Aug 14 09:43 kube-shell-master.zip
-rw-r--r-- 1 secure secure 60121272 Aug 14 09:43 kubectl
-rw-r--r-- 1 secure secure 59146424 Aug 14 09:43 kubectl-convert
-rw-r--r-- 1 secure secure 64 Aug 14 09:43 kubectl-convert.sha256
-rw-r--r-- 1 secure secure 64 Aug 14 09:43 kubectl.sha256
-rw-r--r-- 1 secure secure 569098 Aug 14 09:43 kubectx-master.zip
-rw-r--r-- 1 secure secure 334633984 Aug 14 09:46 mariadb-latest.tar
-rw-r--r-- 1 secure secure 132766301 Aug 14 09:46 minikube-linux-amd64
-rw-r--r-- 1 secure secure 196626944 Aug 14 09:46 nginx-1.27.5.tar
-rw-r--r-- 1 secure secure 196636160 Aug 14 09:46 nginx-1.28.0.tar
-rw-r--r-- 1 secure secure 196392960 Aug 14 09:46 nginx-latest-1.29.0.tar
-rw-r--r-- 1 secure secure 363893849 Aug 14 09:46 preloaded-images-k8s-v18-v1.33.1-docker-overlay2-amd64.tar.lz4
-rw-r--r-- 1 secure secure 16 Aug 14 09:46 preloaded-images-k8s-v18-v1.33.1-docker-overlay2-amd64.tar.lz4.checksum
-rw-r--r-- 1 secure secure 68151808 Aug 14 09:46 registry.k8s.io-metrics-server-metrics-server-v0.7.2.tar
[root@localhost minikube-kubernetes-1.33-20250704]#
压缩包中部署minikube涉及到的容器镜像还有我们需要安装的命令都下载到本地了,直接命令安装就好了,这里两个nginx压缩包是两个nginx容器镜像,这里下载两个不同版本的方便我们在验证回滚命令的时候进行实验。
| 名称 | 作用 |
|---|---|
| gcr.io-k8s-minikube-kicbase-v0.0.47.tar | 启动k8s导入镜像【必须导入】 |
| preloaded-images-k8s-v18-v1.33.1-docker-overlay2-amd64.tar.lz4 | 预加载的镜像文件【必须导入】 |
| preloaded-images-k8s-v18-v1.33.1-docker-overlay2-amd64.tar.lz4.checksum | 预加载的镜像文件的校验码 |
| kubectl | kubectl命令【必装】 |
| kubectl.sha256 | kubectl命令的校验码 |
| minikube-linux-amd64 | minikube的命令【必装】 |
| nginx-1.28.0.tar | nginx的容器镜像 |
| nginx-1.27.5.tar | nginx的容器镜像 |
docker-ce安装
我这里docker-ce源已经准备好了,直接安装就可以,如果你没有的话可以参考我上一篇文章almalinux9.6系统-基础环境准备中yum源配置进行操作。
直接安装docker-ce软件包然后设置开机启动
——》这里正常流程需要设置下镜像加速,但是我容器镜像都下载好了,就不用了,确保dcoker服务是启动的就好
yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker



这里给兄弟们演示下公网不好使,镜像无法正常拉取的情况
——》我们没配置镜像加速,配置了也是这个状态,我当时第一次部署都纳了闷了,我知道外网不稳定但也不至于不稳定到每次都超时失败吧,最后一百度才知道,dns被污染,国内访问公网容器仓库完全不通,真寸。
容器镜像导入
我们导入三个容器镜像,一个是部署minikube时候使用的,剩下两个是为了后续做实验的。
docker load -i gcr.io-k8s-minikube-kicbase-v0.0.47.tar
docker load -i nginx-1.27.5.tar
docker load -i nginx-1.28.0.tar
docker images


将预加载镜像压缩包放到对应位置,这里是minikube部署时候自己会到这里找到并且加载
——》【这里是在家目录创建,我使用的是secure普通用户了】
mkdir -p ~/.minikube/cache/preloaded-tarball/
cp preloaded-images-k8s-v18-v1.33.1-docker-overlay2-amd64.tar.lz4 ~/.minikube/cache/preloaded-tarball/
ll ~/.minikube/cache/preloaded-tarball/

minikube安装
安装下kubectl命令和minikube命令我都下载好了,直接安装就好。
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
install minikube-linux-amd64 /usr/local/bin/minikube
kubectl version --client
minikube version

现在我们docker-ce安装完成了;部署镜像也都导入了;kubectl+minikube命令也是正常安装了;可以通过minikube来拉起kubernetes集群了
### 切换secure用户执行
minikube start --driver=docker
### 使用root用户执行
minikube start --driver=docker --force
这里演示下我上面说的官方文档坑了,操作到现在我都是在root用户下执行的,你要是不切换secure普通用户这里直接执行minikube命令就会这样
PS:他会提示你,你是用root用户启动的,这里是不建议的,为了安全起见建议使用普通用户来进行启动,吧啦吧啦!
PPS:命令也显示了,你要是非要用root用户也可以,命令后面加个–force也能强制安装。
PPPS:我这种菜鸡当然是不敢了,还是按照提示来吧,切换个secure普通用户进行安装。
使用普通用户执行安装命令提示没有docker授权
——》按照命令提示符来,通过sudo命令手动给secure用户授权下
PS:这里注意下,你准备时候是root用户执行任何命令都可以,你是管理员,为所欲为。现在你是secure普通用户,尤其是当你想执行一些root身份才能执行的命令,可以用sudo命令提权,但是提权的前提是什么?得有root用户给你授权了才行,我上面创建secure用户为什么把他加入wheel组里面,因为sudo提权的配置文件中指定了wheel用户组可以提权。或者是用下面这个命令让所有普通用户都可以使用sudo执行任何命令,实验环境添加方便简捷。
echo "secure ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
sudo usermod -aG docker $USER && newgrp docker

接着再执行就可以了,这里我们可以看到加载镜像一样的回显——》这里是我们放到预加载目录中的镜像压缩包,程序找到了解压之后进行镜像导入,
这就是部署完成了,我们使用minikube拉起了一个1.33版本的kubernetes环境
我们可以查看下minikube节点状态+k8s组件状态还有集群信息
minikube node list
kubectl get pods -A
kubectl cluster-info

minikube容器镜像导入
eval $(minikube docker-env)
cd /home/secure/minikube-kubernetes-1.33-20250704/
docker load -i nginx-latest-1.29.0.tar
docker load -i nginx-1.28.0.tar
这里我们可以将环境变量指向minikube的docker-env守护进程然后将容器镜像传进去——》上传完可以查看下的确是有了
我们创建个pod玩玩——》之前导入了nginx镜像看下是否能正常启动【不能】
kubectl run nginx-app --image=nginx:1.28.0
kubectl get pods
kubectl logs pods/nginx-app
kubectl describe pods nginx-app

为什么之前导入了nginx容器惊险现在pod创建调用的时候找不到呢?是我们导入有问题吗?
docker images查看是没问题的,这是为毛?
我们可以看下minikube给我启动的k8s集群到底是个什么东西——》一个docker’容器,我们使用kubectl命令启动的pod拉取这个容器中的镜像,那肯定是没有得了,这里我们需要进入容器将镜像导入下。
eval $(minikube docker-env)
cd /home/secure/minikube-kubernetes-1.33-20250704/
docker load -i nginx-latest-1.29.0.tar
docker load -i nginx-1.28.0.tar
这里我们可以将环境变量指向minikube的docker-env守护进程然后将容器镜像传进去——》上传完可以查看下的确是有了
当我们将nginx容器镜像上传进来之后,这个pod找到容器镜像自己就起来了。
三、minikube常用命令
minikube start #强制启动
minikube status #查看集群状态
minikube pause #挂起
minikube unpause #放下来
minikube addons list #查看加载的模块
minikube stop #关闭集群
minikube delete --all #删除集群
minikube start --driver=docker #普通用户启动
minikube start --driver=docker --force #root用户启动
挂起就是将kubelet给停了然后将api给挂起了。
查看下minikube加载的模块
到现在almalinux9.6系统下用minikube部署1.33版本k8s集群就完成了,镜像也导入了,服务状态正常,pod能够正常创建。
四、部署报错
这下面报错是我自己部署的时候遇到的问题,记录了一些,有些小问题直接百度解决了也就没有记录。
还有就是minikube构建出来的k8s集群定位一定要准备,你创建出来就是为了节省资源和快速创建出来,你执行点命令啦!查看参数!查看配置啥的都可以,千万!千万!千万!不要部署额外的,比如dashboard+ingress等组件,部署不出来就是部署出来也无法正常访问,毕竟minikube拉起来的环境就是个容器,他里面创建的pod也好安装下dashboard都是无法访问的,别挣扎,你就熟悉命令就好了。如果你就是想看到dashboard页面,感觉下页面点点的快乐,那么请看我下一篇使用kubeadm部署kubernetes集群,他是直接在虚机上启动的,你可以这时候部署了dashboard和ingress查看现象。
报错1:拉取容器镜像超时
[root@vlinux100010 ~]# minikube start --driver=docker --force
* minikube v1.36.0 on Centos 7.6.1810
! minikube skips various validations when --force is supplied; this may lead to unexpected behavior
* Using the docker driver based on existing profile
* The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
* If you are running minikube within a VM, consider using --driver=none:
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* Tip: To remove this root owned cluster, run: sudo minikube delete
* Starting "minikube" primary control-plane node in "minikube" cluster
* Pulling base image v0.0.47 ...
! minikube cannot pull kicbase image from any docker registry, and is trying to download kicbase tarball from github release page via HTTP.
! It's very likely that you have an internet issue. Please ensure that you can access the internet at least via HTTP, directly or with proxy. Currently your proxy configure is:
E0701 12:10:48.209340 11271 cache.go:225] Error downloading kic artifacts: failed to download kic base image or any fallback image
* docker "minikube" container is missing, will recreate.
* Creating docker container (CPUs=2, Memory=2200MB) ...
! StartHost failed, but will try again: recreate: creating host: create: creating: setting up container node: preparing volume for minikube container: docker run --rm --name minikube-preload-sidecar --label created_by.minikube.sigs.k8s.io=true --label name.minikube.sigs.k8s.io=minikube --entrypoint /usr/bin/test -v minikube:/var gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b -d /var/lib: exit status 125
stdout:
stderr:
Unable to find image 'gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b' locally
docker: Error response from daemon: Get "https://gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
* docker "minikube" container is missing, will recreate.
* Creating docker container (CPUs=2, Memory=2200MB) ...
* Failed to start docker container. Running "minikube delete" may fix it: recreate: creating host: create: creating: setting up container node: preparing volume for minikube container: docker run --rm --name minikube-preload-sidecar --label created_by.minikube.sigs.k8s.io=true --label name.minikube.sigs.k8s.io=minikube --entrypoint /usr/bin/test -v minikube:/var gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b -d /var/lib: exit status 125
stdout:
stderr:
Unable to find image 'gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b' locally
docker: Error response from daemon: Get "https://gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
X Exiting due to GUEST_PROVISION: error provisioning guest: Failed to start host: recreate: creating host: create: creating: setting up container node: preparing volume for minikube container: docker run --rm --name minikube-preload-sidecar --label created_by.minikube.sigs.k8s.io=true --label name.minikube.sigs.k8s.io=minikube --entrypoint /usr/bin/test -v minikube:/var gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b -d /var/lib: exit status 125
stdout:
stderr:
Unable to find image 'gcr.io/k8s-minikube/kicbase:v0.0.47@sha256:6ed579c9292b4370177b7ef3c42cc4b4a6dcd0735a1814916cbc22c8bf38412b' locally
docker: Error response from daemon: Get "https://gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
*
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ * If the above advice does not help, please let us know: │
│ https://github.com/kubernetes/minikube/issues/new/choose │
│ │
│ * Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue. │
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
[root@vlinux100010 ~]#
报错2:使用普通用户安装提示没得驱动程序可用
[secure@DESKTOP-7I5OOBB ~]$ minikube start
* minikube v1.36.0 on Almalinux 9.6 (amd64)
* Unable to pick a default driver. Here is what was considered, in preference order:
- docker: Not healthy: "docker version --format {{.Server.Os}}-{{.Server.Version}}:{{.Server.Platform.Name}}" exit status 1: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/version": dial unix /var/run/docker.sock: connect: permission denied
- docker: Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker' <https://docs.docker.com/engine/install/linux-postinstall/>
* Alternatively you could install one of these drivers:
- kvm2: Not installed: exec: "virsh": executable file not found in $PATH
- podman: Not installed: exec: "podman": executable file not found in $PATH
- qemu2: Not installed: exec: "qemu-system-x86_64": executable file not found in $PATH
- virtualbox: Not installed: unable to find VBoxManage in $PATH
X Exiting due to DRV_NOT_HEALTHY: Found driver(s) but none were healthy. See above for suggestions how to fix installed drivers.
[secure@DESKTOP-7I5OOBB ~]$ docker ps -a
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/containers/json?all=1": dial unix /var/run/docker.sock: connect: permission denied
[secure@DESKTOP-7I5OOBB ~]$
#这里是普通用户没有操作docker的权限,手动授权下就好【sudo usermod -aG docker $USER && newgrp docker】
报错3:启动dashboard报错-提示找不到镜像
[secure@DESKTOP-7I5OOBB ~]$ minikube dashboard
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
X Exiting due to SVC_URL_TIMEOUT: http://127.0.0.1:40749/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ is not accessible: Temporary Error: unexpected response code: 503
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-674b8bbfcf-g8jv6 1/1 Running 0 38m
kube-system coredns-674b8bbfcf-llhnq 1/1 Running 0 38m
kube-system etcd-minikube 1/1 Running 0 39m
kube-system kube-apiserver-minikube 1/1 Running 0 39m
kube-system kube-controller-manager-minikube 1/1 Running 1 (39m ago) 39m
kube-system kube-proxy-tqrv9 1/1 Running 0 38m
kube-system kube-scheduler-minikube 1/1 Running 0 39m
kube-system metrics-server-7fbb699795-f8d76 0/1 ImagePullBackOff 0 11m
kube-system storage-provisioner 1/1 Running 0 39m
kubernetes-dashboard dashboard-metrics-scraper-5d59dccf9b-7qs6h 0/1 ImagePullBackOff 0 22m
kubernetes-dashboard kubernetes-dashboard-7779f9b69b-75tp2 0/1 ImagePullBackOff 0 22m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl get svc -n kubernetes-dashboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dashboard-metrics-scraper ClusterIP 10.96.191.186 <none> 8000/TCP 24m
kubernetes-dashboard ClusterIP 10.99.149.109 <none> 80/TCP 24m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5d59dccf9b-7qs6h 0/1 ImagePullBackOff 0 25m
kubernetes-dashboard-7779f9b69b-75tp2 0/1 ImagePullBackOff 0 25m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl describe pod kubernetes-dashboard-7779f9b69b-75tp2 -n kubernetes-dashboard
Name: kubernetes-dashboard-7779f9b69b-75tp2
Namespace: kubernetes-dashboard
Priority: 0
Service Account: kubernetes-dashboard
Node: minikube/192.168.49.2
Start Time: Fri, 04 Jul 2025 10:19:40 +0800
Labels: gcp-auth-skip-secret=true
k8s-app=kubernetes-dashboard
pod-template-hash=7779f9b69b
Annotations: <none>
Status: Pending
IP: 10.244.0.5
IPs:
IP: 10.244.0.5
Controlled By: ReplicaSet/kubernetes-dashboard-7779f9b69b
Containers:
kubernetes-dashboard:
Container ID:
Image: docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93
Image ID:
Port: 9090/TCP
Host Port: 0/TCP
Args:
--namespace=kubernetes-dashboard
--enable-skip-login
--disable-settings-authorizer
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Liveness: http-get http://:9090/ delay=30s timeout=30s period=10s #success=1 #failure=3
Environment: <none>
Mounts:
/tmp from tmp-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-9jb4j (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
tmp-volume:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
kube-api-access-9jb4j:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
Optional: false
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: kubernetes.io/os=linux
Tolerations: node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 32m default-scheduler Successfully assigned kubernetes-dashboard/kubernetes-dashboard-7779f9b69b-75tp2 to minikube
Warning Failed 29m (x2 over 30m) kubelet Failed to pull image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93": Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded
Normal Pulling 28m (x5 over 32m) kubelet Pulling image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93"
Warning Failed 27m (x3 over 31m) kubelet Failed to pull image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93": Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Warning Failed 27m (x5 over 31m) kubelet Error: ErrImagePull
Normal BackOff 2m19s (x119 over 31m) kubelet Back-off pulling image "docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93"
Warning Failed 101s (x122 over 31m) kubelet Error: ImagePullBackOff
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl describe pod dashboard-metrics-scraper-5d59dccf9b-7qs6h -n kubernetes-dashboard
Name: dashboard-metrics-scraper-5d59dccf9b-7qs6h
Namespace: kubernetes-dashboard
Priority: 0
Service Account: kubernetes-dashboard
Node: minikube/192.168.49.2
Start Time: Fri, 04 Jul 2025 10:19:40 +0800
Labels: k8s-app=dashboard-metrics-scraper
pod-template-hash=5d59dccf9b
Annotations: seccomp.security.alpha.kubernetes.io/pod: runtime/default
Status: Pending
IP: 10.244.0.4
IPs:
IP: 10.244.0.4
Controlled By: ReplicaSet/dashboard-metrics-scraper-5d59dccf9b
Containers:
dashboard-metrics-scraper:
Container ID:
Image: docker.io/kubernetesui/metrics-scraper:v1.0.8@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c
Image ID:
Port: 8000/TCP
Host Port: 0/TCP
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Liveness: http-get http://:8000/ delay=30s timeout=30s period=10s #success=1 #failure=3
Environment: <none>
Mounts:
/tmp from tmp-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-kwtjf (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
tmp-volume:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
kube-api-access-kwtjf:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
Optional: false
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: kubernetes.io/os=linux
Tolerations: node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 34m default-scheduler Successfully assigned kubernetes-dashboard/dashboard-metrics-scraper-5d59dccf9b-7qs6h to minikube
Warning Failed 31m (x3 over 33m) kubelet Failed to pull image "docker.io/kubernetesui/metrics-scraper:v1.0.8@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c": Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded
Normal Pulling 29m (x5 over 34m) kubelet Pulling image "docker.io/kubernetesui/metrics-scraper:v1.0.8@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c"
Warning Failed 29m (x2 over 33m) kubelet Failed to pull image "docker.io/kubernetesui/metrics-scraper:v1.0.8@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c": Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Warning Failed 29m (x5 over 33m) kubelet Error: ErrImagePull
Normal BackOff 3m59s (x118 over 33m) kubelet Back-off pulling image "docker.io/kubernetesui/metrics-scraper:v1.0.8@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c"
Warning Failed 3m44s (x119 over 33m) kubelet Error: ImagePullBackOff
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5d59dccf9b-7qs6h 0/1 ImagePullBackOff 0 34m
kubernetes-dashboard-7779f9b69b-75tp2 0/1 ImagePullBackOff 0 34m
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-5d59dccf9b-7qs6h 0/1 ImagePullBackOff 0 34m
kubernetes-dashboard-7779f9b69b-75tp2 0/1 ImagePullBackOff 0 34m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 9592f5595f2b 9 days ago 192MB
centos latest f33f23011f68 2 weeks ago 1.51GB
next-centos-raw 20250619 f33f23011f68 2 weeks ago 1.51GB
docker.xuanyuan.dev/kicbase/stable v0.0.47 795ea6a69ce6 6 weeks ago 1.31GB
gcr.io/k8s-minikube/kicbase v0.0.47 795ea6a69ce6 6 weeks ago 1.31GB
kubernetesui/dashboard v2.7.0 07655ddf2eeb 2 years ago 246MB
docker.xuanyuan.dev/kubernetesui/dashboard v2.7.0 07655ddf2eeb 2 years ago 246MB
docker.xuanyuan.dev/kubernetesui/metrics-scraper v1.0.8 115053965e86 3 years ago 43.8MB
kubernetesui/metrics-scraper v1.0.8 115053965e86 3 years ago 43.8MB
[secure@DESKTOP-7I5OOBB ~]$
#——》这里查看报错还是没有容器镜像闹得
1、首先我们需要edit下deployment中的镜像地址
2、接着按照报错6中的方法进行镜像导入才可以
在 Pod 或 Deployment 的 YAML 文件中指定镜像拉取策略为 IfNotPresent 或 Never:
spec:
containers:
- name: my-container
image: my-local-image:latest
imagePullPolicy: IfNotPresent # 优先使用本地镜像
[secure@DESKTOP-7I5OOBB ~]$ kubectl get deployment -n kubernetes-dashboard
NAME READY UP-TO-DATE AVAILABLE AGE
dashboard-metrics-scraper 1/1 1 1 170m
kubernetes-dashboard 0/1 1 0 170m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl edit deployment/kubernetes-dashboard -n kubernetes-dashboard
deployment.apps/kubernetes-dashboard edited
[secure@DESKTOP-7I5OOBB ~]$
41 containers:
42 - args:
43 - --namespace=kubernetes-dashboard
44 - --enable-skip-login
45 - --disable-settings-authorizer
46 image: docker.io/kubernetesui/dashboard:v2.7.0@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93
47 imagePullPolicy: IfNotPresent
#修改后
46 image: kubernetesui/dashboard:v2.7.0
47 imagePullPolicy: IfNotPresent
#修改完成之后再查看pod的状态就是正常的了
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
dashboard-metrics-scraper-7d79b4b879-nlk8w 1/1 Running 0 107m
kubernetes-dashboard-5965c785b7-rxmjm 1/1 Running 0 28s
[secure@DESKTOP-7I5OOBB ~]$
#接着检查还有一个pod是异常的
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
……
kube-system metrics-server-7fbb699795-f8d76 0/1 ImagePullBackOff 0 3h7m
……
#老样子查看下deployment然后进入pod修改下容器名称
[secure@DESKTOP-7I5OOBB ~]$ kubectl get deployment -n kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2 2 2 3h35m
metrics-server 0/1 1 0 3h8m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl edit deployment/metrics-server -n kube-system
deployment.apps/metrics-server edited
[secure@DESKTOP-7I5OOBB ~]$
49 image: registry.k8s.io/metrics-server/metrics-server:v0.7.2@sha256:ffcb2bf004d6aa0a17d90e0247cf94f2865c8901dcab4427034c341951c239f9
50 imagePullPolicy: IfNotPresent
#修改后
49 image: registry.k8s.io/metrics-server/metrics-server:v0.7.2
50 imagePullPolicy: IfNotPresent
[root@DESKTOP-7I5OOBB secure]# docker pull docker.xuanyuan.dev/dyrnq/metrics-server:v0.7.2
[root@DESKTOP-7I5OOBB secure]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
……
docker.xuanyuan.dev/dyrnq/metrics-server v0.7.2 48d9cfaaf390 10 months ago 67.1MB
……
[root@DESKTOP-7I5OOBB secure]#
[root@DESKTOP-7I5OOBB secure]# docker tag docker.xuanyuan.dev/dyrnq/metrics-server:v0.7.2 registry.k8s.io/metrics-server/metrics-server:v0.7.2
[root@DESKTOP-7I5OOBB secure]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
……
docker.xuanyuan.dev/dyrnq/metrics-server v0.7.2 48d9cfaaf390 10 months ago 67.1MB
registry.k8s.io/metrics-server/metrics-server v0.7.2 48d9cfaaf390 10 months ago 67.1MB
……
[root@DESKTOP-7I5OOBB secure]#
docker save -o /home/secure/metrics-server-metrics-server-v0.7.2.tar registry.k8s.io/metrics-server/metrics-server:v0.7.2
chown secure:secure /home/secure/metrics-server-metrics-server-v0.7.2.tar
chmod +x /home/secure/metrics-server-metrics-server-v0.7.2.tar
eval $(minikube docker-env)
#导入镜像时候不要用sudo不然会切换到root用户执行!!!
docker load -i /home/secure/metrics-server-metrics-server-v0.7.2.tar
#在minikube的docker守护进程中
[secure@DESKTOP-7I5OOBB ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
…………
registry.k8s.io/metrics-server/metrics-server v0.7.2 48d9cfaaf390 10 months ago 67.1MB
registry.k8s.io/pause 3.10 873ed7510279 13 months ago 736kB
kubernetesui/dashboard v2.7.0 07655ddf2eeb 2 years ago 246MB
kubernetesui/metrics-scraper v1.0.8 115053965e86 3 years ago 43.8MB
gcr.io/k8s-minikube/storage-provisioner v5 6e38f40d628d 4 years ago 31.5MB
[secure@DESKTOP-7I5OOBB ~]$
报错4:设置默认编辑器否则edit无法打开deployment
[secure@DESKTOP-7I5OOBB ~]$ kubectl edit deployment dashboard-metrics-scraper -n kubernetes-dashboard
error: unable to launch the editor "vi"
[secure@DESKTOP-7I5OOBB ~]$
#Kubernetes 默认使用 vi 编辑器,但可能因环境变量未正确配置导致失败。通过以下命令检查当前编辑器设置:
[secure@DESKTOP-7I5OOBB ~]$ echo $EDITOR
[secure@DESKTOP-7I5OOBB ~]$ echo $KUBE_EDITOR
[secure@DESKTOP-7I5OOBB ~]$
EDITOR="vim"
KUBE_EDITOR="vim"
echo 'export EDITOR="vim"' >> ~/.bashrc
echo 'export KUBE_EDITOR="vim"' >> ~/.bashrc
echo 'export EDITOR="vim"' >> /etc/bashrc
echo 'export KUBE_EDITOR="vim"' >> /etc/bashrc
#若未设置,可临时指定编辑器(如 nano):
KUBE_EDITOR="vim" kubectl edit deployment/dashboard-metrics-scraper -n kubernetes-dashboard
export KUBE_EDITOR="nano" # 添加到 ~/.bashrc
#或直接通过 --editor 参数指定:
kubectl edit deployment/dashboard-metrics-scraper -n kubernetes-dashboard --editor=nano
若编辑器仍无法启动,可导出 YAML 手动编辑后重新应用:
kubectl get deployment/dashboard-metrics-scraper -n kubernetes-dashboard -o yaml > scraper.yaml
nano scraper.yaml # 编辑后保存
kubectl apply -f scraper.yaml
若问题持续,进入调试模式检查环境变量:
kubectl run -it debug --image=busybox --restart=Never -- sh
echo $EDITOR
报错5:安装ingress组件报错
[secure@DESKTOP-7I5OOBB ~]$ minikube addons enable ingress
* ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
- Using image registry.k8s.io/ingress-nginx/controller:v1.12.2
- Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3
- Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3
* Verifying ingress addon...
X Exiting due to MK_ADDON_ENABLE: enable failed: run callbacks: running callbacks: [waiting for app.kubernetes.io/name=ingress-nginx pods: context deadline exceeded]
*
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ * If the above advice does not help, please let us know: │
│ https://github.com/kubernetes/minikube/issues/new/choose │
│ │
│ * Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue. │
│ * Please also attach the following file to the GitHub issue: │
│ * - /tmp/minikube_addons_eebdb8ec4c09648ff1b1f7987504468bfd87b467_0.log │
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
……
ingress-nginx ingress-nginx-admission-create-q4bng 0/1 ImagePullBackOff 0 28m
ingress-nginx ingress-nginx-admission-patch-7tsxf 0/1 ImagePullBackOff 0 28m
ingress-nginx ingress-nginx-controller-67c5cb88f-w2vth 0/1 ContainerCreating 0 28m
……
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-q4bng 0/1 ImagePullBackOff 0 29m
ingress-nginx-admission-patch-7tsxf 0/1 ImagePullBackOff 0 29m
ingress-nginx-controller-67c5cb88f-w2vth 0/1 ContainerCreating 0 29m
[secure@DESKTOP-7I5OOBB ~]$ kubectl get deployment -n ingress-nginx
NAME READY UP-TO-DATE AVAILABLE AGE
ingress-nginx-controller 0/1 1 0 29m
[secure@DESKTOP-7I5OOBB ~]$
[secure@DESKTOP-7I5OOBB ~]$ kubectl edit deployment/ingress-nginx-controller -n ingress-nginx
deployment.apps/ingress-nginx-controller edited
[secure@DESKTOP-7I5OOBB ~]$
70 image: registry.k8s.io/ingress-nginx/controller:v1.12.2@sha256:03497ee984628e95eca9b2279e3f3a3c1685dd48635479e627d219f00c8eefa9
71 imagePullPolicy: IfNotPresent
#修改之后
70 image: registry.k8s.io/ingress-nginx/controller:v1.12.2
71 imagePullPolicy: IfNotPresent
[secure@DESKTOP-7I5OOBB ~]$ kubectl get pods -n ingress-nginx
NAME READY STATUS RESTARTS AGE
ingress-nginx-admission-create-q4bng 0/1 ImagePullBackOff 0 32m
ingress-nginx-admission-patch-7tsxf 0/1 ImagePullBackOff 0 32m
ingress-nginx-controller-f696496d4-mr5qq 0/1 ContainerCreating 0 48s
[secure@DESKTOP-7I5OOBB ~]$ kubectl describe pod ingress-nginx-admission-create-q4bng -n ingress-nginx
——》Pulling image "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3@sha256:2cf4ebfa82a37c357455458f6dfc334aea1392d508270b2517795a9933a02524"
[secure@DESKTOP-7I5OOBB ~]$ kubectl describe pod ingress-nginx-admission-patch-7tsxf -n ingress-nginx
——》Pulling image "registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3@sha256:2cf4ebfa82a37c357455458f6dfc334aea1392d508270b2517795a9933a02524"
registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.3
registry.k8s.io/ingress-nginx/controller:v1.12.2
docker pull docker.xuanyuan.dev/dyrnq/kube-webhook-certgen:v1.5.3
registry.k8s.io/ingress-nginx/controller:v1.12.2——》相似的镜像太多了,网页搜索非常弱智找不到对应的官方源贼傻比不浪费时间了,有空再说!!!
报错6:使用root用户启动coredns的pod启动报错——》无法正常绑定53端口导致pod无法正常启动
[root@vlinux100010 preloaded-tarball]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-674b8bbfcf-8gkgm 0/1 CrashLoopBackOff 7 (44s ago) 12m
kube-system etcd-minikube 1/1 Running 0 12m
kube-system kube-apiserver-minikube 1/1 Running 0 12m
kube-system kube-controller-manager-minikube 1/1 Running 0 12m
kube-system kube-proxy-8kcm2 1/1 Running 0 12m
kube-system kube-scheduler-minikube 1/1 Running 0 12m
kube-system storage-provisioner 1/1 Running 1 (11m ago) 11m
[root@vlinux100010 preloaded-tarball]#
[root@vlinux100010 preloaded-tarball]# kubectl get deployment -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 0/1 1 0 13m
[root@vlinux100010 preloaded-tarball]# kubectl logs deployment/coredns -n kube-system
maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined
Listen: listen tcp :53: bind: permission denied
[root@vlinux100010 preloaded-tarball]#
——》询问AI报错反馈
从日志来看,CoreDNS 容器无法正常启动,主要报错是 listen tcp :53: bind: permission denied,这通常是由于权限问题导致无法绑定到 53 端口(DNS 服务默认端口)。以下是可能的原因和解决方案:
1. 端口权限问题
原因:Linux 系统中,1024 以下端口需要 root 权限才能绑定。CoreDNS 默认以非 root 用户运行,因此无法直接监听 53 端口12。
解决方案:
方案一:修改 CoreDNS 的 Deployment 配置,允许以 root 用户运行:
securityContext:
runAsUser: 0 # 以 root 用户运行
方案二:通过 setcap 命令赋予二进制文件绑定低端口的权限(适用于二进制部署):
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/coredns
——》选择方案一
[root@vlinux100010 preloaded-tarball]# kubectl edit deployment/coredns -n kube-system
deployment.apps/coredns edited
[root@vlinux100010 preloaded-tarball]#
90 securityContext:
91 runAsUser: 0
92 allowPrivilegeEscalation: false
93 capabilities:
94 add:
95 - NET_BIND_SERVICE
96 drop:
97 - ALL
98 readOnlyRootFilesystem: true
[root@vlinux100010 preloaded-tarball]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6f88766c9d-pw5d9 1/1 Running 0 17s
……
[root@vlinux100010 preloaded-tarball]#
更多推荐
所有评论(0)