StatefulSet(有状态): StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署,拓展,删除和滚动更新. 在Kubernetes系统中,Pod的管理对象RC.Deployment.DaemonSet和Job都是面向无状态的服务.但现实中有很多服务是有状态的, 特别是一些复杂的中间件集群, 例如MySQL集群.MongoDB集群.Kafka集群.Zookeeper集群等,这些应用集群有以下一些共同点. 每个节点都有固定的身份ID,通过这个ID,集群中…
什么是 DaemonSet? DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本.当有节点加入集群时,也会为他们新增一个 Pod . 当有节点从集群移除时,这些 Pod 也会被回收.删除 DaemonSet 将会删除它创建的所有 Pod. 如何调度 Daemon Pod? 正常情况下,Pod 运行在哪个机器上是由 Kubernetes 调度器来选择的.然而,由 Daemon Controller 创建的 Pod 已经确定了在哪个机器上(Pod 创建时指定了 .spec.nod…
作者: LemonNan 原文地址: https://juejin.im/post/6870071267438329869 Kubernetes系列(四) StatefulSet Kubernetes系列(一) Pod Kubernetes系列(二) Service Kubernetes系列(三) Deployment StatefulSet 前言 前几篇讲解的都是关于无状态的应用, 今天这篇介绍 Kubernetes 中的另一种应用, 有状态应用, 而 有状态的应用是由 StatefulSet…
一:kubernetes是什么 Kubernetes一个用于容器集群的自动化部署.扩容以及运维的开源平台.通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用; 极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用.为容器编排管理提供了完整的开源方案. 官方网站:www.kubernetes.io 中文官方网站:https://kubernetes.io/zh/docs/ 二:kubernetes集群的架构 一个kubernetes集群都至少由一个M…
一:什么是Label Label是Kubernetes系列中另外一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种资源对象上,如Node,Pod,Service,RC等. 通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作. 示例如下: 版本标签:"release" : "stable" ,…
前面我写的一系列博客,如果你能够耐心看到这一篇,那你应该对一个概念就不是太陌生了:Deployment. 为什么提这个概念呢,这就要说到Deployment的一个不足了.Deployment不足以覆盖所有的应用编排问题,因为在它看来,一个应用的所有Pod,是完全一样的,所以它们之间就没有顺序,也无所谓运行在哪台宿主机上.需要时,Deployment就通过Pod模板创建新的Pod,不需要时,就"杀掉"任意一个Pod. 但是在实际场景中,并不是所有应用都满足这样的要求.比如:主从关系,主备…
一:Pod 是什么 Pod是Kubernetes的最重要最基本的概念.它是能够被创建,调度和管理的最小部署单元.一个Pod代表集群中一个运行的进程. 二:Pod的组成 一个Pod由一个特殊的根容器Pause容器和若干个紧密相关的用户业务容器组成. Pause容器作为Pod的根容器,它的状态代表整个容器组的状态. Pod里的多个容器共享Pause容器的IP,共享Pause容器挂载的Volume. Kubernetes为每个Pod都分配了唯一的IP地址,称之为Pod IP,一个Pod里的多个容器共享…
上一章我们测试了在集群内部解析service名称, 下面我们测试在集群外部解析: 根本解析不到,因为我们外部用的dns是10.4.7.11,也就是我们的自建bind dns,这个DNS服务器上也没有响应的搜索域. 如何能让集群外部访问nginx-dp? 这里有两种服务暴露方式:修改工作模式,在kube-proxy中修改,并重启 1.使用nodeport方式,但是这种方式不能使用ipvs,只能使用iptables,iptables只能使用rr调度方式.原理相当于端口映射,将容器内的端口映射到宿主机…
在Kubernetes中,Node.Pod.Replication Controller.Service等概念都可以看作一种资源对象,通过Kubernetes提供的Kubectl工具或者API调用进行操作,并保存在etcd中.…
一.service概念 Service是对一组提供相同功能的Pods的抽象,并为它们提供一个统一的入口.借助Service,应用可以方便的实现服务发现与负载均衡,并实现应用的零宕机升级.Service通过标签来选取服务后端,一般配合Replication Controller或者Deployment来保证后端容器的正常运行.这些匹配标签的Pod IP和端口列表组成endpoints,由kubeproxy负责将服务IP负载均衡到这些endpoints上. Service有四种类型: Cluster…
服务发现与负载均衡Kubernetes在设计之初就充分考虑了针对容器的服务发现与负载均衡机制,提供了Service资源,并通过kube-proxy配合cloud provider来适应不同的应用场景. 随着kubernetes用户的激增,用户场景的不断丰富,又产生了一些新的负载均衡机制. 目前,kubernetes中的负载均衡大致可以分为以下几种机制,每种机制都有其特定的应用场景: Service:直接用Service提供cluster内部的负载均衡,并借助cloud provider提供的LB…
一.Node概念 Node是Pod真正运行的主机,可以物理机,也可以是虚拟机. 为了管理Pod,每个Node节点上至少要运行container runtime(比如docker或者rkt). kubelet 和 kubeproxy服务. 二.Node管理 不像其他的资源(如Pod和Namespace),Node本质上不是Kubernetes来创建的,Kubernetes只是管理Node上的资源. 虽然可以通过Manifest创建一个Node对象(如下json所示),但Kubernetes也只是去…
一.Namespace概念 Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组. 常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default), 而node, persistentVolumes等则不属于任何namespace. Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在 kubesystem n…
1.概述 Service也是Kubernetes里的最核心的资源对象之一,Kubernetes里的每个Service其实就是我们经常提起的微服务架构中的一个“微服务”,之前我们所说的Pod.RC等资源对象其实都是为这节所说的“服务”------Kubernetes Service作“嫁衣”的.图1.12显示了Pod.RC与Service的逻辑关系. Pod.RC与Service的关系 从图中我们看到,Kubernetes的Service定义了一个服务的访问入口地址,前端的应用(Pod)通过这个入…
一:Replication Controller RC是kubernetes的核心概念之一.它定义了一个期望的场景即声明某种Pod的副本数量在任意时候都要符合某个预期值. 它由以下几个部分组成: 1.Pod期待的副本数(replicas) 2.用于筛选目标Pod的Label Selector 3.当Pod的副本数量小于预期数量的时候,用于创建新Pod的Pod模板. 当我们定义了一个RC并提及到kubernetes集群中以后,Master节点上的Controller Manager组件就会得到通知…
kubernetes 从一个简单例子开始 参考 <kubernetes 权威指南>一节的 从一个简单例子开始,操作实录. 一.Java Web 应用结构 二.启动MySql服务 1.首先为MySql服务创建一个RC定义文件:mysql-rc.yaml(这里要注意镜像版本最新的mysql需要认证,本例子采用mysql:5.7) apiVersion: v1kind: ReplicationControllermetadata:  name: mysqlspec:  replicas: 1  se…
当我们遇到K8S有漏洞的时候,或者为了满足需求,有时候可能会需要升级或者降级版本, 为了减少对业务的影响,尽量选择在业务低谷的时候来升级: 首先准备好文件:我这里选择的是内网文件服务器上下载的,请自行下载所需的k8s源文件:3 这里演示更换一个节点:7-21 查看版本:将7-21更换成1.15.2 # cd /opt/src # wget http://192.168.1.60:8080/day1/kubernetes-server-linux-amd64-v1.15.2.tar.gz# tar…
dashboard是k8s的可视化管理平台,是三种管理k8s集群方法之一 首先下载镜像上传到我们的私有仓库中:hdss7-200 # docker pull k8scn/kubernetes-dashboard-amd64:v1.8.3 # docker tag fcac9aa03fd6 harbor.od.com/public/dashboard:v1.8.3 # docker push harbor.od.com/public/dashboard:v1.8.3 编辑dashboard资源配置…
服务发现,说白了就是服务(应用)之间相互定位的过程. 服务发现需要解决的问题: 1.服务动态性强--容器在k8s中ip变化或迁移 2.更新发布频繁--版本迭代快 3.支持自动伸缩--大促或流量高峰 我们为了解决pod地址变化的问题,我们之前部署了service资源,将pod地址通过service资源暴露的固定地址,来解决以上问题, 那么,如何解决service资源名称和service资源暴露出来的集群网络IP做自动的对应呢,从而达到服务的自动发现呢? 在k8s中,coredns就是为了解决以上问…
网络插件Flannel介绍:https://www.kubernetes.org.cn/3682.html 首先,flannel利用Kubernetes API或者etcd用于存储整个集群的网络配置,其中最主要的内容为设置集群的网络地址空间.例如,设定整个集群内所有容器的IP都取自网段"10.1.0.0/16". 接着,flannel在每个主机中运行flanneld作为agent,它会为所在主机从集群的网络地址空间中,获取一个小的网段subnet,本主机内所有容器的IP地址都将从中分配…
一.默认网络 安装Docker时会自动创建三个网络:docker network ls 列出网络: # docker network ls NETWORK ID NAME DRIVER SCOPE 50919b7e3830 bridge bridge local bcd26c3f93df host host local b457df4969de none null local 使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网…
一.介绍 今天开始学习 JobStore,别的先不说,也不用翻译软件来翻译,直接从字面意思看来理解一下.我第一眼的感觉就是 job 是任务的意思,Store 是商店的意思,连起来就是可以存储 Job 的商店,或者说专门用来存储 Job 的容器.废话少说,开始我们今天的学习吧.  二.详述 JobStore JobStore 负责跟踪您为调度程序提供的所有“工作数据”:任务,触发器,日历等.为 Quartz 调度程序实例选择适当的IJobStore实现是一个重要的步骤. 幸运的是,一旦你理解了它们…
分享个网站,k8s技术圈阳明大佬的网站 现在基本都用有道云笔记了,比较方便,所以准备弃用博客园了...…
管理k8s核心资源的三种基本方法: 一.陈述式-主要依赖命令行工具  --可以满足90%以上的使用场景,但是缺点也很明显: 命令冗长,复杂,难以记忆 特定场景下,无法实现管理需求 对资源的增.删.查操作比较容易,改比较麻烦,需要patch来使用json串来更改. 1.1 查看名称空间  查询时,为了避免重名,需要指定名称空间. # kubectl get namespace简写:# kubectl get ns 1.2 查询命名空间中的资源,使用-n 指定命名空间 # kubectl get a…
DaemonSet 的使用 通过该控制器的名称我们可以看出它的用法:Daemon,就是用来部署守护进程的,DaemonSet用于在每个Kubernetes节点中将守护进程的副本作为后台进程运行,说白了就是在每个节点部署一个Pod副本,当节点加入到Kubernetes集群中,Pod会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的这个Pod也会被移除,当然,如果我们删除DaemonSet,所有和这个对象相关的Pods都会被删除. 在哪种情况下我们会需要用到这种业务场景呢?其实这种场景还…
Kubernetes的资源控制器Daemonset详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110 k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111 k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112 什么是控制器 ku…
一.什么是DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本.当有 Node 加入集群时,也会为他们新增一个 Pod .当有 Node 从集群移除时,这些 Pod 也会被回收.删除 DaemonSet 将会删除它创建的所有 Pod. 使用 DaemonSet 的一些典型用法: 运行集群存储 daemon,例如在每个 Node 上运行 glusterd.ceph. 在每个 Node 上运行日志收集 daemon,例如fluentd.logstash.…
一开始Kubernetes只是被设计用来运行无状态应用,直到在1.5版本中才添加了StatefulSet控制器用于支持有状态应用,但它直到1.9版本才正式可用.本文将介绍有状态和无状态应用,一个通过K8S StatefulSet来编排有状态应用的示例,以及当前有状态应用容器化现状及将来的发展趋势. 1. 有状态应用和无状态应用 无状态应用(Stateless Application)是指应用不会在会话中保存下次会话所需要的客户端数据.每一个会话都像首次执行一样,不会依赖之前的数据进行响应.有状态…
前言 最近在极客时间订阅了kubernetes的专栏,这篇文章是想记录一下自己学习 CSI 插件机制 (container-storage-interface) 的过程,加深一下记忆. 准备工作 老师用的是 csi-digitalocean,还会用到 CSI 的 proto 文件,这是 git 地址container-storage-interface/spec, 在开始本文之前可以先把这两个 repo 下载下来. csi-digitalocean,这个是主要分析的代码,需要放到 GOPATH…
This page provides an overview of Pod, the smallest deployable object in the Kubernetes object model. Understanding Pods How Pods manage multiple Containers Networking Storage Working with Pods Pods and Controllers Pod Templates Understanding Pods Th…