特别说明
1.前置环境k8s
2.本文问题出自在 Kubernetes 上最小化安装 KubeSphere, 安装版本为3.2.1
3.可自行前往kubesphere开发者社区询问或者查找类似问题
一、安装 KubeSphere
-
查看安装日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
-
无法查看
pod创建失败
-
-
无法创建对应的pod
-
查看出错原因
kubectl describe rs -n kubesphere-system
-
情况一
Warning FailedCreate 2m34s (x16 over 5m18s) replicaset-controller Error creating: Internal error occurred: failed calling webhook “
rev.object.sidecar-injector.istio.io
”: Post https://istiod-1-11-2.istio-system.svc:443/inject?timeout=30s: service “istiod-1-11-2” not found-
查看是否有istiod-1-11-2的资源
kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io
-
删除istiod-1-11-2资源
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io istio-sidecar-injector-1-11-2
-
-
-
问题解决后, 重新创建
-
-
安装失败
-
查看ks-installer的日志
kubectl logs ks-installer-* -n kubesphere-system
-
情况一
2021-01-08T15:17:42+08:00 ERROR : error getting GVR for kind ‘ClusterConfiguration’: unable to retrieve the complete list of server APIs: custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
2021-01-08T15:17:42+08:00 ERROR : Enable kube events for hooks error: unable to retrieve the complete list of server APIs: custom.metrics.k8s.io/v1beta1: the server is currently unable to handle the request
2021-01-08T15:17:45+08:00 INFO : TASK_RUN Exit: program halts.-
查看metrics-server是否正常
kubectl get apiservice
-
如果不正常, 可以先卸载, 等KubeSphere安装成功之后,再来安装metrics-server
-
-
-
问题解决后, 重新创建
-
二、卸载 KubeSphere
-
缺失插件, 安装目标插件即可
-
遇到卡住大概率是存有
Terminating
状态-
查看namespace
kubectl get ns
-
查看pod(也可省略, 直接进行删除操作)
kubectl get pod -n <namespace>
-
删除处于
Terminating
状态的podkubectl get pods -n <namespace> | grep Terminating | awk '{print $1}' | xargs kubectl delete pod -n <namespace> --force --grace-period=0
普通删除无法删除, 需强制删除–force --grace-period=0
-
删除处于
Terminating
状态的namespacekubectl get namespace kdo -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" | kubectl replace --raw /api/v1/namespaces/kdo/finalize -f -
-
PS: 直接强制删除namespace, 其中处于Terminating
状态的pod并不会一起被删除
三、设置端口时受限
k8s的node节点的端口默认被限制在30000-32767的范围
-
修改配置文件
vim /etc/kubernetes/manifests/kube-apiserver.yaml
-
添加端口范围(添加好保存后会自动生效)
- command: - kube-apiserver # 添加如下一行 - --service-node-port-range=1-65535
四、可能用到的指令
-
容器相关
- 删除Exited容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1}')
- 删除Exited容器
-
镜像相关
-
删除none镜像
docker rmi $(docker images | grep "none" | awk '{print $3}')
-
删除镜像名称:tag的镜像
docker rmi $(docker images | grep "tch.kubekey.local" | awk '{print $1":"$2}')
-
-
重启docker
systemctl restart docker
-
防火墙相关
-
查看防火墙是否开启
systemctl status firewalld
-
打开防火墙(关闭防火墙start -> stop)
systemctl start firewalld
-
开放端口
firewall-cmd --zone=public --add-port=端口/tcp --permanent
-
移除端口
firewall-cmd --zone=public --remove-port=端口/tcp --permanent
-
配置立即生效
firewall-cmd --reload
-
查看防火墙状态
firewall-cmd --state
-
查看所有开启的端口
firewall-cmd --list-ports
-
查看监听端口
netstat -lnpt
-
-
强制删除pvc/pv
kubectl get pvc | tail -n+2 | awk '{print $1}' | xargs -I{} kubectl patch pvc {} -p '{"metadata":{"finalizers": null}}'
kubectl get pv | tail -n+2 | awk '{print $1}' | xargs -I{} kubectl patch pvc {} -p '{"metadata":{"finalizers": null}}'