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 通过这个覆盖网络将数据包原封不断的传递到目标容器中

 

 

 

 

K8S-k8s 理念知识

上一篇:DNS域名解析服务(DNS正、反向解析;构建主从域名服务器)


下一篇:Egret UI Editor 中 Skin.exml文件不显示问题