{"id":19344,"date":"2025-12-31T10:34:30","date_gmt":"2025-12-31T02:34:30","guid":{"rendered":"https:\/\/blog.ywdevops.cn\/?p=19344"},"modified":"2026-01-05T18:21:11","modified_gmt":"2026-01-05T10:21:11","slug":"statefulset","status":"publish","type":"post","link":"https:\/\/blog.ywdevops.cn\/index.php\/2025\/12\/31\/statefulset\/","title":{"rendered":"StatefulSet-\u6709\u72b6\u6001pod\u526f\u672c\u96c6\u7ba1\u7406"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">StatefulSet\u7528\u4e8e\u7ba1\u7406\u6709\u72b6\u6001\u7684Pod\u526f\u672c\u96c6\uff0c\u4e0edeployment\u7ba1\u7406\u7684\u65e0\u72b6\u6001pod\u533a\u522b\u5728\u4e8e\uff1a \u6709\u72b6\u6001\u610f\u5473\u7740\u6bcf\u4e2apod\u526f\u672c\u90fd\u5177\u6709\u552f\u4e00\u4e0d\u53d8\u7684\u8eab\u4efd\u6807\u8bc6\uff0c\u4f8b\u5982\uff1aid\u6216\u8005\u670d\u52a1\u540d\u79f0\uff0c\u591a\u4e2aPod\u526f\u672c\u4e0d\u662f\u5bf9\u7b49\u65e0\u5dee\u522b\u7684\uff0c\u800c\u662f\u76f8\u4e92\u4e4b\u95f4\u53ef\u80fd\u9700\u8981\u901a\u4fe1\u6765\u5b9e\u73b0\u67d0\u79cd\u529f\u80fd\uff0c\u6bcf\u4e2aPod\u9700\u8981\u72ec\u7acb\u7684\u6301\u4e45\u5316\u5b58\u50a8(\u4fdd\u5b58\u65e5\u5fd7\u6216\u8005\u6570\u636e\u7b49)\uff0c\u4ee5\u53ca\u591a\u4e2apod\u53ef\u80fd\u9700\u8981\u6309\u7167\u56fa\u5b9a\u7684\u987a\u5e8f\u9010\u4e2a\u542f\u52a8\u7b49\u4e1a\u52a1\u9700\u6c42<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">StatefulSet\u4f1a\u4e3a\u6709\u72b6\u6001pod\u526f\u672c\u96c6\u63d0\u4f9b\u4e00\u4e0b\u529f\u80fd\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6bcf\u4e2apod\u5177\u6709\u552f\u4e00\u4e14\u4e0d\u53d8\u7684\u8eab\u4efd\u6807\u8bc6\uff0c\u5305\u62ecID\u548c\u7f51\u7edc\u8bbf\u95ee\u5730\u5740<\/li>\n\n\n\n<li>\u6bcf\u4e2apod\u90fd\u914d\u7f6e\u7a33\u5b9a\u7684\u6301\u4e45\u5316\u5b58\u50a8<\/li>\n\n\n\n<li>\u5bf9\u591a\u4e2aPod\u63d0\u4f9b\u6709\u5e8f\u7684\uff0c\u4f18\u96c5\u7684\u90e8\u7f72\u548c\u6269\u7f29\u5bb9\u7b49\u7ba1\u7406\u529f\u80fd<\/li>\n\n\n\n<li>\u5bf9\u591a\u4e2aPod\u63d0\u4f9b\u6709\u5e8f\u7684\uff0c\u4f18\u96c5\u7684\u6eda\u52a8\u66f4\u65b0\u7b49\u7ba1\u7406\u529f\u80fd<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528StatefulSet\u4e5f\u5b58\u5728\u4ee5\u4e0b\u4e00\u4e9b\u9650\u5236<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4e3a\u6bcf\u4e2aPod\u914d\u7f6e\u7684\u6301\u4e45\u5316\u5b58\u50a8\u5fc5\u987b\u662fPVC\u7c7b\u578b\u7684\u5171\u4eab\u5b58\u50a8<\/li>\n\n\n\n<li>\u5220\u9664pod\u4e0d\u4f1a\u5220\u9664\u540e\u7aef\u5173\u8054\u7684\u5b58\u50a8\uff0c\u9700\u8981\u624b\u52a8\u5220\u9664\u5b58\u50a8\u6570\u636e<\/li>\n\n\n\n<li>\u5fc5\u987b\u521b\u5efa\u4e00\u4e2aHeadless Service\uff08\u65e0\u5934\u670d\u52a1\uff09\uff0c\u7528\u4e8e\u521b\u5efa\u6bcf\u4e2aPod\u7684\u7f51\u7edc\u8bbf\u95ee\u5730\u5740<\/li>\n\n\n\n<li>\u5220\u9664StatefulSet\u8d44\u6e90\u65f6\uff0c\u4e0d\u4fdd\u8bc1pod\u4f1a\u7ec8\u6b62\uff0c\u5982\u8981\u4f18\u96c5\u5220\u9664\uff0c\u53ef\u5c06Pod\u526f\u672c\u7f29\u5bb9\u4e3a0\u7136\u540e\u5220\u9664<\/li>\n\n\n\n<li>\u4f7f\u7528OrderedReady\u7b56\u7565\u6267\u884c\u6eda\u52a8\u66f4\u65b0\u65f6\uff0c\u53ef\u80fd\u5b58\u5728\u67d0\u4e2apod\u635f\u574f\uff0c\u4e0d\u80fdReady\u72b6\u6001\uff0c\u9700\u8981\u624b\u52a8\u4fee\u590d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u4e0b\u9762\u4f8b\u5b50\u4e3a\u4e00\u4e2a\u5b8c\u6574\u7684\u6709\u72b6\u6001pod\u526f\u672c\u96c6\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apps\/v1\nkind: StatefulSet \nmetadata:\n  name: busybox-stateful\nspec:\n  selector:\n    matchLabels:\n      app: busybox\n  replicas: 2\n  serviceName: \"busybox-service\"\n  minReadySeconds: 10\n  template:\n    metadata:\n      labels:\n        app: busybox\n    spec:\n      terminationGracePeriodSeconds: 10\n      containers:\n      - name: busybox\n        image: busybox:latest\n        imagePullPolicy: IfNotPresent\n        command: &#91; \"sh\",\"-c\",\"sleep 3600\" ]\n        ports:\n        - containerPort: 80\n        volumeMounts:\n        - name: busybox-volume\n          mountPath: \/usr\/share\/busybox\n          subPath: busybox\n  volumeClaimTemplates:\n  - metadata:\n      name: busybox-volume\n    spec:\n      storageClassName: \"nfs-storage\"\n      accessModes: &#91; \"ReadWriteOnce\" ]\n      resources:\n         requests:\n           storage: 2Gi\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: busybox-service\n  labels:\n    app: busybox\nspec:\n  selector:\n    app: busybox\n  clusterIP: None\n  ports:\n  - port: 80<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>serviceName\uff1a\u6307\u5411\u4e00\u4e2a\u65e0\u5934\u670d\u52a1\uff0c\u5c31\u662f\u6700\u4e0b\u9762\u521b\u5efa\u7684Service<\/li>\n\n\n\n<li>minReadySeconds\uff1apod\u6700\u77ed\u5c31\u7eea\u65f6\u95f4\uff0c\u8fbe\u5230\u8fd9\u4e2a\u65f6\u95f4\u540e\u624d\u4f1a\u8bbe\u7f6epod\u4e3aReady\u72b6\u6001\uff0c\u9ed8\u8ba4\u4e3a0<\/li>\n\n\n\n<li><strong>terminationGracePeriodSeconds \u662f\u5bb9\u5668\u4f18\u96c5\u7ec8\u6b62\u7684\u5bbd\u9650\u671f<\/strong>\uff0c\u5b9a\u4e49 Pod \u88ab\u5220\u9664\u65f6 Kubernetes \u7b49\u5f85\u5bb9\u5668\u6b63\u5e38\u9000\u51fa\u7684\u6700\u957f\u65f6\u95f4\uff0c\u9ed8\u8ba4\u503c\u4e3a30s\uff0c\u65f6\u95f4\u5230\u4e86\u540e\u5bb9\u5668\u4f1a\u88ab\u5f3a\u5236\u5220\u9664<\/li>\n\n\n\n<li>volumeClaimTemplates\uff1a\u540e\u7aef\u5b58\u50a8\u7684PVC\u6a21\u677f<\/li>\n\n\n\n<li>clusterIP: None \u5b9a\u4e49\u4e3a\u4e00\u4e2a\u65e0\u5934\u670d\u52a1<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\u5b8c\u6210\u540e\u53ef\u4ee5\u770b\u5230pod\u7684\u547d\u540d\u89c4\u5219\u4e3a\uff1a\u7531statefulset\u540d\u79f0\u548c\u5e8f\u53f7\u7ec4\u6210\uff0c\u4e2d\u95f4\u7528&#8221;-&#8220;\u8fde\u63a5\uff0c\u9ed8\u8ba4\u5e8f\u53f7\u4ece0\u5f00\u59cb\uff0c\u8fd9\u4e2a\u5b8c\u6574\u7684pod\u540d\u5b57\u4e5f\u5c06\u4f5c\u4e3apod\u5185\u5bb9\u5668\u7684\u4e3b\u673a\u540d\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"97\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/4.png\" alt=\"\" class=\"wp-image-19415\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/4.png 653w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/4-300x45.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/4-600x89.png 600w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"680\" height=\"150\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/5.png\" alt=\"\" class=\"wp-image-19413\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/5.png 680w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/5-300x66.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/5-600x132.png 600w\" sizes=\"auto, (max-width: 680px) 100vw, 680px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ece1.26\u7248\u672c\u5f00\u59cb\uff0c\u5f15\u5165\u4e86\u65b0\u5b57\u6bb5spec.ordinals.start\uff0c\u53ef\u7528\u4e8e\u81ea\u5b9a\u4e49pod\u7684\u8d77\u59cb\u8d77\u59cb\u5e8f\u53f7\uff0c\u6bd4\u5982\u8bbe\u7f6e\u4e3a5\uff0c\u90a3\u4e48\u521b\u5efapod\u540e\u5c06\u4f1a\u53d8\u6210busybox-stateful-5\u5f00\u59cb\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"649\" height=\"231\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/6.png\" alt=\"\" class=\"wp-image-19417\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/6.png 649w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/6-300x107.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/6-600x214.png 600w\" sizes=\"auto, (max-width: 649px) 100vw, 649px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001StatefulSet\u4f1a\u5c06Headless Service\u540d\u79f0\u548cPod\u540d\u79f0\u7ec4\u5408\u4e3apod\u7684\u8bbf\u95ee\u5730\u5740\uff0c\u4ee5DNS\u57df\u540d\u683c\u5f0f\u8868\u793a\uff0c\u5b8c\u6574\u7684\u57df\u540d\u683c\u5f0f\u4e3a\uff1a&lt;pod-name>.&lt;service-name>.&lt;namespace.svc>.&lt;clusterDomain>,\u53ef\u901a\u8fc7nslookup\u5de5\u5177\u9a8c\u8bc1\uff0c\u5982\u56fe\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"746\" height=\"244\" src=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/8.png\" alt=\"\" class=\"wp-image-19425\" srcset=\"https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/8.png 746w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/8-300x98.png 300w, https:\/\/blog.ywdevops.cn\/wp-content\/uploads\/2026\/01\/8-600x196.png 600w\" sizes=\"auto, (max-width: 746px) 100vw, 746px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u540c\u4e2aK8s\u96c6\u7fa4\u4e2d\uff0c\u5176\u4ed6\u7684Pod\u90fd\u53ef\u4ee5\u901a\u8fc7\u6b64\u57df\u540d\u6765\u8bbf\u95eeStatefulSet\u4e2d\u7684pod\uff0c\u5e76\u4e14\u7cfb\u7edf\u4f1a\u4fdd\u8bc1\u6b64\u57df\u540d\u662f\u4e00\u76f4\u4e0d\u53d8\uff0c\u5373\u4f7fpod\u88ab\u91cd\u5efa\uff0cpod\u540d\u79f0\uff0c\u670d\u52a1\u57df\u540d\u90fd\u4e0d\u4f1a\u53d8\uff0c\u53ea\u6709Pod\u7684IP\u5730\u5740\u4f1a\u53d8<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001StatefulSet\u5220\u9664\u673a\u5236<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">StatefulSet\u652f\u6301\u7ea7\u8054\u65b9\u5f0f\u5220\u9664\u5168\u90e8Pod\u548c\u975e\u7ea7\u8054\u65b9\u5f0f\u4fdd\u7559Pod\uff0c\u9ed8\u8ba4\u662f\u7ea7\u8054\u6a21\u5f0f\uff0c\u901a\u8fc7kubectl delete\u547d\u4ee4\u7684\u65f6\u5019\uff0c\u6307\u5b9a\u53c2\u6570&#8211;cascade=orphan=true \u6765\u7981\u6b62\u4f7f\u7528\u7ea7\u8054\u6a21\u5f0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001StatefulSet\u6269\u7f29\u5bb9<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl scale statefulset statefulset-name --replicas=5 #\u53ef\u6267\u884c\u6b64\u547d\u4ee4\u5b9e\u73b0\u526f\u672c\u589e\u52a0\u51cf\u5c11<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u66f4\u65b0\u7b56\u7565<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RollingUpdate\uff1a\u6eda\u52a8\u66f4\u65b0\uff0c\u9ed8\u8ba4<\/li>\n\n\n\n<li>OnDelete\uff1a\u9700\u8981\u624b\u52a8\u5220\u9664\u5168\u90e8pod\uff0c\u89e6\u53d1statefulset controller\u6765\u91cd\u65b0\u521b\u5efapod<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>StatefulSet\u7528\u4e8e\u7ba1\u7406\u6709\u72b6\u6001\u7684Pod\u526f\u672c\u96c6\uff0c\u4e0edeployment\u7ba1\u7406\u7684\u65e0\u72b6\u6001pod\u533a\u522b\u5728\u4e8e\uff1a \u6709\u72b6\u6001 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":19346,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[93],"tags":[],"class_list":["post-19344","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/19344","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/comments?post=19344"}],"version-history":[{"count":22,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/19344\/revisions"}],"predecessor-version":[{"id":19431,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/posts\/19344\/revisions\/19431"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media\/19346"}],"wp:attachment":[{"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/media?parent=19344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/categories?post=19344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ywdevops.cn\/index.php\/wp-json\/wp\/v2\/tags?post=19344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}