kubernetes笔记
- Kubernetes学习笔记_尚硅谷 - 一代肝帝 - 博客园
- k8s的作用
- 充分利用集群服务器资源,节省成本
- 便于管理大规模的容器,方便部署,方便伸缩,集群服务高可用,无感知部署更新
- 架构图
- Pod控制器类型
- ReplicationController & ReplicaSet & Deployment 新版本的kubernetes用ReplicaSet取代 ReplicationController,用来确保容器应用的副本数,当容器异常退出会新建Pod来替代,如果异常新增的也会自动回收,虽然ReplicaSet可独立使用,但一般建议用Deployment来自动管理,Deployment可以支持回滚更新)
- HPA(Horizontal Pod Autoscaler)
- StatefulSet (解决有状态服务的问题,如mysql,mongodb)
- DaemonSet
- Job CronJob
- ReplicationController & ReplicaSet & Deployment 新版本的kubernetes用ReplicaSet取代 ReplicationController,用来确保容器应用的副本数,当容器异常退出会新建Pod来替代,如果异常新增的也会自动回收,虽然ReplicaSet可独立使用,但一般建议用Deployment来自动管理,Deployment可以支持回滚更新)
- 服务发现
- kubectl命令
// 获取节点kubectl get node// 创建资源kubectl apply -f xxx.yml // 第二次创建不会报错kubectl create -f xxx.yml // 第二次创建会报错kubectl create -f xxx.yml --record // 会生成历史记录// 获取deploymentkubectl get deployment// deployment扩容或收缩kubectl scale deployment nginx-deployment --replicas 10// 运行deployment,未来将被移除,请使用kubectl create/apply创建kubectl run nginx-deployment --image=wangyanglinux/myapp:v1 --port=80 --replicas=1kubectl scale --replicas=3 deployment/nginx-deployment // 扩展deployment的pod副本数// deployment更新pod的镜像kubectl set image deployment/nginx-deployment nginx=wangyanglinux/myapp:v2// deployment回滚kubectl rollout undo deployment/nginx-deploymentkubectl rollout undo deployment/nginx-deployment --to-revision=1 // 指定回滚版本,版本号为历史序号kubectl rollout status deployments nginx-deployment // 查询deployment回滚状态kubectl rollout history deployment/nginx-deployment // 查询deployment回滚历史,但必须在创建deployment时加上--record// 删除deploymentkubectl delete deployment --all// 获取rskubectl get rs// 删除rskubectl delete rs --all// 获取jobkubectl get job// pod的配置字段说明kubectl explain podkubectl explain pod.apiVersion// 获取podkubectl get podkubectl get pod -o wide // 更详细信息kubectl get pod -w // 实时获取pod状态kubectl get pod --show-labels // 额外获取标签kubectl get pod -n kube-system -o wide // -n kube-system 名称空间,不加默认default,kubernetes的系统组件默认安装kube-system名称空间下// 查看pod创建时,运行时的具体信息,比如正在下载镜像kubectl describe pod myapp-pod// 查看pod里的容器日志(如果pod里只有一个容器,不需要-c指定)kubectl log myapp-pod -c test// 删除podkubectl delete pod myapp-pod // 删除单个podkubectl delete pod --all // 删除所有pod// 执行pod里的容器命令kubectl exec readiness-httpget-pod -it -- /bin/sh //如果pod里只有一个容器,也可以不指定容器kubectl exec readiness-httpget-pod -c readiness-httpgentainer -it -/sh- /bin/sh// 强制修改控制器中pod的标签名kubectl label pod frontend-c9blc tier=frontend1 --overwrite=True// 获取svckubectl get svc// 删除svckubectl delete svc nginx-deployment
-
配置常用字段
-
必须存在的属性
-
主要对象
-
额外的参数项
-
- pod生命周期
- 容器探针
- 因为initC检测服务是否可用并不代表主程序能连上服务,所以最好在主容器内进行探测
- 探测方式
- 因为initC检测服务是否可用并不代表主程序能连上服务,所以最好在主容器内进行探测
- 控制器
- ReplicationController & ReplicaSet & Deployment(应用程序)
- pod的分类
- Deployment(建议使用替代rc,功能更多)
- Deployment滚动升级和回滚应用
- Deployment控制创建Pod和ResplicaSet
- 当滚动升级时,Deployment控制创建新的ResplicaSet,并将旧的ResplicaSet的Pod按减一个加一个的方式移动到新的ResplicaSet下
- 当回滚应用时,将旧的ResplicaSet启动,Pod按减一个加一个的方式移动回ResplicaSet下
- Deployment控制创建Pod和ResplicaSet
- Deployment更新策略
- Rollover
- Deployment滚动升级和回滚应用
- Deployment(建议使用替代rc,功能更多)
- pod的分类
- DaemonSet(守护进程)
- Job & CronJob(批处理)
- Job
- 特殊说明
- 特殊说明
- CronJob
-
CronJob Spec
-
- Job
- StatefulSet
-
mysql在k8s支持的不太好,但mongodb却完美支持
-
-
Horizontal Pod Autoscaler(HPA,自动扩展)
- ReplicationController & ReplicaSet & Deployment(应用程序)