• k8s 基础入门


    1.namespace

    k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离

    2.deployment

    kubectl create #新建

    kubectl aply #新建 更新

    升级:

    滚动升级,新版pod逐步替代老pod,用户无感知

    两种升级方式:

    kubectl aply

    kubectl set image

    #查看升级步骤

    kubectl describe deployment pod名字

    应用发布失败回滚

    kubectl rollout history deployment/web(资源名称) #查看历史版本

    kubectl rollout undo deployment/web(资源名称) #回滚上一个版本

    kubectl rollout undo deployment/web(资源名称) --to-revision=2 # 回滚指定版本

    扩缩容

    replicas参数控制pod副本数量

    1.修改yaml的replicas值,再apply

    2.kubectl scale deployment web --replicas=10

    应用下线

    kubctl delete deploy/web(资源名称)

    kubctl delete svc/wed

    应该项目部署最少需要:deployment和service两个资源

    deployment负责应用的部署、扩缩容、升级回滚

    service负责连接路由,端口映射

    3.pod

    pod是k8s创建和管理的最小单元

    一个pod由一个容器或者多个容器组成

    一个Pod可以理解为一个应用实例,提供服务

    Pod中容器始终部署在一个Node上

    Pod中容器共享网络、存储资源

    查看一个pod中有几个容器:

    kubectl get pods pod名 -o jsonpath={.spec.containers[*].name}

    kubectl get po -n tidb-cluster结果中,READY右侧是pod中容器数,左侧是启动的容器数

    多个容器时,主容器遵循一个容器一个应用程序规则

    pod.yaml方式创建pod,这种方式实际使用比较少,因为无法管理,无法扩缩容等等,通常通过deployment方式创建

    pod.yaml:和deployment中的容器配置字段相同

    4.service

    端口转发、负载均衡

    kubelet get ep

    #查看service

    kubelet get svc

    集群内部指的是集群里的所有node和pod可以访问ClusterIP,TCP/IP第四层的转发

    NodePort,可以集群外访问,端口默认生成,30000-32767

    ss -antp | grep port号

    k8s会请求底层云平台(阿里云,腾讯云、aws)上的负载均衡器(LB),将每个Node(IP+prot)作为后端添加进去,自建的云平台无法适配

    5.Ingress

    未弥补NodePort不足而生,实现基于域名的负载均衡转发

    NodePort存在不足:

    1.一个端口只能一个服务使用,端口需要提前规划

    2.只支持4层负载均衡

    用户访问的是ingress-controller

    ingress是基于service创建的一组规则

    kubectl get ingress 查看规则

  • 相关阅读:
    js面向对象(工厂模式、构造函数模式、原型模式、原型和原型链)
    Matlab:确定数值类
    骨传导耳机低频差理所当然?飞利浦A6606表示不服
    九、MySql表的内连和外连(重点)
    什么是面向切面编程(AOP)?
    Java培训:C++和Java有什么区别?
    运输层课后作业
    2022杭电多校第十场题解
    Elasticsearch 和 Arduino:一起变得更好!
    落地DataOps,必须克服的挑战有哪些?
  • 原文地址:https://blog.csdn.net/qq_37061368/article/details/137232981