-
redis cluster三主三从
一、Redis 介绍Redis 代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序集合。由于Redis接受多种格式的密钥,因此可以在服务器上执行操作,从而减少了客户端的工作量。它仅将磁盘用于持久性,而将数据库完全保存在内存中。Redis是一种流行的数据存储解决方案,并被GitHub,Pinterest,Snapchat,Twitter,StackOverflow,Flick...…
-
mysql主从同步读写分离
一、简介一般情况下Kubernetes可以通过ReplicaSet以一个Pod模板创建多个Pod副本,但是它们都是无状态的,任何时候它们都可以被一个全新的Pod替换。然而有状态的Pod需要另外的方案确保当一个有状态的Pod挂掉后,这个Pod实例需要在别的节点上重建,但是新的实例必须与被替换的实例拥有相同的名称、网络标识和状态。这就是StatefulSet管理Pod的手段。对于容器集群,有状态服务的挑战在于,通常集群中的任何节点都并非100%可靠的,服务所需的资源也会动态地更新改变。当节点由...…
-
Docker
一、Docker 简介1、Docker 诞生 Docker 是 dotcloud 公司开源的一款产品 dotcloud 是 2010 年新成立的一家公司,主要基于 PAAS ( Platfrom as a Service ) 平台为开发者提供服务。2013 年 10 月 dotcloud 公司改名为 Docker 股份有限公司2、Docker 相关解释 Linux Container 是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源 Docker 是 PAAS 提供商...…
-
Zabbix监控k8s集群
一、监控策略其实在容器云环境中,zabbix并不是最有效的监控方案,prometheus+Grafana监控比zabbix更加精细化。此处zabbix只是充当一个监控k8s集群健康状态及异常声音告警的一个工具。生产环境中,Prometheus+grafana和zabbix同时使用效果更佳。因k8s是 Restful APi 风格的接口设置,此处原理也较简单,如下图所示,可直接通过接口管理、查看数据。后面的python脚本将通过此原理来实现监控。Centos7系统自带的python v2版本...…
-
helm 构建 EFK
一、EFKEFK是ELK的另一种形式。E:elasticsearch,他是一个标准搜索引擎L:logstash:主要是用于帮助我们生成日志的节点负责收集节点上的日志并转换格式后注入到elasticsearch中去,注入进去的格式应该是json格式的。他能扮演两重功用,在收集日志的节点上能扮演成agent收集日志的代理程序,所以在k8s上如果每一个节点都要部署一个并且部署一个就够了我们可以使用控制器daemonset,生成日志以后应该发送给logstash server,统一整理之后再发送给...…
-
helm
1、Helm的概念和架构每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。思考??Helm 到底解决了什么问题?为什么 Kubernetes 需要 Helm?Kubernetes 能够很好地组织和编排容器,但它缺少一个更高层次的应用打包工具,而 Helm 就是来干这件事的。举个例子,我们需要部署一个MySQL服务,Kubernetes则需要部署以下对象: ...…
-
核心指标与监控指标
一、核心指标监控之metrics-server 在最初的系统资源监控,是通过cAdvisor去收集单个节点以及相关Pod资源的指标数据,但是这一功能仅能够满足单个节点,在集群日益庞大的过程中,该功能就显得low爆了。于是将各个节点的指标数据进行汇聚并通过一个借口进行向外暴露传送是必要的。 Heapster就是这样的一种方式,通过为集群提供指标API和实现并进行监控,它是集群级别的监控和事件数据的聚合工具,但是一个完备的Heapster监控体系是需要进行数据存储的,为此其解决方案就是引入...…
-
Apache 配置与应用
一、Apache 连接保持 HTTP 协议是基于 TCP 协议之上的,在进行 HTTP 连接之前,要先进行 TCP 连接,在连接 结束后要对 TCP 连接进行终止。建立与关闭连接对于 HTTP 而言会消耗更多的内存与 CPU资源。 – 解决办法是连接保持。对于 HTTP/1.1,就是尽量地保持客户端的连接,通过一个连接传 送多个 HTTP 请求响应,对于客户端可以提高 50%以上的响应时间,对于服务器可以降低资 源开销。Apache 有相关的连接保持参数,可通过设置响应参数开启与控制...…
-
资源指标与集群监控
1、资源指标和资源监控一个集群系统管理离不开监控,同样的Kubernetes也需要根据数据指标来采集相关数据,从而完成对集群系统的监控状况进行监测。这些指标总体上分为两个组成:监控集群本身和监控Pod对象,通常一个集群的衡量性指标包括以下几个部分: 节点资源状态:主要包括网络带宽、磁盘空间、CPU和内存使用率 节点的数量:即时性了解集群的可用节点数量可以为用户计算服务器使用的费用支出提供参考。 运行的Pod对象:正在运行的Pod对象数量可以评估可用节点数量是否足够,以及节点故障时是否...…
-
Pod高级资源调度
Pod资源调度API Server在接受客户端提交Pod对象创建请求后,然后是通过调度器(kube-schedule)从集群中选择一个可用的最佳节点来创建并运行Pod。而这一个创建Pod对象,在调度的过程当中有3个阶段:节点预选、节点优选、节点选定,从而筛选出最佳的节点。如图: 节点预选:基于一系列的预选规则对每个节点进行检查,将那些不符合条件的节点过滤,从而完成节点的预选 节点优选:对预选出的节点进行优先级排序,以便选出最合适运行Pod对象的节点 节点选定:从优先级排序结果中挑选出...…
-
kubernetes的网络模型和网络策略
1、Kubernetes网络模型和CNI插件在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点,所有容器都能通过一个扁平的网络平面进行通信,即在同一IP网络中。需要注意的是:在K8S集群中,IP地址分配是以Pod对象为单位,而非容器,同一Pod内的所有容器共享同一网络名称空间。1.1、Docker网络模型了解Docker的友友们都应该清楚,Docker容器的原生网络模型主要有3种:Bridge(桥接)、Host(主机)、none。 Bridge:借助虚拟网桥设...…
-
dashboard认证及分级授权
Dashboard: https://github.com/kubernetes/dashboard一、Dashboard部署由于需要用到k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0,这里有2种方式进行pull 镜像。docker search该镜像名称,直接pull,再重新进行tag;另外一种方式是通过谷歌容器镜像拉取。[root@k8s-node01 ~]# docker pull huyouba1/kubernetes-dashboard...…
-
认证、授权和准入控制
API Server作为Kubernetes网关,是访问和管理资源对象的唯一入口,其各种集群组件访问资源都需要经过网关才能进行正常访问和管理。每一次的访问请求都需要进行合法性的检验,其中包括身份验证、操作权限验证以及操作规范验证等,需要通过一系列验证通过之后才能访问或者存储数据到etcd当中。如下图:一、ServiceAccountService account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。它与User account不同 User a...…
-
StatefulSet
一、statefulset简介 从前面的学习我们知道使用Deployment创建的pod是无状态的,当挂载了Volume之后,如果该pod挂了,Replication Controller会再启动一个pod来保证可用性,但是由于pod是无状态的,pod挂了就会和之前的Volume的关系断开,新创建的Pod无法找到之前的Pod。但是对于用户而言,他们对底层的Pod挂了是没有感知的,但是当Pod挂了之后就无法再使用之前挂载的存储卷。 为了解决这一问题,就引入了StatefulSet用于保留...…
-
Volume
一、存储卷的概念和类型 为了保证数据的持久性,必须保证数据在外部存储在docker容器中,为了实现数据的持久性存储,在宿主机和容器内做映射,可以保证在容器的生命周期结束,数据依旧可以实现持久性存储。但是在k8s中,由于pod分布在各个不同的节点之上,并不能实现不同节点之间持久性数据的共享,并且,在节点故障时,可能会导致数据的永久性丢失。为此,k8s就引入了外部存储卷的功能。k8s的存储卷类型:[root@k8s-master ~]# kubectl explain pod.spec.vo...…
-
ingress及ingress Controller
一、什么是Ingress?从前面的学习,我们可以了解到Kubernetes暴露服务的方式目前只有三种:LoadBlancer Service、ExternalName、NodePort Service、Ingress;而我们需要将集群内服务提供外界访问就会产生以下几个问题:1、Pod 漂移问题Kubernetes 具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等,通俗地说,这个 Pod 可能在任何时刻出现在任何节点上,也可能在任何时刻死在...…
-
Service资源
一、Service的概念 运行在Pod中的应用是向客户端提供服务的守护进程,比如,nginx、tomcat、etcd等等,它们都是受控于控制器的资源对象,存在生命周期,我们知道Pod资源对象在自愿或非自愿终端后,只能被重构的Pod对象所替代,属于不可再生类组件。而在动态和弹性的管理模式下,Service为该类Pod对象提供了一个固定、统一的访问接口和负载均衡能力。是不是觉得一堆话都没听明白呢???? 其实,就是说Pod存在生命周期,有销毁,有重建,无法提供一个固定的访问接口给客户端。并...…
-
DaemonSet
一、什么是DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。使用 DaemonSet 的一些典型用法: 运行集群存储 daemon,例如在每个 Node 上运行 glusterd、ceph。 在每个 Node 上运行日志收集 daemon,例如fluentd、logs...…
-
ReplicaSet、Deployment
一、Pod控制器及其功用 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。pod控制器有多种类型:` ReplicaSet: `代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能。ReplicaSet主要三个组件组成: (1)用户期望的pod副本数量 (2)标签选择器,判断哪个pod归自己管理 (3)当现存的pod数量不足...…
-
kubernetes Pod控制器应用
一、什么是Pod? Pod是kubernetes中你可以创建和部署的最小也是最简的单位。一个Pod代表着集群中运行的一个进程。 Pod中封装着应用的容器(有的情况下是好几个容器),存储、独立的网络IP,管理容器如何运行的策略选项。Pod代表着部署的一个单位:kubernetes中应用的一个实例,可能由一个或者多个容器组合在一起共享资源。在Kubrenetes集群中Pod有如下两种使用方式: 一个Pod中运行一个容器。“每个Pod中一个容器”的模式是最常见的用法;在这种使用方式中,你可...…