摘要:是版本新引入的一个概念,用于管理有状态的应用。使用查看创建的明细自动创建的使用下面的命令登录到提供的服务器上看到之后,说明我们已经连接上了。
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/v1 kind: StatefulSet metadata: name: ads-db-statefulset labels: component: ads module: db spec: serviceName: ads-db-service replicas: 1 selector: matchLabels: component: ads module: db template: metadata: labels: component: ads module: db spec: volumes: - name: init secret: secretName: ads-db-secret items: - key: initdb.sql path: initdb.sql containers: - name: ads-db-pod image: postgres:9.6 ports: - containerPort: 5432 name: ads-db-port volumeMounts: - name: ads-db-volume mountPath: /var/lib/postgresql/data/ - name: init mountPath: /docker-entrypoint-initdb.d/ env: - name: PGDATA valueFrom: configMapKeyRef: name: ads-db-configmap key: pgdata_value - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: ads-db-secret key: postgres_password_value volumeClaimTemplates: - metadata: name: ads-db-volume labels: component: ads module: db spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi
使用kubectl get statefulset查看生成的statefulset:
生成的headless service:
生成的pod:
当我把statefulset yaml文件里的replicas从1改成3之后,果然观察到有两个新的pod正在启动,并且名称满足命名规范
使用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的原创文章,请关注公众号"汪子熙":
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/32780.html
摘要:是版本新引入的一个概念,用于管理有状态的应用。使用查看创建的明细自动创建的使用下面的命令登录到提供的服务器上看到之后,说明我们已经连接上了。 Stateful Set是Kubernetes 1.9版本新引入的一个概念,用于管理有状态的应用。 Kubernetes官方文档: https://kubernetes.io/docs/concepts/workloads/controllers...
摘要:是版本新引入的一个概念,用于管理有状态的应用。使用查看创建的明细自动创建的使用下面的命令登录到提供的服务器上看到之后,说明我们已经连接上了。 Stateful Set是Kubernetes 1.9版本新引入的一个概念,用于管理有状态的应用。 Kubernetes官方文档: https://kubernetes.io/docs/concepts/workloads/controllers...
摘要:集群外部的请求需要通过负载均衡转发到在上暴露的上,然后再由将其转发给相关的。作为里的标准对象之一,负责给提供集群外部访问的负载均衡终止路由等。进入对应的,可以查看到应用对应的文件和环境。 创建一个名为ads-app-service的服务: showImg(https://segmentfault.com/img/remote/1460000017117734); 上述Service的y...
摘要:集群外部的请求需要通过负载均衡转发到在上暴露的上,然后再由将其转发给相关的。作为里的标准对象之一,负责给提供集群外部访问的负载均衡终止路由等。进入对应的,可以查看到应用对应的文件和环境。 创建一个名为ads-app-service的服务: showImg(https://segmentfault.com/img/remote/1460000017117734); 上述Service的y...
阅读 3285·2021-11-23 09:51
阅读 2866·2021-10-28 09:33
阅读 846·2021-10-08 10:04
阅读 3637·2021-09-22 15:13
阅读 994·2019-08-30 15:55
阅读 2885·2019-08-30 15:44
阅读 539·2019-08-30 13:04
阅读 2922·2019-08-30 12:56