一:pod核心原理

1:pod是什么

  • Pod 是一组容器和卷(目录和文件)的集合,同一个Pod里的容器共享同一个网络命名空间,可以使用 localhost 互相通信

  • pod是k8s管理的最小的单位

  • pod也是一个容器,这个容器装的是docker创建的容器

  • 容器本质是进程,K8S是操作系统,pod就是类似进程组

  • pod有自己的ip地址,主机名,pod相当于独立主机,可以封装一个容器或者多个容器

2:pod是用来干什么

  • 通常相关情况下,在服务部署得时候,使用pod来管理一组相关的服务(一个pod中要么部署一个服务,要么部署一组有关系的服务)

  • 一组相关的服务:在链式调用的调用链路上的服务,叫做一组相关的服务。

3:服务集群如何实现

  • 实现服务集群:只需要复制多个pod副本即可,这个是k8s的管理的先进之处,k8s如何继续扩容,只需要控制pod数量即可

4:pod底层网络,数据存储如何进行

  • 一个pod结构图如下:

  • pod结构图
  • 在单个pod中,可能有一组相关的服务,nginx,商品服务,商品数据库三个容器

  • 当一个微服务请求过来之后,会先经过nginx,再去访问服务,服务再去访问商品库,每个容器相当于单个沙箱环境,有单独的ip和port,这样的不同的容器之间的访问就相当于远程访问,这样的访问的效率就会降低。所以每个pod容器就有一个pause容器。

  • pause容器有两个作用:1:共享网络 2:共享存储。

  • pause容器相当于一个网卡,一个pod的不同容器之间的访问就相当于本地localhost访问。

  • 不同的容器也会将存储的东西都放到pause中,这样不同容器的访问存储就相当于访问本地文件,这样效率就会大幅提高

二:副本控制器-ReplicaSet

1:副本控制器的功能

  • 控制pod副本(服务集群)的数量,永远与预期设定的数量保持一致。

  • 例如 设置ReplicaSet = 3 ,就会创建三个pod,如果一个pod服务宕机,副本控制器会立马创建一个新的pod,永远保证副本数量为3,如下:

  • 副本控制器

2:ReplicaSet和ReplicationController区别

2.1:什么是ReplicationController
  • 在旧版本的K8S中,只有ReplicationController对象,主要确保pod按照指定的副本数量进行运行,如果有容器退出,就会自动创建新的pod来替代。异常多出来的容器也会自动回收,通过Replicationcontroller,K8S实现了集群的高可用性。

2.2:ReplicaSet和ReplicationController区别
  • ReplicaSet是k8s官网强烈建议推荐的。是ReplicationController的代替物,两者的用法基本相同,区别就是ReplicaSet支持复合式的标签选择器(Label-Selector)

2.3 Label-Selector(标签选择器)的作用
  • 上个图中我们看到一个副本控制器设置三个pod,如果前两个pod在一个机器中,另外一个pod在另一台机器中,ReplicaSet是如何通过标签选择器控制pod的数量,我们可以看下图

  • 标签选择器
  • 前两个pod属于server1,后一个pod属于server2,对于三个pod都打了同样的复合标签

selector:    app = webService    release = 1.0
  • 这样副本控制器ReplicaSet对于不同的服务器上的相同的pod我们都可以通过标签控制器进行控制

  • ReplicationController只能通过单标签对pod进行管理,所以尽量用ReplicaSet替代ReplicationSet来管理pod

三:资源部署对象-Deployment

1:什么是deployment

  • deployment是一个创建和更新副本应用(多个副本pod)的对象。

2:为何有deployment的存在

  • 1:在我们的集群服务中,如果一个pod挂掉,对应的服务也会挂掉,所以k8s提供了一个deployment对象用来监控这些实例,如果托管实例的节点关闭或被删除,则Deployment 控制器会将该实例替换为群集中另一个节点上的实例

  • 2:我们在平时业务开发中会经常有版本的迭代。如何保证我们一个创建一个新pod后而停用一个旧个pod,而我们的副本控制器ReplicaSet是不支持滚动更新,Deployment对象可以满足我们的的滚动更新操作

3:部署模型

  • 在我们整个的项目版本发布更新操作中,我们用到的一个K8S部署模型如下,Deploymet控制着ReplicaSet实现滚动更新,Replicaset控制着pod,如下图步骤

    部署模型
  • 当我们从V1版本要更新到V2版本,首先要生产一个新的RS对象,发布一个pod后,就会替代一个旧的pod,新的pod由新的RS对象控制。

4:deployment和replicaset的区别

  • ReplicaSet的主要用途是被Deployment对象用于pod的创建,更新,删除,RS是Deployment的一部分,Deployment控制的是RS对象

  • Deployment在实例运行后,会持续监控rs和pod的数量和状态的变化。

四:有状态服务部署组件-StatefulSet

1:什么是StatefulSet

  • StatefulSet是为了部署有状态服务而设计的组件。

2: 无状态服务 & 有状态服务

  • 无状态服务:没有实时数据要存储,各个请求对于服务器来说统一无差别处理。我们现在的微服务和一些中间件服务(mq)之类的就属于无状态服务。如果把一个服务抽离出去,一段时间再加入机器网络,集群网络可以继续使用

  • 有状态服务:有实时的数据进行存储,用于处理业务请求。比如我们的数据库mysql,redis,有状态服务集群中,如果把一个服务抽离出去,一段时间再加入机器网络,集群网络无法使用

