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

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

webp

webp

webp

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

webp

生成的headless service:

webp

生成的pod:

webp

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

webp

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

webp

webp

statefulSet自动创建的persistentVolumeClaim:

webp

webp

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

webp

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

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

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

webp

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

sudo apt install pgadmin3

webp

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

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

webp

webp

也能成功连接:

webp

webp

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24475491/viewspace-2220825/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24475491/viewspace-2220825/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Stateful Inspection是一种网络安全技术,可以检查网络数据包的内容和状态,判断其是否符合安全规则和策略,并防止恶意攻击和数据泄露等安全问题。Stateful Inspection是一种基于状态的网络安全检测方法,与传统的基于规则的网络安全检测方法相比,具有更高的准确性和灵活性。 Stateful Inspection通过检查网络数据包的内容和状态,判断其是否符合安全规则和策略。Stateful Inspection可以检测和防止各种网络攻击,如拒绝服务攻击、网络蠕虫、木马、病毒等。Stateful Inspection还可以检测和防止数据泄露,保护网络数据的机密性和隐私性。 Stateful Inspection的工作原理是通过建立一个状态表来记录网络连接的状态和信息,包括源IP地址、目的IP地址、源端口、目的端口、协议类型、连接状态等信息。当新的网络数据包到达时,Stateful Inspection会根据状态表中的信息,检查该数据包是否属于一个已有的网络连接,或者是否符合安全规则和策略。如果数据包符合安全规则和策略,则允许该数据包通过;否则,拒绝该数据包或者进行进一步的安全检查和处理。 Stateful Inspection是一种较为高级的网络安全技术,可以有效地保护网络数据的安全性和稳定性。在实际应用中,Stateful Inspection通常与其他网络安全技术一起使用,如防火墙、入侵检测系统、反病毒软件等,形成一个完整的网络安全防护体系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值