- Hands-On Kubernetes on Windows
- Piotr Tylenda
- 228字
- 2021-06-24 16:54:10
StatefulSets
Deployments are usually used to deploy stateless components of your application. For stateful components, Kubernetes provides another API Object named StatefulSet. The principle of this operation is very similar to Deployment – it manages ReplicaSets and Pods in a declarative way and provides smooth rollouts and rollbacks. However, there are some key differences:
- StatefulSets ensure a deterministic (sticky) ID of Pods, which consists of <statefulSetName>-<ordinal>. For Deployments, you would have a random ID consisting of <deploymentName>-<randomHash>.
- For StatefulSets, the Pods are started and terminated in a specific, predictable order while scaling the ReplicaSet.
- In terms of storage, Kubernetes creates PersistentVolumeClaims based on volumeClaimTemplates of the StatefulSet Object for each Pod in the StatefulSet and always attaches this to the Pod with the same ID. For Deployments, if you choose to use volumeClaimTemplates, Kubernetes will create a single PersistentVolumeClaim and attach the same to all the Pods in the Deployment.
- You need to create a headless Service Object that is responsible for managing the deterministic network identity (DNS names) for Pods. The Headless Service allows us to return all Pod IPs behind the Service as DNS A records instead of a single DNS A record with a Service Cluster IP.
StatefulSets use a similar Spec to Deployments – you can find out more regarding StatefulSets by looking at the official documentation: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/.
推薦閱讀
- 流量的秘密:Google Analytics網站分析與優化技巧(第2版)
- LabVIEW2018中文版 虛擬儀器程序設計自學手冊
- ReSharper Essentials
- Twilio Best Practices
- 數據結構(Java語言描述)
- C程序設計實踐教程
- Learning Probabilistic Graphical Models in R
- Python大學實用教程
- Illustrator CC平面設計實戰從入門到精通(視頻自學全彩版)
- HTML5+CSS3+JavaScript 從入門到項目實踐(超值版)
- Python一行流:像專家一樣寫代碼
- Mastering Apache Camel
- 面向對象程序設計及C++(第3版)
- Python Social Media Analytics
- 基于MATLAB的控制系統仿真及應用