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 run
1
$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster"
类似
docker ps
1
$ kubectl get po
类似
docker exec
1
$ kubectl exec -it nginx-app-5jyvm(name) -- /bin/bash
类似
docker rmi
1
$ 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