k8s(kubernetes)服务部署dashboard时出现ImagePullBackOff/CrashLoopBackOff解决办法

部署服务时镜像拉取过程中出现:ImagePullBackOff
在这里插入图片描述kubectl describe pods kubernetes-dashboard-975499656-krwl7 -n kube-system
查看pod的详细情况

Events:
  Type     Reason     Age                    From                Message
  ----     ------     ----                   ----                -------
  Normal   Scheduled  4m38s                  default-scheduler   Successfully assigned kube-system/kubernetes-dashboard-975499656-krwl7 to k8s-node2
  Normal   Pulling    2m32s (x4 over 4m38s)  kubelet, k8s-node2  Pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  Warning  Failed     2m16s (x4 over 4m22s)  kubelet, k8s-node2  Failed to pull image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
  Warning  Failed     2m16s (x4 over 4m22s)  kubelet, k8s-node2  Error: ErrImagePull
  Normal   BackOff    112s (x6 over 4m22s)   kubelet, k8s-node2  Back-off pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1"
  Warning  Failed     99s (x7 over 4m22s)    kubelet, k8s-node2  Error: ImagePullBackOff

分析:这个拉取的国外的镜像源,是有点慢,网络不好的时候经常会出现这种情况,可以提前把需要的镜像下载好
解决办法:
更换国内镜像源,搜索需要下载的镜像
①编辑文件 /etc/docker/daemon.json 加入"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
在这里插入图片描述
重载配置文件重启docker生效

systemctl daemon-reload 
systemctl restart docker

②搜索需要的镜像,如:k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
## linux防火墙(iptables)拦截记录日志-浅析
③拉取指定镜像
在这里插入图片描述
④tag为配置文件中需要的镜像名k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

docker tag loveone/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

在这里插入图片描述在这里插入图片描述完成后再试一次(注意最好每个节点都做这样的操作,因为调度器随机选择节点部署,简而言之是在被部署的节点上操作)
重新部署
kubectl delete -f kubernetes-dashboard.yaml,
kubectl apply -f kubernetes-dashboard.yaml 或者 kubectl create -f kubernetes-dashboard.yaml --save-config
出现如下报错
在这里插入图片描述

kubectl logs kubernetes-dashboard-975499656-xlx5b -n kube-system 
  • 查看pod日志如下
    Error from server: Get https://192.168.40.131:10250/containerLogs/kube-system/kubernetes-dashboard-975499656-xlx5b/kubernetes-dashboard: dial tcp 192.168.40.131:10250: connect: no route to host
  • 分析:由此可见,部署服务时访问节点131的10250端口连接被拒绝,推测可能是防火墙的原因
  • 解决办法:
    ①查看服务端口是否被占用,!是否已经启起来了;
    在这里插入图片描述可以看到,端口启动正常;
    ②telnet测试一下端口(我这里是master机器上测试的)
    在这里插入图片描述
    果然不通
    ③查看节点1的防火墙状态
    在这里插入图片描述果然是防火墙的原因
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    再试端口就通了
    在这里插入图片描述
    重新部署试试
    在这里插入图片描述成功
  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
要通过YAML文件部署Kubernetes Dashboard,可以按照以下步骤进行操作: 1. 首先,创建一个名为`dashboard.yaml`的YAML文件,并使用文本编辑器打开它。 2. 在`dashboard.yaml`文件中,添加以下内容: ```yaml apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard --- apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard ``` 这将创建一个名为`kubernetes-dashboard`的命名空间以及一个名为`admin-user`的ServiceAccount。 3. 接下来,添加以下内容来授予ServiceAccount相关权限: ```yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard ``` 这将创建一个名为`admin-user`的ClusterRoleBinding,并将其绑定到`cluster-admin`角色。 4. 最后,在`dashboard.yaml`文件中添加以下内容来部署Dashboard: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard labels: k8s-app: kubernetes-dashboard spec: replicas: 1 selector: matchLabels: k8s-app: kubernetes-dashboard template: metadata: labels: k8s-app: kubernetes-dashboard spec: serviceAccountName: admin-user containers: - name: kubernetes-dashboard image: kubernetesui/dashboard:v2.4.0 ports: - containerPort: 8443 protocol: TCP args: - --enable-skip-login ``` 这将创建一个名为`kubernetes-dashboard`的Deployment,并使用`admin-user` ServiceAccount进行验证。Dashboard的镜像版本为v2.4.0,并且启用了跳过登录的功能。 5. 保存并关闭`dashboard.yaml`文件。 6. 运行以下命令来部署Dashboard: ``` kubectl apply -f dashboard.yaml ``` 这将使用`dashboard.yaml`文件中定义的配置部署Kubernetes Dashboard部署完成后,可以使用以下命令检查Dashboard的状态: ``` kubectl get all -n kubernetes-dashboard ``` 确保所有相关的Pod和服务都处于运行状态。然后,可以通过访问Dashboard的URL(通常是https://<cluster-ip>:8443)来访问Kubernetes Dashboard。请注意,具体的URL和访问方式可能因集群配置而有所不同。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞运维的万精油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值