kubernetes(简称:k8s)
k8s是一个集群编排工具(集群调度程序)
使用所需要注意的地方
- 使用k8s需要连接外网,所以可以使用vpn或者使用大厂的解决工具k8s-for-docker-desktop(github仓库里搜索)
- 验证k8s成功则使用
kubectl version
来查看信息 - 目前docker只有windows以及mac版,所以ubuntu这样的环境最好使用minikube(单服务器集群)
- docker的容器是必须以前台形式存活的,一个容器里最好只有一个进程,这样当进程被终止掉后,容器也会被关闭,这样k8s工具可以监听到容器的关闭然后重启他
k8s的使用
- k8s的使用方式分为两种,命令式以及声明式
- 命令式,顾名思义就是在终端里敲对应的命令,例如
kubectl run
这样的,但是这样是只适合在本地开发测试使用,在生产环境中最好不要这样使用 - 声明式,即使用服务编排文件,文件后缀为.yml,这样利于在不同节点之间服务的统一性,因此在生产环境中最好使用这种方式
- 命令式,顾名思义就是在终端里敲对应的命令,例如
- k8s的命名规则是不适用驼峰法,单词与单词之间用.或者-连接.
k8s概念
pod
k8s是以pod为最小单位来调度并管理docker容器,其中一个pod可含多个容器,且相同pod里的容器共享本地网络,容器间可通过localhost地址互访,即容器如同部署在相同的主机上,而以pod为最小单元来调度则表明:pod内的容器被调度到相同的docker节点上
Deployment
将应用直接以pod形式部署很少见,主因是:pod无法提供弹性伸缩,且节点故障时k8s无法将其调度到幸存节点上,缺少自愈能力。鉴于此,应用常使用“镜像Rc部署Delopyment”部署,且在k8s新版本中,官方推荐用Deployment替代rc部署无状态应用
执行kubectl delete pod
删除Pod后,可发现deployment将自动重建pod,其将确保拥有.spec.replicas个pod数量,即意味着,当pod异常时,deployment具备自愈特性。
当需伸缩或扩展应用时,若以Pod形式部署,则需删除或创建Pod,而若使用Deployment部署,则我们仅需调整.spec.replicas,而后K8S镜像控制器将自动调整Pod数量
k8s常用命令
k8s的命令行工具是kubectl
kubectl get pods -o wide|json|yaml 不同格式输出pods信息
kubectl get all --all-namespaces 查看所有服务
kubectl run db --image redis 创建一个名为db的服务,镜像为redis
kubectl delete deployment db 删除db
kubectl exec db [命令,例如ls /etc] 在容器中运行命令
kubectl exec -it db sh 以终端打开容器
kubectl create -f pod/a.yml 以pod/a.yml的编排文件创建
kubectl describe pod db 查看服务的详细信息
kubectl describe -f pod/a.yml 查看某个服务编排文件的详细信息