zoukankan      html  css  js  c++  java
  • K8S-k8s 理念知识

    Kubenetes 的特点:

    1. 轻量级  消耗的资源比较小
    2. 开源 免费
    3. 弹性伸缩 可以动态的扩缩容
    4. 负载均衡 kubenetes 自己本身带有负载均衡 IPVS 

    K8S 的基础概念

     

    Pod 的概念:

     

     

    Pod 的分类;

    自主式pod: 一旦死亡,不会被自动拉起来,也不会有副本数。

     

    被控制器管理的pod: 可以被重启,生产pod 副本数

    在同一个pod 里,容器的端口不能重复

     

     

    控制器管理的pod

    RC :用来确保容器的副本数始终保持在用户定义的副本数,如果有容器异常退出会创建新的pod 的来代替,如果容器多余定义的副本数,多余的容器会被收回  

    RS : 与RC 没有本质上的却别,RS 支持集合式的selector

    Deployment : 可以用用deployment 在自动管理rs ,这样不用担心与其他机制不兼容的问题。Deployment 是支持滚动更新的  滚动更新的概念(deployment 下管理的rs pod 要升级,deployment 下会多有个rs 的集群,在新的rs 里新建升级版本的pod,另一个rs 会缩减一个pod, 这样依次知道新的rs pod 完全取缔了旧的rs 完成升级。  回滚的话相反。 )

    HPA ;  

    v1 的版本中支持根据cpu 进行扩容, 当hpa 检查到cpu 使用率到了80% 会自动扩建pod ,如果cpu 还是80% 会一直创建,知道cpu 使用率小于80% 才会停止扩建,最多扩10个,如果cpu 使用率降低了,pod 会被回收,最低回收到2

     

    Statefulset : 为解决有状态服务问题

     

    稳定的持久化存储

     

    稳定的网络标志

     

    有序部署有序扩展

     

    有序收缩有序删除

     

     

     

     

     

     

     

    Daemonset:  确保全部(或者一些)node 上运行一个pod 副本,当有node 加入集群的时候,也会为他新增一个pod ,当有node 从集群移除,这些pod 也会被回收,删除daemonset 将会删除它创建的所有的pod

     

    我们在管理node 可以打污点,打了污点的node 是可以不被管控的

     

    使用daemonset的一些典型用法:

     

    运行集群存储daemoneg 在每个node 节点上的运行glusterd ceph

     

    每个node 上运行日志收集的daemon eg: fluentd   logstash

     

    每个node 上运行监控daemon  egprometheus Node exporter

     

     

     

    Job:  负责批处理任务,即仅执行一次的任务,他保证批处理任务一个s或着多个pod 的成功结束 (job 如果判断执行是否成功,成功才会退出,也可以设置成功的次数,成功两次可以退出等)

     

     

    Cron job: 管理基于时间的job 即:

     

    在给定时间只执行一次

     

    周期性的在给定时间点运行。

     

     

     

    服务发现:

     

    客户端想访问一组pod ,如果pod 无相干是不可以被service代理的。这一组pod 必须是有同样的标签或者是通过一个rc 或者rs 创建的。Service 收集pod 是根据pod 的标签收集的。 客户端访问是service ip+端口 来访问pod 

     

     

     

    网络通讯的方式:

     

    K8S 的网络模型假定了所有的pod 都在一个可以直接连通的扁平的网络空间里。

     

    GCE:是现成的网络模型,K8S 假定这个网络已经存在了,而在私有云的搭建K8S ,这个就不能假定这个网络空间存在,需要我们自己实现这一假设,将不同节点的容器相互访问都打通了。才能运行K8S

     

     

     

     

     

     

     

    同一个pod内多个容器: 我们pod 创建出来后会有一个pause 容器的网络栈,pod 内容器的通讯是走的localhost 方式访问。

     

     

     

    各个pod 之间的通讯:overlay  network

     

    Overlay network 的实现:flannel 是针对K8S 设计的一个网络规划服务,它实现了集群中不同节点的主机创建的docker 容器都具有全集群唯一的虚拟ip 地址,他还能在这些ip 地址之间建立一个覆盖网络(overlay network 通过这个覆盖网络将数据包原封不断的传递到目标容器中

     

     

     

  • 相关阅读:
    @MapperScan 注解和 mybatis.mapper-locations 配置两者缺一不可
    com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别
    定时任务框架Quartz-(一)Quartz入门与Demo搭建
    js分页的实现代码
    圣杯布局中对left盒子设置负内边距-100%的一点解释
    前端小知识--为什么你写的height:100%不起作用?
    CSS:实现垂直居中的常用方法
    [jdk源码阅读系列]Java中System.arraycopy()的用法
    [jdk源码阅读系列]overflow-conscious code
    省选?
  • 原文地址:https://www.cnblogs.com/yk0625/p/14959866.html
Copyright © 2011-2022 走看看