Stateful Set是Kubernetes 1.9版本新引入的一个概念,用于管理有状态的应用。

Kubernetes官方文档:

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

Manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods.

Like a Deployment, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.

StatefulSet由以下几个部分组成:

1. 用于定义网络标志(DNS domain)的Headless Service

2. 用于创建PersistentVolumes的volumeClaimTemplates

3. 定义具体应用的StatefulSet

下面我给出了一个实际应用中的StatefulSet的yaml文件:

---apiVersion: apps/v1kind: StatefulSetmetadata:name: ads-db-statefulsetlabels:component: adsmodule: dbspec:serviceName: ads-db-servicereplicas: 1selector:matchLabels:component: adsmodule: dbtemplate:metadata:labels:component: adsmodule: dbspec:volumes:- name: initsecret:secretName: ads-db-secretitems:- key: initdb.sqlpath: initdb.sqlcontainers:- name: ads-db-podimage: postgres:9.6ports:- containerPort: 5432name: ads-db-portvolumeMounts:- name: ads-db-volumemountPath: /var/lib/postgresql/data/- name: initmountPath: /docker-entrypoint-initdb.d/env:- name: PGDATAvalueFrom:configMapKeyRef:name: ads-db-configmapkey: pgdata_value- name: POSTGRES_PASSWORDvalueFrom:secretKeyRef:name: ads-db-secretkey: postgres_password_valuevolumeClaimTemplates:- metadata:name: ads-db-volumelabels:component: adsmodule: dbspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi

使用kubectl get statefulset查看生成的statefulset:

生成的headless service:

生成的pod:

当我把statefulset yaml文件里的replicas从1改成3之后,果然观察到有两个新的pod正在启动,并且名称满足命名规范-X。

使用kubectl describe查看创建的statefulset明细:

statefulSet自动创建的persistentVolumeClaim:

The files belonging to this database system will be owned by user “postgres”.

This user must also own the server process.

The database cluster will be initialized with locale “en_US.utf8”.

The default database encoding has accordingly been set to “UTF8”.

The default text search configuration will be set to “english”.

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data/pgdata … ok

creating subdirectories … ok

selecting default max_connections … 100

selecting default shared_buffers … 128MB

selecting dynamic shared memory implementation … posix

creating configuration files … ok

running bootstrap script … ok

performing post-bootstrap initialization … ok

syncing data to disk … ok

Success. You can now start the database server using:

pg_ctl -D /var/lib/postgresql/data/pgdata -l logfile start

使用下面的命令登录到statefulset提供的postgreSQL服务器上:

1. kubectl run tester -it --rm --image=postgres:9.6 --env=“PGCONNECT_TIMEOUT=5” --command – bash

看到root$之后,说明我们已经连接上pod了。

使用如下命令行连接postgreSQL服务器:

psql -h ads-db-statefulset-0.ads-db-service -p 5432 -U adsuser -W ads

当然如果不用命令行,也可以使用pgadmin,以图形化界面连接statefulSet里的postgreSQL服务器:

sudo apt install pgadmin3

进行端口转发,这样我们可以使用localhost:5432进行连接:

kubectl port-forward ads-db-statefulset-0 5432:5432

也能成功连接:

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Kubernetes stateful set讲解以及一个基于postgreSQL的具体例子相关推荐

  1. 一个基于ngrx的计数器例子

    (1) 定义action 从@ngrx/store导入Action,新建一个Action的子类: (2) 实现reducer,根据不同的action type,返回不同的store store要存储的 ...

  2. 一个基于ngrx的计数器例子 单步调试搞清楚原理

    这个计数器的例子参考我之前的文章. 计数器值的增加:通过store.dispatch: 进入ngrx的store.js: schedule message: delay = 0 -> 立即flu ...

  3. 一个基于ngrx的Angular图书搜索应用,带网络请求

    Jerry之前的文章一个基于ngrx的计数器例子介绍的是一个单机版的Angular应用,本文来看看一个加上了网络传输的例子. (1) 定义action: (2) reducer里,如果当前收到的act ...

  4. java执行查询postgresql得到中文乱码_Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(上篇)...

    关于作者 姚延栋,山东大学本科,中科院软件所研究生.PostgreSQL中文社区委员,致力于Greenplum/PostgreSQL开源数据库产品.社区和生态的发展. 一.数据库内核揭秘 Greenp ...

  5. 简单介绍基于PostgreSql 别名区分大小写的问题

    这篇文章主要介绍了基于PostgreSql 别名区分大小写的问题,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: ...

  6. Kimera:一个基于度量语义的SLAM开源库

    标题:Kimera:an Open-Source Library for Real-Time Metric-Semantic Localization and Mapping 作者:Antoni Ro ...

  7. WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例

    最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架 ...

  8. 发布一个基于 Reactor 模式的 C++ 网络库

    发布一个基于 Reactor 模式的 C++ 网络库 陈硕 (giantchen_AT_gmail) Blog.csdn.net/Solstice 2010 Aug 30 本文主要介绍 muduo 网 ...

  9. PostgreSQL 优势,MySQL 数据库自身的特性并不十分丰富,触发器和存储过程的支持较弱,Greenplum、AWS 的 Redshift 等都是基于 PostgreSQL 开发的...

    PostgreSQL 优势 2016-10-20 21:36 686人阅读 评论(0) 收藏 举报  分类: MYSQL数据库(5)  PostgreSQL 是一个自由的对象-关系数据库服务器(数据库 ...

最新文章

  1. rownum 的一点儿研究
  2. python include函数_python 库函数
  3. 查看ubuntu磁盘空间占用及占用空间大的文件
  4. (转载)计算机视觉、图像处理中常见的滤波操作
  5. forceinline关键字
  6. Android/Java中使用Protobuf的Any类型实现泛型解析
  7. 计算机英语笑话,关于计算机的幽默笑话
  8. 微抖动,繁忙的等待和绑定CPU
  9. 没有计算机的一天英语作文带翻译,初一英语作文我的一天带翻译
  10. BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】
  11. Js Vue 对象数组的创建方式
  12. 第二篇:呈现内容_第四节:个性化自定义控件
  13. android游戏开发框架libgdx的使用(四)--舞台和演员
  14. 微信公众平台消息接口开发(34)微信墙之表白墙/婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙...
  15. ELK Stack 日志平台性能优化实践
  16. 探究Windows内核你知多少
  17. virtualbox下宿主机与虚拟机互通
  18. 如何复现论文中的算法
  19. 支持移动触摸的jQuery图片Lightbox插件 1
  20. 2018美团实习生招聘——K的倍数

热门文章

  1. java AES 加密和linux解密
  2. 《HotSpot实战》读后感
  3. CSS基础(part20)--CSS3结构伪类选择器
  4. Django从理论到实战(part22)--include模板标签
  5. 利用python爬虫(案例2)--X凰的一天
  6. 给 SAP BTP 创建的 Java 应用添加 Custom Event Handler 支持创建功能
  7. 开源工具 @sap/ux-ui5-tooling 介绍
  8. Hybris Accelerator 搭建调试环境时遇到的错误消息
  9. SAP Spartacus UserService.get方法的调用时机
  10. 还在安装各种截图软件?Windows10自带的截图工具你会用吗?