3:为什么使用StatefulSet

  • 如果我们容器部署有状态服务mysql 我们就会发现问题:

  • 1:容器是有生命周期的,一旦宕机,数据就会丢失。

  • 2:如果pod部署,pod也是有生命周期,数据也会丢失。

  • 所以k8s不能使用deployment部署模型来部署有状态服务。通常情况下,deployment被用来部署无状态服务,那么对于有状态服务的部署,使用statefulSet有状态服务部署。

4:StatefulSet部署模型

StatefulSet部署模型
  • 通过模型,对于有数据存储的有状态的服务,我们会有个一个pvc文件系统来存储持久化的数据,如果pod重新建立,StatefulSet可以保证pod对应的持久化的数据的pvc文件系统的hostname不变,这样就可以保证有状态服务的部署。

k8s redis集群_容器:K8S核心组件介绍相关推荐

  1. k8s redis集群_基于K8S部署redis哨兵集群

    本 文 主 要 内 容 什么是Kubernetes分布式容器管理平台 PaaS平台redis-sentinel集群架构简介 PaaS平台部署redis哨兵集群 redis-sentinel容器测试及验 ...

  2. k8s 手动恢复redis 集群_高工面试之:redis的几种集群方式你都熟悉吗?

    Redis三种集群方式:主从复制.哨兵模式和Cluster模式 一.主从复制模式 Redis配置成主从模式,主库(Master)只负责客户端的写数据,从库(Slave)只负责客户端的读数据. 主从数据 ...

  3. k8s redis集群_K8S系列二:实战入门

    写在前面 本文是K8S系列第二篇,主要面向对K8S新手同学,阅读本文需要读者对K8S的基本概念,比如Pod.Deployment.Service.Namespace等基础概念有所了解.尚且不熟悉的同学 ...

  4. down redis集群_硬核干货!Redis 分布式集群部署实战

    原理: Redis集群采用一致性哈希槽的方式将集群中每个主节点都分配一定的哈希槽,对写入的数据进行哈希后分配到某个主节点进行存储. 集群使用公式(CRC16 key)& 16384计算键key ...

  5. Redis 集群_主从复制_哨兵模型

    1 redis集群简介 1.1 集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 1.1.1 使用redis集群的必要性 问题:我们已经部署好了 ...

  6. node redis集群_如何使用集群扩展Node.js服务器

    node redis集群 by Michele Riva 由Michele Riva 如何使用集群扩展Node.js服务器 (How to scale your Node.js server usin ...

  7. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)

    1. CA证书(任意节点) 1.1 安装cfssl cfssl是非常好用的CA工具,我们用它来生成证书和秘钥文件 安装过程比较简单,如下: # 下载 $ mkdir -p ~/bin $ wget h ...

  8. csrediscore访问redis集群_搭建文档 | centos7.6环境下redis5.0.8集群搭建

    " 本文作者:墨篱弦 " 一.做基础配置 a) 首先创建3个空文件 mkdir -p /server/redis_cluster/7001/datamkdir -p /server ...

  9. mac os 开启redis_高并发大流量,总会想到它!来一起通过docker搭建redis集群

    现在一般的项目都会用到redis做缓存,也不免有老铁没用过,我就一起说下吧. redis 官网 https://redis.io/ Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库.缓 ...

最新文章

  1. CICC科普栏目|神经网络浅讲:从神经元到深度学习
  2. 加州无人车报告出炉,苹果表现垫底,国产车进前五
  3. Codeforces Global Round 4 题解
  4. Android之PC浏览器上传表单格式大文件到手机客户端read函数阻塞问题
  5. 二叉排序树(搜索树BST)-详解结点的删除
  6. python counter模块_python collections模块 计数器(counter)
  7. Ionic JPush极光推送 插件实例
  8. spring boot http status 400_kubernetes configmap 热更新spring-boot应用
  9. 50 招教你防止黑客入侵,适用于入门小白到专业人员
  10. Spring中使用集成MongoDB Client启动时报错:rc: 48
  11. 计算机一寸照编辑教程,Photoshop教您快速的制作标准一寸证件照教程
  12. 早上不会起不来!五个窍门帮你摆脱起床困难症(ฅ◑ω◑ฅ)
  13. 智汇上海:微软在中国的AI人工智能布局
  14. 何为裂变?上百个裂变营销活动让我揭开了其神秘面目!
  15. linux新建用户和目录权限设置密码,用户创建及权限管理
  16. 计算机建立excel文件,我的电脑不能新建excel!电脑excle无法使用
  17. sql多表查询及多表连接查询
  18. 我的世界神奇宝贝服务器怎么修改6v,我的世界神奇宝贝改6v | 手游网游页游攻略大全...
  19. zinnia下user各自的category
  20. Layui 弹出层插件

热门文章

  1. 95-38-035-Buffer-AbstractByteBuf
  2. 【Elasticsearch】搜索基准测试:RediSearch 与 Elasticsearch
  3. 【Clickhouse】Clickhouse 集成kafka
  4. 【Kafka】Confluent Schema Registry
  5. 【正则表达式】sql语句去掉注释代码
  6. Spring Boot: SimpleCacheConfiguration
  7. spark学习-58-Spark的EventLoggingListener
  8. 【MySQL】MySQL EXPLAIN用法和结果
  9. 【Flink】flink报错:This type GenericType pojo cannot be used as key
  10. 【flume】flume读取web应用某个文件夹下日志到hdfs