1.常用命令

  • 1.通过资源清单 nginx.yaml 创建服务
kubectl apply -f nginx.yaml
  • 2.查看指定名称空间下的资源
kubectl get pod -n kube-system
kubectl get svc -n kube-system
  • 3.进入容器内部
kubectl exec -it <pod_name> /bin/bash -n <namespace>
  • 4.查看Pod的描述信息
kubectl describe pod <pod_name> -n <namespace>
  • 5.查看所有名称空间下的资源
kubectl get svc --all-namespaces
kubectl get pod -A
  • 6.查看pod的实时日志
kubectl logs -f <podName>
  • 7.根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效
kubectl delete -f demo-deployment.yaml
  • 8.查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)
kubectl get pod -o wide
  • 9 批量删除状态Evicted的Pod
kubectl get pods -n  <namespace> | grep Evicted  | awk '{print $1}' | xargs kubectl delete pod -n  <namespace>

2.常见问题

2.1 主机中存在该目录还提示No such file or directory

在这里插入图片描述

我们在创建PV的时候指定的该目录,要提前创建,并且该目录要是个共享目录且需要有对应的权限,我们再介绍部署MySQL服务的时候有详细介绍,可 参考
在这里插入图片描述

2.2 k8s的node节点状态NotReady

通过命令查看日志

kubectl describe nodes <node_name>

在这里插入图片描述

这个问题明显是Docker ImageGC的问题。应该是内存不够了。导致的kubelet挂掉了。但是查看df -h。磁盘空间还是够的。

查看kubelet日志

journalct
journalctl -u kubelet | grep -i garbage

解决方案:先让docker自己清理一下镜像文件。然后重启kubeletdocker

2.3 执行kubeadm reset时报:etcdserver: re-configuration failed due to not enough started members

解决措施:

执行如下两条命令

rm-rf /etc/kubernetes/*
rm-rf /root/.kube/

然后再次执行即可

2.4 k8s join User “system:anonymous“ cannot get resource “configmaps“ in API group ““ in the namespace

参考这里

2.5 Error: configmaps is forbidden: User “system:serviceaccount:kube-system:default” cannot list resource “configmaps” in API group “” in the namespace “kube-system”

执行命令:

 kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

2.6 dashboard-metrics-scraper报错

在这里插入图片描述

删除该名称空间下所有Pod,k8s会自动创建。

2.7 pod状态Evicted

eviction,即驱赶的意思,意思是当节点出现异常时,kubernetes将有相应的机制驱赶该节点上的Pod。
多见于资源不足时导致的驱赶。

kubectl describe pod {pode_name} -n {namespace}

发现是磁盘满了

解决方案
排查资源和异常原因,防止新的驱赶产生。
使用如下命令删除旧驱赶的遗留

kubectl get pods --all-namespaces -o json | jq '.items[] | select(.status.reason!=null) | select(.status.reason | contains("Evicted")) | "kubectl delete pods \(.metadata.name) -n \(.metadata.namespace)"' | xargs -n 1 bash -c
df -h  //查看服务器空间
du -h --max-depth=1    //查看当前目录,哪个文件占用最大
du -sh *   //查看当前目录下各文件及文件夹占用大小

如何清理Linux服务器磁盘空间

kubectl get pods -n {namespace} | grep Evicted | awk '{print $1}' | xargs kubectl delete pod  -n {namespace}

{namespace} 需要根据实际情况 换成自己的

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