> 文档中心 > kubernetes笔记

kubernetes笔记

  1. Kubernetes学习笔记_尚硅谷 - 一代肝帝 - 博客园
  2. k8s的作用
    1. 充分利用集群服务器资源,节省成本
    2. 便于管理大规模的容器,方便部署,方便伸缩,集群服务高可用,无感知部署更新
  3. 架构图
  4. Pod控制器类型
    1. ReplicationController & ReplicaSet & Deployment 新版本的kubernetes用ReplicaSet取代 ReplicationController,用来确保容器应用的副本数,当容器异常退出会新建Pod来替代,如果异常新增的也会自动回收,虽然ReplicaSet可独立使用,但一般建议用Deployment来自动管理,Deployment可以支持回滚更新)
      1.  HPA(Horizontal Pod Autoscaler)
    2. StatefulSet (解决有状态服务的问题,如mysql,mongodb)
    3. DaemonSet
    4. Job CronJob ​
  5. 服务发现
  6. 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// 获取pod​kubectl 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
  7. 配置常用字段

    1.  必须存在的属性

    2. 主要对象

    3. 额外的参数项

  8. pod生命周期
  9. 容器探针
    1. 因为initC检测服务是否可用并不代表主程序能连上服务,所以最好在主容器内进行探测 
    2. 探测方式
  10. 控制器

    1. ReplicationController & ReplicaSet & Deployment(应用程序)
      1. pod的分类
        1. Deployment(建议使用替代rc,功能更多)

          1.  Deployment滚动升级和回滚应用

            1. Deployment控制创建Pod和ResplicaSet                                      
            2. 当滚动升级时,Deployment控制创建新的ResplicaSet,并将旧的ResplicaSet的Pod按减一个加一个的方式移动到新的ResplicaSet下                                                                            
            3. 当回滚应用时,将旧的ResplicaSet启动,Pod按减一个加一个的方式移动回ResplicaSet下
          2.  Deployment更新策略
          3. Rollover
    2.  DaemonSet(守护进程)
    3. Job & CronJob(批处理)

      1. Job
        1. 特殊说明
      2. CronJob                               
        1. CronJob Spec

           

    4. StatefulSet
      1. mysql在k8s支持的不太好,但mongodb却完美支持

    5. Horizontal Pod Autoscaler(HPA,自动扩展)