Kubernetes(K8s) 基础知识与常用命令汇总
基本概念
云计算就是一种配置资源的方式,大概分为三种类型:
IaaS: Infrastructure as a ServicePaaS: Platform as a ServiceSaaS: Software as a Service
K8s 架构

etcd保存了整个集群的状态;apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理;Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
安装配置
基于 MacOS docker desktop 安装时,直接配置项中启用 Kubernetes 即可;

安装 k8s dashboard:
1 | $ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml |
开启 dashboard :
1 | $ kubectl proxy |
浏览器访问 dashboard 访问地址如下:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
需要生成 token 来进入界面,命令如下,输入最后生成的token;
1 | kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') |
参考文档:kubernetes/dashboard
基本命令
类似
docker run1
$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster"
类似
docker ps1
$ kubectl get po
类似
docker exec1
$ kubectl exec -it nginx-app-5jyvm(name) -- /bin/bash
类似
docker rmi1
$ kubectl delete deployment nginx-app(name)
查看 pod 相关信息:
1
$ kubectl describe pods aiops-tracerca-9cc566cf5-6jxvr(full-name)
查看 k8s 支持的所有API资源
1
$ kubectl api-resources -o wide

- NAME 资源名称
SHORTNAMES资源名称简写APIGROUP=> apiVersionKIND资源类型VERBS可用的方法
通过制定
api-group参数来获取特定 API 组的 API 资源:1
$ api-resources --api-group apps -o wide

查看资源的相关信息(将会显示资源及其对应的 yaml 文件版本):
1
$ kubectl explain deployments

获取集群支持的所有API版本:
1
$ kubectl api-versions
yaml 文件解析
deployments yaml 解析:
1 | apiVersion: apps/v1 # 指定api版本,此值必须在kubectl api-versions中 |
service yaml 解析
1 | apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中 |
常见问题
- pod 报错:“Back-off restarting failed container” 解决办法
在deployment申明镜像的后面加上命令,原因是镜像中没有默认运行command;
command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
- pod 报错: Error : FailedScheduling : nodes didn’t match node selector
删除 nodeSelector: 配置项
- pod 报错:Error: ImagePullBackOff
设置 deployment.yaml 文件
1 | imagePullPolicy: Never # 不从远程 pull |
- pod 报错:Readiness probe failed: dial tcp 10.1.0.17:8080: connect: connection refused
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦家博客!
评论
TwikooValine






