{"id":36099,"date":"2023-02-26T07:01:46","date_gmt":"2023-07-02T01:22:40","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/"},"modified":"2024-04-29T16:20:42","modified_gmt":"2024-04-29T08:20:42","slug":"kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/","title":{"rendered":"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9"},"content":{"rendered":"<h2>\u9996\u5148<\/h2>\n<p>\u672c\u9875\u9762\u603b\u7ed3\u4e86\u4e0eKubernetes v1.28\u4e2d\u7684SIG-Apps\u76f8\u5173\u7684\u53d8\u66f4\u5185\u5bb9\u3002<\/p>\n<ul class=\"post-ul\">https:\/\/github.com\/kubernetes\/kubernetes\/blob\/master\/CHANGELOG\/CHANGELOG-1.28.md<\/ul>\n<p>\u7531\u4e8eSIG-Apps\u4e3b\u8981\u5904\u7406Kubernetes\u5de5\u4f5c\u8d1f\u8f7d\u7684\u53d8\u66f4\uff0c\u56e0\u6b64\u4e0e\u5176\u4ed6SIG\u76f8\u5173\u7684\u53d8\u66f4\u8f83\u591a\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u76f4\u8fd1\u3067\u306e\u904e\u53bb\u306e\u5909\u66f4\u5185\u5bb9\u306f\u4ee5\u4e0b\u306b\u306a\u308a\u307e\u3059\u3002<\/ul>\n<\/li>\n<\/ul>\n<p>Kubernetes 1.27: SIG-Apps \u306e\u5909\u66f4\u5185\u5bb9<br \/>\nKubernetes 1.26: SIG-Apps \u306e\u5909\u66f4\u5185\u5bb9<br \/>\nKubernetes 1.25: SIG-Apps \u306e\u5909\u66f4\u5185\u5bb9<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d275237434c4406c3bc7c\/5-0.png\" alt=\"Kubernetes\u57fa\u790e_-_Google_Slides.png\" \/><\/div>\n<p>\u8bf7\u53c2\u8003\u4ee5\u4e0b\u6574\u7406\u7684\u4e0e SIG-Apps \u4ee5\u5916\u7684 SIG \u76f8\u5173\u7684\u53d8\u66f4\u3002<\/p>\n<ul class=\"post-ul\">Kubernetes 1.28: \u5909\u66f4\u70b9\u307e\u3068\u3081(What&#8217;s new!)\u3068\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u6642\u306e\u6ce8\u610f\u4e8b\u9805<\/ul>\n<h2>\u91cd\u70b9\u7684\u6539\u53d8<\/h2>\n<p>\u4ee5\u4e0b\u662f\u4e0eSig-Apps\u76f8\u5173\u7684\u5728Feature Gates\u4e2d\u76ee\u524d\u5df2\u66f4\u6539\u4e3aStage\u7684\u529f\u80fd\u3002<\/p>\n<p>Pod<\/p>\n<p>PodIndexLabel\uff1aBeta https:\/\/github.com\/kubernetes\/enhancements\/issues\/4017<\/p>\n<p>Job<\/p>\n<p>JobBackoffLimitPerIndex\uff1aAlpha https:\/\/github.com\/kubernetes\/enhancements\/issues\/3850<\/p>\n<p>JobPodReplacementPolicy\uff1aAlpha https:\/\/github.com\/kubernetes\/enhancements\/issues\/3939<\/p>\n<p>CronJob<\/p>\n<p>CronJobsScheduledAnnotation\uff1aBeta https:\/\/github.com\/kubernetes\/enhancements\/issues\/4026<\/p>\n<p>\u88dc\u5145\uff1a\u9019\u6b21\u76844\u500b\u9805\u76ee\u90fd\u662f\u57281.28\u7248\u4e2d\u65b0\u589e\u7684\u65b0\u529f\u80fd\uff0c\u4f46\u7531\u65bc\u4ee5\u4e0b\u7684\u9ed8\u8a8d\u72c0\u614b\u4e0d\u540c\uff0c\u8acb\u6ce8\u610f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"err\">#<\/span> <span class=\"m\">1.28<\/span> <span class=\"n\">\u3067\u521d\u3081\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u304c<\/span> <span class=\"n\">Beta<\/span> <span class=\"n\">\u3067\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059<\/span>\r\n<span class=\"n\">PodIndexLabel<\/span><span class=\"o\">:<\/span> <span class=\"p\">{<\/span><span class=\"n\">Default<\/span><span class=\"o\">:<\/span> <span class=\"no\">true<\/span><span class=\"p\">,<\/span> <span class=\"n\">PreRelease<\/span><span class=\"o\">:<\/span> <span class=\"n\">featuregate<\/span><span class=\"o\">.<\/span><span class=\"n\">Beta<\/span><span class=\"p\">},<\/span>\r\n\r\n<span class=\"n\">JobBackoffLimitPerIndex<\/span><span class=\"o\">:<\/span> <span class=\"p\">{<\/span><span class=\"n\">Default<\/span><span class=\"o\">:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span> <span class=\"n\">PreRelease<\/span><span class=\"o\">:<\/span> <span class=\"n\">featuregate<\/span><span class=\"o\">.<\/span><span class=\"n\">Alpha<\/span><span class=\"p\">},<\/span>\r\n<span class=\"n\">JobPodReplacementPolicy<\/span><span class=\"o\">:<\/span> <span class=\"p\">{<\/span><span class=\"n\">Default<\/span><span class=\"o\">:<\/span> <span class=\"no\">false<\/span><span class=\"p\">,<\/span> <span class=\"n\">PreRelease<\/span><span class=\"o\">:<\/span> <span class=\"n\">featuregate<\/span><span class=\"o\">.<\/span><span class=\"n\">Alpha<\/span><span class=\"p\">},<\/span>\r\n\r\n<span class=\"err\">#<\/span> <span class=\"m\">1.28<\/span> <span class=\"n\">\u3067\u521d\u3081\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u304c<\/span> <span class=\"n\">Beta<\/span> <span class=\"n\">\u3067\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059<\/span>\r\n<span class=\"n\">CronJobsScheduledAnnotation<\/span><span class=\"o\">:<\/span> <span class=\"p\">{<\/span><span class=\"n\">Default<\/span><span class=\"o\">:<\/span> <span class=\"no\">true<\/span><span class=\"p\">,<\/span> <span class=\"n\">PreRelease<\/span><span class=\"o\">:<\/span> <span class=\"n\">featuregate<\/span><span class=\"o\">.<\/span><span class=\"n\">Beta<\/span><span class=\"p\">},<\/span>\r\n<\/code><\/pre>\n<p>\u53c2\u8003 https:\/\/github.com\/kubernetes\/kubernetes\/blob\/v1.28.0\/pkg\/features\/kube_features.go<\/p>\n<h3>\u64ad\u5ba2<\/h3>\n<h4>PodIndexLabel &#8211; \u90e8\u5206\u6807\u7b7e<\/h4>\n<p>\u4f7f\u7528 Job \u548c StatefulSet \u521b\u5efa\u7684 Pod \u7684\u6807\u7b7e\u5c06\u9644\u52a0\u7d22\u5f15\u53f7\u3002<br \/>\n\u8fd9\u662f\u4ece 1.28 \u7248\u672c\u5f00\u59cb\u7684\u65b0\u529f\u80fd\uff0c\u4f5c\u4e3a Beta \u7248\u672c\u6dfb\u52a0\uff0c\u56e0\u6b64\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5c06\u542f\u7528\u3002<\/p>\n<ul class=\"post-ul\">\u95a2\u9023\u60c5\u5831<\/ul>\n<div>\n<div class=\"post-table\">KEP<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-apps\/4017-pod-index-label\" target=\"_blank\" rel=\"nofollow noopener\">KEP-4017<\/a><strong>Feature stage<\/strong><strong>Beta<\/strong><strong>Feature Gate<\/strong><strong>PodIndexLabel<\/strong><strong>issue<\/strong><strong><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/4017\" target=\"_blank\" rel=\"nofollow noopener\">#4017<\/a><\/strong><strong>\u53c2\u8003<\/strong><strong>\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/job\/#completion-mode\" target=\"_blank\" rel=\"nofollow noopener\">Job<\/a>,<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/statefulset\/#pod-index-label\" target=\"_blank\" rel=\"nofollow noopener\">StatefulSet<\/a>,<a href=\"https:\/\/kubernetes.io\/docs\/reference\/labels-annotations-taints\/#apps-kubernetes.io-pod-index\" target=\"_blank\" rel=\"nofollow noopener\">Well-Known Labels<\/a><\/strong><\/div>\n<\/div>\n<details>\u70b9\u51fb\u4ee5\u67e5\u770b\u8be6\u7ec6\u8bf4\u660e\u3002\u5bf9\u4e8e Job \u7684\u60c5\u51b5\uff1a<\/p>\n<p>\u4f7f\u7528 Indexed \u521b\u5efa Job\u3002<br \/>\napiVersion: batch\/v1<br \/>\nkind: Job<br \/>\nmetadata:<br \/>\nname: pi<br \/>\nspec:<br \/>\ncompletionMode: Indexed<br \/>\ntemplate:<br \/>\nspec:<br \/>\ncontainers:<br \/>\n&#8211; name: pi<br \/>\nimage: perl:5.34.0<br \/>\ncommand: [&#8220;perl&#8221;, &#8220;-Mbignum=bpi&#8221;, &#8220;-wle&#8221;, &#8220;print bpi(2000)&#8221;]<br \/>\nrestartPolicy: Never<\/p>\n<p>\u521b\u5efa Pod \u5e76\u786e\u8ba4\u76f8\u5e94\u7684\u6807\u7b7e\u3002<br \/>\n$ kubectl apply -f job.yaml<\/p>\n<p>$ kubectl get po -l job-name=pi -o yaml<br \/>\napiVersion: v1<br \/>\nitems:<br \/>\n&#8211; apiVersion: v1<br \/>\nkind: Pod<br \/>\nmetadata:<br \/>\nannotations:<br \/>\n+ batch.kubernetes.io\/job-completion-index: &#8220;0&#8221;<br \/>\ncreationTimestamp: &#8220;2023-08-24T08:18:11Z&#8221;<br \/>\ngenerateName: pi-0-<br \/>\nlabels:<br \/>\nbatch.kubernetes.io\/controller-uid: 96180273-f2f0-4bf0-ba99-0bfd527b3320<br \/>\n+ batch.kubernetes.io\/job-completion-index: &#8220;0&#8221;<br \/>\nbatch.kubernetes.io\/job-name: pi<br \/>\ncontroller-uid: 96180273-f2f0-4bf0-ba99-0bfd527b3320<br \/>\njob-name: pi<\/p>\n<p>\u4ee5\u524d\u53ea\u6709\u5728\u6ce8\u91ca\u4e2d\u624d\u6709\u7d22\u5f15\u53f7\uff0c\u73b0\u5728\u5728\u6807\u7b7e\u4e2d\u4e5f\u6709\u76f8\u540c\u7684\u5185\u5bb9\u3002<\/p>\n<p>\u5bf9\u4e8e StatefulSet\uff1a<\/p>\n<p>\u521b\u5efa StatefulSet\u3002<br \/>\napiVersion: apps\/v1<br \/>\nkind: StatefulSet<br \/>\nmetadata:<br \/>\nname: web<br \/>\nspec:<br \/>\nselector:<br \/>\nmatchLabels:<br \/>\napp: nginx<br \/>\nserviceName: &#8220;nginx&#8221;<br \/>\nreplicas: 1<br \/>\ntemplate:<br \/>\nmetadata:<br \/>\nlabels:<br \/>\napp: nginx<br \/>\nspec:<br \/>\ncontainers:<br \/>\n&#8211; name: nginx<br \/>\nimage: nginx<\/p>\n<p>\u521b\u5efa Pod \u5e76\u786e\u8ba4\u76f8\u5e94\u7684\u6807\u7b7e\u3002<br \/>\n$ kubectl apply -f sts.yaml<br \/>\nstatefulset.apps\/web created<\/p>\n<p>kubectl get po -l app=nginx -o yaml<br \/>\napiVersion: v1<br \/>\nitems:<br \/>\n&#8211; apiVersion: v1<br \/>\nkind: Pod<br \/>\nmetadata:<br \/>\ncreationTimestamp: &#8220;2023-08-24T08:23:26Z&#8221;<br \/>\ngenerateName: web-<br \/>\nlabels:<br \/>\napp: nginx<br \/>\n+ apps.kubernetes.io\/pod-index: &#8220;0&#8221;<br \/>\ncontroller-revision-hash: web-5d85c59ddf<br \/>\nstatefulset.kubernetes.io\/pod-name: web-0<br \/>\nname: web-0<br \/>\n:<\/p>\n<p>\u53ef\u4ee5\u786e\u8ba4\u6807\u7b7e\u4e2d\u5305\u542b\u7d22\u5f15\u53f7\u3002<br \/>\n\u4e0d\u540c\u4e8e Job\uff0c\u8fd9\u91cc\u7684\u6ce8\u91ca\u4e2d\u6ca1\u6709\u9644\u52a0\u7d22\u5f15\u53f7\u3002<\/p>\n<\/details>\n<h3>\u5de5\u4f5c<\/h3>\n<h4>\u5355\u4e2a\u7d22\u5f15\u7684\u5de5\u4f5c\u91cd\u8bd5\u9650\u5236<\/h4>\n<p>\u73b0\u5728\u53ef\u4ee5\u4f7f\u7528\u7d22\u5f15\u6765\u63a7\u5236\u6bcf\u4e2a\u4f5c\u4e1a\u7684 backoffLimit\uff0c\u4ee5\u524d\u8bbe\u7f6e Job \u65f6\u53ea\u80fd\u5728\u6574\u4e2a\u4f5c\u4e1a\u4e2d\u8bbe\u7f6e\u4e00\u6b21\u3002<\/p>\n<ul class=\"post-ul\">\u95a2\u9023\u60c5\u5831<\/ul>\n<div>\n<div class=\"post-table\">KEP<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-apps\/3850-backoff-limits-per-index-for-indexed-jobs\" target=\"_blank\" rel=\"nofollow noopener\">KEP-33850<\/a><strong>Feature stage<\/strong><strong>Alpha<\/strong><strong>Feature Gate<\/strong><strong>JobBackoffLimitPerIndex<\/strong><strong>issue<\/strong><strong><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3850\" target=\"_blank\" rel=\"nofollow noopener\">#3850<\/a><\/strong><strong>\u53c2\u8003<\/strong><strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/job\/#backoff-limit-per-index\" target=\"_blank\" rel=\"nofollow noopener\">\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a><\/strong><\/div>\n<\/div>\n<p>\u5f53\u521b\u5efa\u5e26\u6709Index\u7684\u4f5c\u4e1a\uff08completionMode=Indexed\uff09\u65f6\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u4e24\u4e2a\u53c2\u6570\u6765\u8bbe\u7f6e\u6bcf\u4e2aIndex\u5355\u4f4d\u521b\u5efa\u7684\u4f5c\u4e1aPod\u53ef\u4ee5\u5931\u8d25\u7684\u6b21\u6570\u3002<\/p>\n<p>backoffLimitPerIndex : Index \u5358\u4f4d\u3067\u306e Pod \u304c\u5931\u6557\u3057\u305f\u969b\u306e backoffLimit \u306e\u6570\u3002Index \u6bce\u306e Pod \u306e\u5931\u6557\u3092\u8a31\u5bb9\u3059\u308b\u6570\u3092\u5236\u5fa1\u3057\u307e\u3059\u3002<\/p>\n<p>maxFailedIndexes : Job \u306b\u5bfe\u3057\u3066\u8a31\u5bb9\u3059\u308b Index \u306e\u5931\u6557\u6570\u3002\u5931\u6557\u3057\u305f Index \u6570\u304c\u3053\u306e\u5024\u306b\u9054\u3057\u305f\u6642\u70b9\u3067 Job \u304c\u65b0\u898f\u306b Pod \u3092\u4f5c\u6210\u3057\u306a\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u5024\u3092 completions \u306e\u5024\u3088\u308a\u5927\u304d\u304f\u3057\u305f\u5834\u5408\u306f\u5168\u3066\u306e Index \u4ed8\u304d\u306e Pod \u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n<details>\u70b9\u51fb\u8fdb\u884c\u8be6\u7ec6\u8bf4\u660e\u521b\u5efa\u4f5c\u4e1a\u3002<\/p>\n<p>apiVersion: batch\/v1<br \/>\nkind: Job<br \/>\nmetadata:<br \/>\nname: job-backoff-limit-per-index-example<br \/>\nspec:<br \/>\ncompletions: 4<br \/>\nparallelism: 1 #\u8bbe\u7f6e\u5e76\u884c\u6570\u4e3a1\uff0c\u4ee5\u4fbf\u66f4\u5bb9\u6613\u89c2\u5bdf\u72b6\u6001\u7684\u53d8\u5316\u3002<br \/>\ncompletionMode: Indexed #\u9700\u8981\u6b64\u529f\u80fd<br \/>\nbackoffLimitPerIndex: 1 #\u7d22\u5f15\u7684\u6700\u5927\u5931\u8d25\u6b21\u6570<br \/>\nmaxFailedIndexes: 2 #\u4f5c\u4e1a\u6267\u884c\u7ec8\u6b62\u524d\u5931\u8d25\u7d22\u5f15\u7684\u6700\u5927\u6570\u91cf<br \/>\ntemplate:<br \/>\nspec:<br \/>\nrestartPolicy: Never #\u9700\u8981\u6b64\u529f\u80fd<br \/>\ncontainers:<br \/>\n&#8211; name: example<br \/>\nimage: python<br \/>\ncommand:<br \/>\n&#8211; python3<br \/>\n&#8211; -c<br \/>\n&#8211; |<br \/>\nimport os, sys<br \/>\nprint(&#8220;Hello world&#8221;)<br \/>\nif int(os.environ.get(&#8220;JOB_COMPLETION_INDEX&#8221;)) % 2 == 0: \uff03\u6839\u636e\u7d22\u5f15\u53f7\u8bbe\u7f6e\u5931\u8d25<br \/>\nsys.exit(1)<\/p>\n<p>$ kubectl apply -f job.yaml<br \/>\njob.batch\/job-backoff-limit-per-index-example created<\/p>\n<p>$ kubectl get job,po<br \/>\n\u540d\u79f0 \u5b8c\u6210\u6b21\u6570 \u6301\u7eed\u65f6\u95f4 \u5e74\u9f84<br \/>\njob.batch\/job-backoff-limit-per-index-example 2\/4 4m11s 4m11s<\/p>\n<p>\u540d\u79f0 \u5c31\u7eea\u72b6\u6001 \u72b6\u6001 \u91cd\u542f\u6b21\u6570 \u5e74\u9f84<br \/>\npod\/job-backoff-limit-per-index-example-0-8qvgm 0\/1 \u9519\u8bef 0 3m58s<br \/>\npod\/job-backoff-limit-per-index-example-0-rpjlk 0\/1 \u9519\u8bef 0 4m11s<br \/>\npod\/job-backoff-limit-per-index-example-1-cbqdl 0\/1 \u5df2\u5b8c\u6210 0 3m53s<br \/>\npod\/job-backoff-limit-per-index-example-2-jv56w 0\/1 \u9519\u8bef 0 3m48s<br \/>\npod\/job-backoff-limit-per-index-example-2-ndjqx 0\/1 \u9519\u8bef 0 3m35s<br \/>\npod\/job-backoff-limit-per-index-example-3-tgkq8 0\/1 \u5df2\u5b8c\u6210 0 3m30s<\/p>\n<p>\u7531\u4e8e backoffLimitPerIndex = 1\uff0c\u53ef\u4ee5\u770b\u5230\u5f53\u5e26\u6709\u7d22\u5f15\u7684 Pod \u5931\u8d25\u65f6\uff0c\u5c06\u53ea\u521b\u5efa\u4e00\u4e2a\u5177\u6709\u76f8\u540c\u7d22\u5f15\u7684 Pod\u3002<br \/>\n\u7531\u4e8e maxFailedIndexes = 2\uff0c\u5728\u8fbe\u5230 backoffLimitPerIndex \u9650\u5236\u7684\u7d22\u5f15\u6570\u91cf\u4e3a2\u65f6\uff0c\u5c06\u505c\u6b62\u521b\u5efa\u65b0\u7684 Pod\u3002\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u7531\u4e8e parallelism = 1\uff0c\u5931\u8d25\u7684\u7d22\u5f15\u6570\u6070\u597d\u662f2\u4e2a\uff0c\u4f46\u5982\u679c\u5e76\u884c\u6570\u589e\u52a0\uff0c\u5931\u8d25\u7684\u7d22\u5f15\u6570\u53ef\u80fd\u4f1a\u8d85\u8fc72\u4e2a\u3002\u8fd9\u4e2a\u529f\u80fd\u53ea\u662f\u5728\u8fbe\u5230\u6761\u4ef6\u65f6\u505c\u6b62\u4f5c\u4e1a\u6267\u884c\u3002<\/p>\n<p>\u68c0\u67e5\u4f5c\u4e1a\u72b6\u6001\u3002<\/p>\n<p>$ kubectl get job -l job-name=job-backoff-limit-per-index-example -o yaml<br \/>\napiVersion: v1<br \/>\nitems:<br \/>\n&#8211; apiVersion: batch\/v1<br \/>\nkind: Job<br \/>\n:<br \/>\nstatus:<br \/>\n+ completedIndexes: 1,3<br \/>\nconditions:<br \/>\n&#8211; lastProbeTime: &#8220;2023-08-24T09:40:58Z&#8221;<br \/>\nlastTransitionTime: &#8220;2023-08-24T09:40:58Z&#8221;<br \/>\n+ message: \u4f5c\u4e1a\u5177\u6709\u5931\u8d25\u7684\u7d22\u5f15<br \/>\n+ reason: \u5931\u8d25\u7684\u7d22\u5f15<br \/>\nstatus: &#8220;True&#8221;<br \/>\ntype: \u5931\u8d25<br \/>\n+ failed: 4<br \/>\n+ failedIndexes: 0,2<br \/>\nready: 0<br \/>\nstartTime: &#8220;2023-08-24T09:40:11Z&#8221;<br \/>\n+ succeeded: 2<br \/>\nterminating: 0<br \/>\nuncountedTerminatedPods: {}<\/p>\n<p>\u901a\u8fc7\u89c2\u5bdf status\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230 failedIndexes \u589e\u52a0\uff0c\u53ef\u4ee5\u4ece\u4e0a\u8ff0\u72b6\u6001\u4e2d\u4e86\u89e3\u4f5c\u4e1a\u7684\u5f53\u524d\u72b6\u6001\u3002<br \/>\n\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0cfailed = 4\uff0c\u56e0\u6b64\u672a\u8fbe\u5230\u9ed8\u8ba4\u503c backoffLimit = 6\uff0c\u6240\u4ee5\u6ca1\u6709\u56e0 BackoffLimitExceeded \u5931\u8d25\u3002\u7136\u800c\uff0cbackoffLimit \u7684\u9650\u5236\u4ecd\u7136\u5b58\u5728\uff0c\u56e0\u6b64\u5728\u4f7f\u7528 backoffLimitPerIndex \u65f6\u9700\u8981\u6ce8\u610f\u3002<br \/>\n\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u6dfb\u52a0\u4e86\u4e24\u4e2a\u53c2\u6570\uff0c\u5206\u522b\u662f FailedIndexes \u548c MaxFailedIndexesExceeded \u9519\u8bef\u6d88\u606f\uff0c\u7528\u4e8e\u4f5c\u4e1a\u5931\u8d25\u65f6\u7684\u9519\u8bef\u6d88\u606f\u3002<\/p>\n<\/details>\n<h4>\u804c\u4f4dPod\u66f4\u6362\u653f\u7b56<\/h4>\n<p>\u53ea\u6709\u5728Job\u5df2\u7ecf\u521b\u5efa\u7684Pod\u6b63\u5728\u7ec8\u6b62\uff08Pod\u4e0a\u6709\u5220\u9664\u65f6\u95f4\u6233\uff09\u6216\u8005\u5931\u8d25\uff08status.phase=Failed\uff09\u65f6\uff0c\u6211\u4eec\u7acb\u5373\u521b\u5efa\u4e86\u4e00\u4e2a\u66ff\u4ee3\u7684Pod\u3002\u4f46\u662f\uff0c\u901a\u8fc7\u8bbe\u7f6e.spec.podReplacementPolicy=Failed\uff0c\u6211\u4eec\u73b0\u5728\u53ea\u5728\u51fa\u73b0\u5931\u8d25\u65f6\u624d\u80fd\u521b\u5efa\u66ff\u4ee3\u7684Pod\u3002<\/p>\n<ul class=\"post-ul\">\u95a2\u9023\u60c5\u5831<\/ul>\n<div>\n<div class=\"post-table\">KEP<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-apps\/3939-allow-replacement-when-fully-terminated\" target=\"_blank\" rel=\"nofollow noopener\">KEP-3939<\/a><strong>Feature stage<\/strong><strong>Alpha<\/strong><strong>Feature Gate<\/strong><strong>JobPodReplacementPolicy<\/strong><strong>issue<\/strong><strong><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3939\" target=\"_blank\" rel=\"nofollow noopener\">#3939<\/a><\/strong><strong>\u53c2\u8003<\/strong><strong><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/controllers\/job\/#pod-replacement-policy\" target=\"_blank\" rel=\"nofollow noopener\">\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a><\/strong><\/div>\n<\/div>\n<p>\u7ec8\u6b62\u7684Pod\u5e76\u4e0d\u662f\u6307\u8fdb\u7a0b\u5b8c\u5168\u505c\u6b62\u4e86\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5b83\u6267\u884c\u4e86\u4e0epreStop\u548cSIGTERM\u76f8\u5173\u7684\u5904\u7406\u3002\u5728\u8fd9\u79cd\u72b6\u6001\u4e0b\uff0c\u5982\u679c\u521b\u5efa\u65b0\u7684Pod\uff0c\u5219\u4f1a\u6709\u591a\u4e2aPod\u540c\u65f6\u8fd0\u884c\uff0c\u800c\u4e0d\u4ec5\u4ec5\u662f.spec.parallelism\u6240\u6307\u5b9a\u7684\u6570\u91cf\u3002\u8fd9\u662f\u4e3a\u4e86\u89e3\u51b3\u4f7f\u7528\u6709\u9650\u8d44\u6e90\uff08\u4f8b\u5982GPU\uff09\u7684Pod\u65e0\u6cd5\u4ea7\u751f\u9884\u671f\u52a8\u4f5c\u800c\u6dfb\u52a0\u7684\u529f\u80fd\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d275237434c4406c3bc7c\/33-0.com\/3e261858b4382f80f22caf7e6659528d053a4358\/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f333738302f31373862366165302d623364302d353663302d323939652d6530356464666161393633382e6a706567\" alt=\"Kubernetes\u57fa\u790e_-_Google_Slides.png\" \/><\/div>\n<p>\u8c08\u5230 Kubernetes\uff1a\u6df1\u5165\u4e86\u89e3Pod\u7684\u7ec8\u6b62<\/p>\n<p>\u4e3a\u4e86\u5728Job\u4e2d\u5b9e\u73b0\u7c7b\u4f3c\u4e8eStatefulSet\u7684podManagementPolicy=OrderedReady\u548cDaemonSet\u7684maxSurge=0\u7684\u72b6\u6001\uff0c\u8fd9\u79cd\u529f\u80fd\u5c06\u88ab\u4f7f\u7528\u3002\u7136\u800c\uff0c\u7531\u4e8eDeployment\u4e2d\u6ca1\u6709\u76f8\u5e94\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u5728KEP-3973\u4e2d\u6b63\u5728\u8003\u8651\u4e2d\u3002<\/p>\n<p>\u53ea\u9700\u4f7f\u7528\u73b0\u6709\u7684\u4ee5\u4e0b\u529f\u80fd\uff0c\u5c31\u53ef\u4ee5\u4e00\u76f4\u6267\u884c\u76f4\u5230\u6210\u529f\u4e3a\u6b62\u3002<\/p>\n<p>backoffLimit<br \/>\n\u5931\u6557\u306e\u8a31\u5bb9\u56de\u6570\u3092\u6c7a\u3081\u308c\u308b\u306e\u3067\u3001\u6210\u529f\u3059\u308b\u307e\u3067\u7e70\u308a\u8fd4\u3059\u3088\u3046\u306b\u3067\u304d\u307e\u3059\u304c\u3001 Job \u306e faild \u306e\u30ab\u30a6\u30f3\u30c8\u6570\u306f\u4e0a\u6607\u3057\u307e\u3059\u3002<\/p>\n<p>Pod failure policy<br \/>\n\u7279\u5b9a\u306e Exit Code \u3092\u6307\u5b9a\u3057\u3066 faild \u306b\u30ab\u30a6\u30f3\u30c8\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u305f\u3060\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5074\u3067\u5931\u6557\u6642\u306e Exit Code \u3092\u7ba1\u7406\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u306e\u3068\u3001Pod \u306e\u5931\u6557\u81ea\u4f53\u3092\u6291\u5236\u306f\u3067\u304d\u307e\u305b\u3093\u3002<\/p>\n<p>\u4f7f\u7528JobPodReplacementPolicy\u65f6\uff0c\u5176\u7279\u70b9\u5728\u4e8e\u53ef\u4ee5\u6291\u5236\u6240\u6307\u5b9a\u7684 Pod \u5728\u542f\u52a8\u65f6\u53ef\u80fd\u53d1\u751f\u7684\u5931\u8d25\u3002<\/p>\n<details>\u8be6\u7ec6\u5185\u5bb9\u8bf4\u660e\uff08\u70b9\u51fb\u4ee5\u5c55\u5f00\uff09podReplacementPolicy=TerminatingOrFailed\uff08\u9ed8\u8ba4\u884c\u4e3a\uff09<\/p>\n<p>\u521b\u5efa\u4f5c\u4e1a<br \/>\napiVersion: batch\/v1<br \/>\nkind: Job<br \/>\nmetadata:<br \/>\nname: busybox<br \/>\nspec:<br \/>\ncompletions: 3<br \/>\n+ parallelism: 1# \u4e3a\u4e86\u66f4\u5bb9\u6613\u89c2\u5bdf\u5230\u72b6\u6001\u7684\u53d8\u5316\uff0c\u5c06\u5e76\u884c\u5ea6\u8bbe\u7f6e\u4e3a1\u3002<br \/>\n+ podReplacementPolicy: TerminatingOrFailed# \u9ed8\u8ba4\u503c\uff0c\u4e0e\u73b0\u6709\u64cd\u4f5c\u76f8\u540c\uff0c\u5982\u679c\u672a\u6307\u5b9a\u3002<br \/>\ntemplate:<br \/>\nmetadata:<br \/>\ndeletionGracePeriodSeconds: 70<br \/>\nspec:<br \/>\ncontainers:<br \/>\n&#8211; name: busybox<br \/>\nimage: busybox<br \/>\ncommand: [&#8220;sleep&#8221;, &#8220;60&#8221;]<br \/>\n+ lifecycle:<br \/>\n+ preStop:<br \/>\n+ exec:<br \/>\n+ command: [&#8220;sleep&#8221;, &#8220;60&#8221;]# \u8bbe\u7f6e\u4ee5\u4fbf\u6613\u4e8e\u9a8c\u8bc1<br \/>\nrestartPolicy: Never<\/p>\n<p>\u901a\u8fc7\u5220\u9664\u6b63\u5728\u8fd0\u884c\u7684Pod\u6765\u6545\u610f\u5f15\u53d1Terminating\u72b6\u6001\u5e76\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\n#\u521b\u5efa\u4f5c\u4e1a<br \/>\n$ kubectl apply -f job.yaml<br \/>\njob.batch\/busybox created<\/p>\n<p>#\u786e\u8ba4Pod\u6b63\u5728\u8fd0\u884c<br \/>\n$ kubectl get job, po<br \/>\nNAME COMPLETIONS DURATION AGE<br \/>\njob.batch\/busybox 0\/3 14s 14s<\/p>\n<p>NAME READY STATUS RESTARTS AGE<br \/>\npod\/busybox-lkqgn 1\/1 Running 0 14s<\/p>\n<p>#\u901a\u8fc7\u5220\u9664Pod\u6545\u610f\u8bbe\u7f6e\u4e3aTerminating\u72b6\u6001<br \/>\nkubectl delete po -l job-name=busybox<br \/>\npod &#8220;busybox-lkqgn&#8221; deleted<\/p>\n<p>#\u73b0\u6709Pod\u662fTerminating\u7684\uff0c\u4f46\u53ef\u4ee5\u786e\u8ba4\u51fa\u73b0\u4e86\u65b0\u7684Pod<br \/>\n$ kubectl get job, po<br \/>\nNAME COMPLETIONS DURATION AGE<br \/>\njob.batch\/busybox 0\/3 36s 36s<\/p>\n<p>NAME READY STATUS RESTARTS AGE<br \/>\n+ pod\/busybox-fgh6g 0\/1 ContainerCreating 0 1s<br \/>\n&#8211; pod\/busybox-lkqgn 1\/1 Terminating 0 36s<\/p>\n<p>busybox-lkqgn\u5904\u4e8eTerminating\u72b6\u6001\uff0c\u4f46\u7531\u4e8e\u6b63\u5728\u6267\u884cpreStop\u64cd\u4f5c\uff0c\u5b58\u5728\u591a\u4e2aPod\u540c\u65f6\u8fd0\u884c\uff0c\u5176\u6570\u91cf\u5927\u4e8eparallelism=1\u3002<\/p>\n<p>podReplacementPolicy=Failed<\/p>\n<p>\u521b\u5efa\u4f5c\u4e1a<br \/>\napiVersion: batch\/v1<br \/>\nkind: Job<br \/>\nmetadata:<br \/>\nname: busybox<br \/>\nspec:<br \/>\ncompletions: 3<br \/>\n+ parallelism: 1# \u4e3a\u4e86\u66f4\u5bb9\u6613\u89c2\u5bdf\u5230\u72b6\u6001\u7684\u53d8\u5316\uff0c\u5c06\u5e76\u884c\u5ea6\u8bbe\u7f6e\u4e3a1\u3002<br \/>\n+ podReplacementPolicy: Failed# \u8fd9\u662f\u4e00\u4e2a\u65b0\u6dfb\u52a0\u7684\u529f\u80fd\u3002<br \/>\ntemplate:<br \/>\nmetadata:<br \/>\ndeletionGracePeriodSeconds: 70<br \/>\nspec:<br \/>\ncontainers:<br \/>\n&#8211; name: busybox<br \/>\nimage: busybox<br \/>\ncommand: [&#8220;sleep&#8221;, &#8220;60&#8221;]<br \/>\n+ lifecycle:<br \/>\n+ preStop:<br \/>\n+ exec:<br \/>\n+ command: [&#8220;sleep&#8221;, &#8220;60&#8221;]# \u8bbe\u7f6e\u4ee5\u4fbf\u6613\u4e8e\u9a8c\u8bc1<br \/>\nrestartPolicy: Never<\/p>\n<p>\u901a\u8fc7\u5220\u9664\u6b63\u5728\u8fd0\u884c\u7684Pod\u6765\u6545\u610f\u5f15\u53d1Terminating\u72b6\u6001\u5e76\u8fdb\u884c\u786e\u8ba4\u3002<br \/>\n#\u521b\u5efa\u4f5c\u4e1a<br \/>\n$ kubectl apply -f job.yaml<br \/>\njob.batch\/busybox created<\/p>\n<p>#\u786e\u8ba4Pod\u6b63\u5728\u8fd0\u884c<br \/>\n$ kubectl get job, po<br \/>\nNAME COMPLETIONS DURATION AGE<br \/>\njob.batch\/busybox 0\/3 9s 9s<\/p>\n<p>NAME READY STATUS RESTARTS AGE<br \/>\npod\/busybox-cvztl 1\/1 Running 0 9s<\/p>\n<p>#\u901a\u8fc7\u5220\u9664Pod\u6545\u610f\u8bbe\u7f6e\u4e3aTerminating\u72b6\u6001<br \/>\nkubectl delete po -l job-name=busybox<br \/>\npod &#8220;busybox-cvztl&#8221; deleted<\/p>\n<p>#\u73b0\u6709Pod\u662fTerminating\u7684\uff0c\u4f46\u65b0\u7684Pod\u4e0d\u4f1a\u88ab\u521b\u5efa<br \/>\n$ kubectl get job, po<br \/>\nNAME COMPLETIONS DURATION AGE<br \/>\njob.batch\/busybox 0\/3 42s 42s<\/p>\n<p>NAME READY STATUS RESTARTS AGE<br \/>\n+ pod\/busybox-cvztl 1\/1 Terminating 0 42s<\/p>\n<p>#\u5728\u73b0\u6709Pod\u88ab\u5220\u9664\u540e\uff0c\u53ef\u4ee5\u786e\u8ba4\u65b0\u7684Pod\u88ab\u521b\u5efa<br \/>\n$ kubectl get job, po<br \/>\nNAME COMPLETIONS DURATION AGE<br \/>\njob.batch\/busybox 0\/3 66s 66s<\/p>\n<p>NAME READY STATUS RESTARTS AGE<br \/>\n+ pod\/busybox-b9pk5 1\/1 Running 0 6s<\/p>\n<\/details>\n<h3>CronJob \u5b9a\u65f6\u4efb\u52a1<\/h3>\n<h4>CronJobsScheduledAnnotation \u8ba1\u5212\u6279\u5904\u7406\u6ce8\u91ca<\/h4>\n<p>\u5728CronJob\u901a\u8fc7\u521b\u5efa\u7684Job\u7684\u6ce8\u91ca\u4e2d\uff0c\u5c06\u5305\u542bCronJob\u6240\u8c03\u5ea6\u7684\u65f6\u95f4\u3002<br \/>\n\u8fd9\u662f\u81ea1.28\u7248\u672c\u4ee5\u6765\u7684\u65b0\u529f\u80fd\uff0c\u4f46\u7531\u4e8e\u4f5c\u4e3aBeta\u529f\u80fd\u6dfb\u52a0\uff0c\u56e0\u6b64\u9ed8\u8ba4\u662f\u542f\u7528\u7684\u3002<\/p>\n<ul class=\"post-ul\">\u95a2\u9023\u60c5\u5831<\/ul>\n<div>\n<div class=\"post-table\">KEP<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-apps\/4026-crojob-scheduled-timestamp-annotation\" target=\"_blank\" rel=\"nofollow noopener\">KEP-4026<\/a><strong>Feature stage<\/strong><strong>Alpha<\/strong><strong>Feature Gate<\/strong><strong>CronJobsScheduledAnnotation<\/strong><strong>issue<\/strong><strong><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/4026\" target=\"_blank\" rel=\"nofollow noopener\">#4026<\/a><\/strong><strong>\u53c2\u8003<\/strong><strong><a href=\"https:\/\/kubernetes.io\/docs\/reference\/labels-annotations-taints\/#batch-kubernetes-io-cronjob-scheduled-timestamp\" target=\"_blank\" rel=\"nofollow noopener\">\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a><\/strong><\/div>\n<\/div>\n<details>\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u68c0\u67e5 `batch.kubernetes.io\/cronjob-scheduled-timestamp` \u7684\u6ce8\u91ca\u6765\u786e\u8ba4\u7531 CronJob \u8c03\u5ea6\u7684 Job \u7684\u65f6\u95f4\u6233\u3002<\/details>\n<h2>v1.28\u66f4\u65b0\u8bf4\u660e<\/h2>\n<p>\u4e0b\u9762\u662f\u6709\u5173 SIG-Apps \u7684 v1.28 \u7248\u672c\u53d1\u5e03\u8bf4\u660e\u7684\u4e2d\u6587\u7ffb\u8bd1\u3002<\/p>\n<blockquote><p>\u8fd9\u4e2a\u53e5\u5b50\u662f\u4f5c\u8005\u8865\u5145\u7684\uff0c\u800c\u4e0d\u662fCHANGELOG\u7684\u5b98\u65b9\u5185\u5bb9\u3002<\/p><\/blockquote>\n<h3>\u5f03\u7528<\/h3>\n<p>Kube-controller-manager \u306e &#8211;volume-host-cidr-denylist \u3068 &#8211;volume-host-allow-local-loopback \u306e\u30d5\u30e9\u30b0\u304c\u975e\u63a8\u5968\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#118128, @carlory) [SIG API Machinery, Apps, Network, Node, Storage and Testing] [sig\/network,sig\/storage,sig\/node,sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>tracking annotation \u304c validation \u3068 defaulting \u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 (#117633, @kannon92) [sig\/apps]<\/p>\n<p>JobTrackingWithFinalizers \u306e\u6a5f\u80fd\u304c GA \u306b\u306a\u308b\u307e\u3067\u306e\u9593\u306f Job \u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u306b batch.kubernetes.io\/job-tracking \u304c\u4ed8\u4e0e\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u305d\u308c\u304c\u4ed8\u304b\u306a\u304f\u306a\u308b\u3068\u3044\u3046\u8a71\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\nhttps:\/\/qiita.com\/yosshi_\/items\/95b8a38ad1c44a0266bd#job-tracking-with-finalizers<\/p>\n<p>NetworkPolicyStatus \u306b\u95a2\u3059\u308b feature \u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 (#115843, @rikatz) [sig\/network,sig\/api-machinery,sig\/apps,sig\/testing,sig\/architecture]<\/p>\n<p>Indexed Job \u306e completions \u6570\u304c 10^5 \u4ee5\u4e0a\u3067 parallelism \u6570\u304c 10^4 \u3068\u306a\u308b\u5de8\u5927\u306a Indexed Job \u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306b Kubernetes \u304c Job \u306e\u7d42\u4e86\u3092\u6b63\u3057\u304f\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u3089\u306e\u5236\u9650\u3092\u8d85\u904e\u3059\u308b Job \u306e manifest \u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u8b66\u544a\u3092\u51fa\u3059\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002 (#118420, @alculquicondor) [SIG Apps] [sig\/apps]<\/p>\n<p>completions=100000 \u304b\u3064 parallelism=10000 \u306e Indexed Job \u3068\u3044\u3046\u306e\u306f\u4e2d\u3005\u306a\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u5909\u66f4\u306e\u7406\u7531\u81ea\u4f53\u3082\u305d\u3046\u3044\u3046\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u304c\u3042\u3063\u305f\u3068\u3044\u3046\u306e\u3067\u306f\u306a\u304f\u3001\u7406\u8ad6\u4e0a\u767a\u751f\u3057\u3046\u308b\u306e\u3067\u8b66\u544a\u3057\u307e\u3057\u305f\u3068\u3044\u3046\u5f62\u3067\u8ffd\u52a0\u3055\u308c\u3044\u307e\u3059\u3002<\/p>\n<h3>API\u66f4\u6539<\/h3>\n<p>Indexed Job \u306e completions \u6570\u304c 10^5 \u4ee5\u4e0a\u3067 parallelism \u6570\u304c 10^4 \u3068\u306a\u308b\u5de8\u5927\u306a Indexed Job \u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306b Kubernetes \u304c Job \u306e\u7d42\u4e86\u3092\u6b63\u3057\u304f\u30c8\u30e9\u30c3\u30ad\u30f3\u30b0\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u308c\u3089\u306e\u5236\u9650\u3092\u8d85\u904e\u3059\u308b Job \u306e manifest \u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u8b66\u544a\u3092\u51fa\u3059\u3088\u3046\u306b\u3057\u307e\u3057\u305f\u3002 (#118420, @alculquicondor) [SIG Apps] [sig\/apps]<\/p>\n<p>loadbalancer status ingress \u306b IP mode \u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 (#118895, @RyanAoh) [sig\/network,sig\/api-machinery,sig\/apps,sig\/testing,sig\/cloud-provider]<\/p>\n<p>service.status.loadBalancer.ingress \u306b IP mode \u304c\u5897\u3048\u3066 VIP \u3068\u304b Proxy \u306e\u3088\u3046\u306a\u5024\u304c\u306f\u3044\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\u8a73\u7d30\u306b\u3064\u3044\u3066\u306fKEP-1860\u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>CronJobs \u3067\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3055\u308c\u305f Job \u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306b batch.kubernetes.io\/cronjob-scheduled-timestamp \u306e\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u304c\u8ffd\u52a0\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#118137, @helayoty) [sig\/apps]<\/p>\n<p>Job API \u306b BackoffLimitPerIndex alpha \u3068\u3057\u3066\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 (#119294, @mimowo) [sig\/api-machinery,sig\/apps]<\/p>\n<p>cgroups v2 \u5229\u7528\u3059\u308b\u969b\u306b\u3001 memory.oom.group \u7d4c\u7531\u3067 container cgroups \u306e cgroup aware OOM killer \u304c\u6709\u52b9\u5316\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a cgroup \u306a\u3044\u306e\u30d7\u30ed\u30bb\u30b9\u306f1\u3064\u306e unit \u3068\u3057\u3066\u6271\u308f\u308c\u3001OOM kill \u304c\u767a\u751f\u3057\u305f\u969b\u306b\u3001cgroup \u5185\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u540c\u6642\u306b kill \u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#117793, @tzneal) [SIG Apps, Node and Testing] [sig\/node,sig\/apps,sig\/testing]<\/p>\n<p>Indexed Job pods \u306b completion index \u306e label \u304c\u8ffd\u52a0\u3055\u308c\u307e\u3059\u3002 (#118883, @danielvegamyhre) [SIG Apps] [sig\/apps]<\/p>\n<p>PersistentVolumes \u306b\u65b0\u3057\u304f LastPhaseTransitionTime \u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u30dc\u30ea\u30e5\u30fc\u30e0\u304c\u6700\u5f8c\u306b phase \u3092\u79fb\u884c\u3057\u305f\u6642\u523b\u304c\u8a18\u9332\u3055\u308c\u307e\u3059\u3002 (#116469, @RomanBednar) [sig\/storage,sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing,sig\/release]<\/p>\n<p>Pods \u306b hostNetwork: true \u304c\u8a2d\u5b9a\u3055\u308c ports \u304c\u5ba3\u8a00\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b hostPort \u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u81ea\u52d5\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u4ee5\u524d\u306e\u6319\u52d5\u306f Deployment, DaemonSet \u305d\u306e\u4ed6\u306e workload API \u306e PodTemplate \u306b hostPort \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b\u5b9f\u969b\u306e Pod \u304c\u4f5c\u6210\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u3002\u3082\u3057\u3053\u306e\u72b6\u614b\u3067\u554f\u984c\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f DefaultHostNetworkHostPortsInPodTemplates feature gate \u3092 true \u306b\u3059\u308b\u3068\u5143\u306e\u6319\u52d5\u306b\u623b\u308a\u307e\u3059\u3002\u305d\u306e\u969b\u306b\u306f kubernetes \u306e bug \u3068\u3057\u3066\u5831\u544a\u3057\u3066\u304f\u3060\u3055\u3044\u3002(#117696, @thockin) [SIG Apps] [sig\/apps]<\/p>\n<p>ValidatingAdmissionPolicy \u3068 ValidatingAdmissionPolicyBinding \u306e API \u304c v1beta1 \u306b\u6607\u683c\u3057\u307e\u3057\u305f\u3002(#118644, @alexzielenski) [SIG API Machinery, Apps and Testing] [sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>ValidtaingAdmissionPolicy feature gate \u304c beta \u306b\u306a\u308a\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9\u5316\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#119409, @alexzielenski) [sig\/storage,sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/instrumentation,sig\/testing,sig\/release]<\/p>\n<p>pvc.Status \u304b\u3089 resizeStatus enum \u304c\u524a\u9664\u3055\u308c AllocatedResourceStatus \u306b\u30ea\u30d7\u30ec\u30a4\u30b9\u3055\u308c\u307e\u3059\u3002 (#116335, @gnufied) [SIG API Machinery, Apps, Auth, Node, Storage and Testing] [sig\/storage,sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing]<\/p>\n<p>WindowsHostProcessContainers feature-gate \u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002(#117570, @marosset) [SIG API Machinery, Apps, Auth, Node and Windows] [sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/windows]<\/p>\n<p>PodFailurePolicy feature-gate level \u306e\u30b3\u30e1\u30f3\u30c8\u304c alpha \u304b\u3089 beta \u306b\u5909\u308f\u308b\u306e\u3067\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002 (#117802, @kerthcet) [SIG API Machinery and Apps] [sig\/api-machinery,sig\/apps]<\/p>\n<p>StatefulSet pods \u306b pod index \u304c label \u306b statefulset.kubernetes.io\/pod-index \u3068\u3057\u3066\u4ed8\u4e0e\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#119232, @danielvegamyhre) [SIG Apps] [sig\/apps]<\/p>\n<p>local apiserver \u304c version skew \u3084 local apiserver \u3067\u7121\u52b9\u5316\u3055\u308c\u3066\u3044\u308b api \u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u554f\u984c\u3067 serve \u3067\u304d\u306a\u3044\u6642\u3001peer kube-apiserver \u3078\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092 proxy \u3067\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002(#117740, @Richabanker) [SIG API Machinery, Apps, Auth, Cloud Provider, Network, Node and Testing] [sig\/network,sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing,sig\/cloud-provider]<\/p>\n<p>Job \u3067 BackoffLimitPerIndex \u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\u3002 (#118009, @mimowo) [sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>ResourceClaims \u306e\u540d\u524d\u306f ResourceClaimTemplate \u304b\u3089\u4f5c\u3089\u308c\u307e\u3059\u3002 \u30d9\u30fc\u30b9\u306e\u540d\u524d\u306f\u307e\u3060 &#8211; \u3067\u3059\u304c\u885d\u7a81\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u30e9\u30f3\u30c0\u30e0\u3067 suffix \u304c\u3064\u304f\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#117351, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing] [sig\/scheduling,sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing]<\/p>\n<p>\u65b0\u3057\u304f &#8220;SidecarContainers&#8221; \u306e feature gate \u304c\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 \u3053\u306e\u6a5f\u80fd\u306b\u3088\u308a sidecar containers \u304c\u5c0e\u5165\u3055\u308c\u307e\u3059\u3002 \u65b0\u3057\u3044\u30bf\u30a4\u30d7\u306e init container \u306f\u4ed6\u306e containers \u306e\u524d\u306b\u958b\u59cb\u3055\u308c\u307e\u3059\u304c\u3001Pod \u306e lifecycle \u306e\u5168\u671f\u9593\u3067\u52d5\u304d\u7d9a\u3051\u3001pod \u306e termination \u3092\u30d6\u30ed\u30c3\u30af\u3057\u307e\u305b\u3093\u3002(#116429, @gjkim42) [SIG API Machinery, Apps, Node, Scheduling and Testing] [sig\/scheduling,sig\/node,sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>PodFailurePolicy \u306e feature-gate \u306e\u30b3\u30e1\u30f3\u30c8\u304c\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002 (#118278, @mimowo) [sig\/apps]<\/p>\n<p>kube-controller-manager: LegacyServiceAccountTokenCleanUp feature gate \u304c alpha \u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3042\u308a\u307e\u3059\u3002(\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u30aa\u30d5) \u6709\u52b9\u5316\u3057\u305f\u5834\u5408\u306f legacy-service-account-token-cleaner \u304c &#8211;legacy-service-account-token-clean-up-period (\u30c7\u30d5\u30a9\u30eb\u30c81\u5e74) \u3067\u6307\u5b9a\u3057\u305f\u671f\u9593\u3092\u904e\u304e\u305f service account token secrets \u3092\u30eb\u30fc\u30d7\u3057\u3066\u524a\u9664\u3057\u307e\u3059\u3002ServiceAccount \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u30ea\u30b9\u30c8\u306e .secrets \u304b\u3089\u53c2\u7167\u3055\u308c\u3001pods \u304b\u3089\u306f\u53c2\u7167\u3055\u308c\u307e\u305b\u3093\u3002(#115554, @yt2985) [sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing,sig\/release]<\/p>\n<h3>\u529f\u80fd\u589e\u52a0<\/h3>\n<p>kube-controller-manager \u306b &#8211;concurrent-cron-job-syncs \u30d5\u30e9\u30b0\u3092\u8ffd\u52a0\u3057\u3066\u3001cron job controller \u306e workers \u6570\u3092\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#117550, @borgerli) [sig\/apps]<\/p>\n<p>\u30c7\u30d5\u30a9\u30eb\u30c8\u306e cron job controller \u306e workers \u6570\u306f5\u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u3001\u30af\u30e9\u30b9\u30bf\u5185\u30675000\u3092\u8d85\u3048\u308b CronJob \u3092\u5b9f\u884c\u3059\u308b\u30b1\u30fc\u30b9\u3067\u51e6\u7406\u304c\u51fa\u3066\u304d\u305f\u306e\u3067\u5909\u66f4\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<\/p>\n<p>#117138\u3067 job controller \u306b&#8211;concurrent-job-syncs\u3082\u5897\u3048\u305f\u306e\u3067\u4ee5\u4e0b\u306e 2 \u3064\u306e\u30d5\u30e9\u30b0\u304c Job \u306e Controller \u7528\u306bkube-controller-manager\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n<p>&#8211;concurrent-cron-job-sync\u3000(default 5)<br \/>\n&#8211;concurrent-job-syncs\u3000(default 5)<\/p>\n<p>Pods \u306e podgc \u3092 PodReplacementPolicy \u304b PodDisruption \u3067\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#118772, @kannon92) [sig\/apps,sig\/testing]<\/p>\n<p>attach detach controller \u306e attachdetach_controller_forced_detaches \u306e\u30e1\u30c8\u30ea\u30af\u30b9\u306b reason \u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002(#119185, @xing-yang) [sig\/storage,sig\/apps]<\/p>\n<p>pod hostNetwork field selector \u306e\u30b5\u30dd\u30fc\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 (#110477, @halfcrazy) [SIG Apps and Node] [sig\/node,sig\/apps]<\/p>\n<p>PodRecreationPolicy \u304c\u5b9f\u88c5\u3055\u308c\u3066\u3053\u3068\u306b\u3088\u308a\u3001\u65e2\u306b\u5b58\u5728\u3057\u3066\u3044\u308b Pod \u304c\u5b8c\u5168\u306b\u7d42\u4e86\u3059\u308b\u307e\u3067\u3001\u65b0\u3057\u3044 Pod \u306e\u4f5c\u6210\u3092\u5f85\u3064\u3053\u3068\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002 (#117015, @kannon92) [sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>Dynamic resource allocation: claim \u304c wait for first consumer allocation (\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u52d5\u4f5c) \u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001 pod \u304c\u4f7f\u7528\u3057\u305f\u5f8c\u306b\u5272\u308a\u5f53\u3066\u304c\u89e3\u9664\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30dd\u30c3\u30c9\u304c\u4ee5\u524d\u306e\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u6c7a\u5b9a\u306e\u5f71\u97ff\u3092\u53d7\u3051\u305a\u3001\u672c\u5f53\u306b\u5fc5\u8981\u3067\u306a\u3044\u9650\u308a\u30ea\u30bd\u30fc\u30b9\u304c\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u307e\u307e\u306b\u306a\u3089\u306a\u3044\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u307e\u3059\u3002 claim \u3078\u306e\u5272\u308a\u5f53\u3066\u3092\u7d99\u7d9a\u3057\u305f\u3044\u5834\u5408\u306f &#8220;immediate allocation.&#8221; \u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 (#118936, @pohly) [sig\/node,sig\/apps,sig\/testing]<\/p>\n<p>Kube-controller-manager: dynamic resource controller \u306f pod \u304c\u4f5c\u6210\u3055\u308c\u308b\u3068 scheduler \u304c\u7121\u8996\u3059\u308b\u3088\u3046\u306b\u51e6\u7406\u3057(spec.nodeName \u304c\u30bb\u30c3\u30c8\u3055\u308c\u308b) \u3057\u3001delayed resource claim allocation \u3092\u5b9f\u65bd\u3057 pod \u306e\u8981\u6c42\u3092\u4e88\u7d04\u3057\u307e\u3059\u3002 (#118209, @pohly) [SIG API Machinery, Apps, Auth, Node and Testing] [sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing]<\/p>\n<p>pod-security-admission \u306f contextual logging \u3092\u4f7f\u3046\u3088\u3046\u306b\u79fb\u884c\u3057\u307e\u3057\u305f\u3002(#114471, @Namanl2001) [SIG Apps and Auth] [sig\/auth,sig\/apps]<\/p>\n<p>Job controller (kube-controller-manager \u306b\u542b\u307e\u308c\u308b)\u306f contextual logging \u3092\u4f7f\u3046\u3088\u3046\u306b\u79fb\u884c\u3057\u307e\u3057\u305f\u3002(#116910, @fatsheep9146) [SIG API Machinery, Apps and Testing] [sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>EndpointSlice \u3068 EndpointSliceMirroring controllers (kube-controller-manager \u306b\u542b\u307e\u308c\u308b)\u306f contextual logging \u3092\u4f7f\u3046\u3088\u3046\u306b\u79fb\u884c\u3057\u307e\u3057\u305f\u3002(#115295, @Namanl2001) [SIG API Machinery, Apps, Network and Testing] [sig\/network,sig\/api-machinery,sig\/apps,sig\/testing]<\/p>\n<p>non-graceful node shutdown \u306f GA \u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#118228, @carlory) [sig\/storage,sig\/apps,sig\/testing]<\/p>\n<p>EndpointSlice reconciler \u306e\u65b0\u3057\u3044 staging repo \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002 (#118953, @mskrocki) [sig\/network,sig\/apps,sig\/release]<\/p>\n<p>Scheduler \u306f scheduling cycle \u304c\u59cb\u307e\u308b\u307e\u3067\u3001handlers \u306e\u540c\u671f\u5b8c\u4e86\u3092\u5f85\u3064\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#116729, @AxeZhan) [sig\/scheduling,sig\/apps,sig\/testing]<\/p>\n<p>webhook authorizers \u306b\u9001\u3089\u308c\u308b SubjectAccessReview \u306e\u30ea\u30af\u30a8\u30b9\u30c8\u306e spec.resourceAttributes.version \u304c\u672a\u8a2d\u5b9a\u306e\u5834\u5408\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 * \u8a2d\u5b9a\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#116937, @AxeZhan) [SIG Apps and Auth] [sig\/auth,sig\/apps]<\/p>\n<p>ExpandedDNSConfig feature \u304c GA \u306b\u306a\u308a\u307e\u3057\u305f\u3002 &#8216;ExpandedDNSConfig&#8217; feature \u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u30ed\u30c3\u30af\u3055\u308c v1.30 \u3067<br \/>\n\u524a\u9664\u4e88\u5b9a\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u660e\u793a\u7684\u306b\u6709\u52b9\u5316\u3057\u3066\u3044\u305f\u5834\u5408\u306f\u305d\u306e\u8a2d\u5b9a\u3092\u524a\u9664\u3057\u3066\u304f\u3060\u3055\u3044\u3002(#116741, @gjkim42) [SIG Apps, Network and Node] [sig\/network,sig\/node,sig\/apps]<\/p>\n<p>scheduler interface \u3068 cache methods \u304c contextual logging \u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002 (#116849, @mengjiao-liu) [sig\/scheduling,sig\/apps,sig\/instrumentation,sig\/testing]<\/p>\n<p>pod \u304c\u5b8c\u4e86\u3082\u3057\u304f\u306f\u5b9f\u884c\u3055\u308c\u306a\u304f\u306a\u3063\u305f\u5834\u5408\u306b ResourceClaims \u306f\u4ed6\u306e Pod \u304c\u518d\u5229\u7528\u3059\u308b\u304b\u524a\u9664\u3055\u308c\u307e\u3059\u3002 (#118817, @pohly) [sig\/node,sig\/api-machinery,sig\/auth,sig\/apps,sig\/testing]<\/p>\n<p>RetroactiveDefaultStorageClass feature \u304c stable \u306b\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9\u5316\u3055\u308c\u307e\u3059\u3002 (#118102, @RomanBednar) [sig\/storage,sig\/apps,sig\/testing]<\/p>\n<p>\u5168\u3066\u306e Pod \u306e delete \u306e\u6319\u52d5\u3092\u30ab\u30a6\u30f3\u30c8\u3059\u308b force_delete_pods_total \u3068 force_delete_pod_errors_total \u306e\u30e1\u30c8\u30ea\u30af\u30b9\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 (#118480, @carlory) [sig\/apps]<\/p>\n<h3>\u6587\u4ef6\uff08\u6587\u6863\u6539\u8fdb\uff09<\/h3>\n<ul class=\"post-ul\">\u30dc\u30ea\u30e5\u30fc\u30e0\u4f5c\u6210\u3092\u5f85\u6a5f\u4e2d\u306e\u6642\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u660e\u78ba\u5316\u3057\u307e\u3057\u305f\u3002(#118262, @torredil) [SIG Apps and Storage] [sig\/storage,sig\/apps]<\/ul>\n<h3>\u9519\u8bef\u6216\u56de\u5f52 (Bug or Regression)<\/h3>\n<p>\u524a\u9664\u3055\u308c\u305f pod \u306e backoff delay \u3092\u3088\u308a\u6b63\u78ba\u306b\u8a08\u7b97\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#118413, @mimowo) [SIG Apps] [sig\/apps]<\/p>\n<p>\u5b64\u7acb\u3057\u305f Pod \u304c\u767a\u751f\u3059\u308b\u3053\u3068\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u5168\u3066\u306e Pod \u306e finalizers \u304c\u524a\u9664\u3055\u308c\u305f\u3068\u304d\u306b Job \u304c\u5b8c\u4e86\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#119159, @alculquicondor) [sig\/apps,sig\/testing]<\/p>\n<p>Job status \u66f4\u65b0\u304c 1s \u3067\u30d0\u30c3\u30c1\u3067\u66f4\u65b0\u3055\u308c\u308b\u3053\u3068\u3092\u4fdd\u8a3c\u3057\u307e\u3059\u3002\u3053\u306e\u4fee\u6b63\u306b\u3088\u308a\u5373\u6642\u306b\u5b8c\u4e86\u3057\u305fPod\u304c\u30c8\u30ea\u30ac\u30fc\u3068\u306a\u308a\u3001 non-batched Job\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u304c\u66f4\u65b0\u3055\u308c\u308b\u4e0d\u904b\u306a\u30b7\u30ca\u30ea\u30aa\u304c\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002 (#118470, @mimowo) [SIG Apps] [sig\/apps]<\/p>\n<p>Parallel \u30e2\u30fc\u30c9\u304c\u6709\u52b9\u5316\u3055\u308c\u3066\u3044\u308b\u6642\u306e StatefulSet \u306e\u4f5c\u6210\u304c\u65e9\u304f\u306a\u308a\u307e\u3059\u3002 (#117865, @aleksandra-malinowska) [sig\/apps]<\/p>\n<p>AddHints \u3068 SetNodes \u304c\u540c\u6642\u306b\u547c\u3073\u51fa\u3055\u308c\u305f\u3068\u304d\u306e TopologyCache \u306e\u7af6\u5408\u304c\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\u3002(#117249, @tnqn) [SIG Apps and Network] [sig\/network,sig\/apps]<\/p>\n<p>\u30ce\u30fc\u30c9\u4f5c\u6210\u5f8c\u306b topology.kubernetes.io\/zone \u306e\u30e9\u30d9\u30eb\u304c\u8ffd\u52a0\u3055\u308c\u305f\u5834\u5408\u306b Topology Aware Hints \u304c\u3046\u307e\u304f\u6a5f\u80fd\u3057\u306a\u3044\u4ef6\u3092\u4fee\u6b63\u3057\u307e\u3057\u305f\u3002 (#117245, @tnqn) [sig\/network,sig\/apps]<\/p>\n<p>node \u4f5c\u6210\u5f8c\u306b cloud provider \u3068\u304b\u304c topology.kubernetes.io\/zone \u306e\u30e9\u30d9\u30eb\u3092\u5f8c\u3067\u8ffd\u52a0\u3057\u305f\u6642\u306b kube-controller-manager \u306e\u30ea\u30b9\u30bf\u30fc\u30c8\u304b\u3001Node events \u304c\u66f4\u65b0\u3055\u308c\u308b\u307e\u3067 TopologyAwareHint \u306b\u53cd\u6620\u3055\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u554f\u984c\u306b\u306a\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u4ed6\u306e\u30de\u30a4\u30ca\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u3082\u30d0\u30c3\u30af\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Job pod failure policy \u3092\u5229\u7528\u3057\u305f\u969b\u306e backoff delay \u306e\u8a08\u7b97\u3092\u4fee\u6b63\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u306b\u3088\u308a\u3001 backoffLimit counter \u304b\u3089\u7121\u8996\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u5931\u6557\u3057\u305f Pod \u304c backoff delay \u306e\u8a08\u7b97\u306b\u542b\u307e\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002(#119434, @mimowo) [sig\/apps]<\/p>\n<p>30 6-16\/4 * * 1-5 \u306e\u3088\u3046\u306b\u8907\u96d1\u306a\u30b9\u30b1\u30b8\u30e5\u30fc\u30eb\u3092\u8a2d\u5b9a\u3057\u305f\u969b\u306b cronjob controller \u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u3067\u304d\u308b\u3088\u3046\u306b\u4fee\u6b63\u3057\u307e\u3057\u305f\u3002(#118724, @soltysh) [sig\/apps]<\/p>\n<p>Daemonset controller \u306f terminal Pod (Failed\/Succeeded \u306e\u30d5\u30a7\u30a4\u30ba) \u306e\u3064\u3044\u3066\u3001VM preemptions \u3068\u660e\u3089\u304b\u306a\u5834\u5408\u304b Pod finalizers \u306b\u4ee3\u308f\u308a\u306e Pod \u3092\u4f5c\u6210\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#118716, @alculquicondor) [sig\/node,sig\/apps,sig\/testing]<\/p>\n<h3>\u5176\u4ed6\u4fee\u6b63<\/h3>\n<p>Job controller \u306e\u30d0\u30c3\u30c1\u306e\u540c\u671f\u547c\u3073\u51fa\u3057\u3092\u7121\u6761\u4ef6\u3067\u6709\u52b9\u5316\u3057\u307e\u3057\u305f\u3002(\u4ee5\u524d\u306f JobReadyPods feature \u304c\u6709\u52b9\u306e\u6642\u3060\u3051\u3067\u3057\u305f) \u307e\u305f\u3001Job controller \u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u306e backoff \u3068\u6700\u5927\u306e backoff \u306e\u5b9a\u6570\u304c\u305d\u308c\u305e\u308c 10s \u304b\u3089 1s \u3068 6min \u304b\u3089 1min \u306b\u5f15\u304d\u4e0b\u3052\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u6570\u5024\u306f Job controller \u304c\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306b\u6b21\u306e backoff delay \u3092\u6c7a\u5b9a\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002(#118615, @mimowo) [SIG Apps and Testing] [sig\/apps,sig\/testing]<\/p>\n<p>backoff \u306e\u3068\u3053\u308d\u306e\u5909\u66f4\u5185\u5bb9\u304c\u5206\u304b\u308a\u306b\u304f\u3044\u306e\u3067\u88dc\u8db3\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002Job \u3067\u7ba1\u7406\u3057\u3066\u308b Pod \u304c\u5931\u6557\u3057\u305f\u6642\u306b\u65b0\u3057\u3044 Pod \u3092\u518d\u4f5c\u6210\u3059\u308b\u3068\u304d\u306e backoff \u3068 Queue \u3092\u53d6\u308a\u306b\u3044\u304f\u6642\u306b\u5931\u6557\u3057\u305f\u3068\u304d\u306e backoff \u3092\u540c\u3058\u5b9a\u6570\u3067\u7ba1\u7406\u3057\u3066\u3044\u305f\u306e\u3067\u305d\u308c\u305e\u308c\u304c\u5225\u3067\u7ba1\u7406\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3068\u3044\u3046\u8a71\u306b\u306a\u308a\u307e\u3059\u3002Queue \u3092\u53d6\u308a\u306b\u3044\u304f\u6642\u306e\u30ea\u30c8\u30e9\u30a4\u304c\u6700\u4f4e\u3067 10s \u306b\u306a\u3063\u3066\u3044\u308b\u306e\u306f\u3061\u3087\u3063\u3068\u9577\u304b\u3063\u305f\u306e\u3067\u6539\u5584\u3057\u307e\u3057\u305f\u3068\u3044\u3046\u5185\u5bb9\u3067\u3059\u3002<\/p>\n<p>## \u5143\u3005\u3001JobBackOff \u306e\u5b9a\u6570\u304c\u4e00\u7a2e\u985e\u3060\u3063\u305f<br \/>\n\/\/ DefaultJobBackOff is the default backoff period. Exported for tests.<br \/>\n&#8211; DefaultJobBackOff = 10 * time.Second<br \/>\n\/\/ MaxJobBackOff is the max backoff period. Exported for tests.<br \/>\n&#8211; MaxJobBackOff = 360 * time.Second<\/p>\n<p>## ApiBackOff \u3068 FailureBackOff \u3067\u305d\u308c\u305e\u308c\u5225\u306b\u5b9a\u7fa9\u3055\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002<br \/>\n\/\/ DefaultJobApiBackOff is the default backoff period. Exported for tests.<br \/>\n+ DefaultJobApiBackOff = 1 * time.Second<br \/>\n\/\/ MaxJobApiBackOff is the max backoff period. Exported for tests.<br \/>\n+ MaxJobApiBackOff = 60 * time.Second<br \/>\n\/\/ DefaultJobPodFailureBackOff is the default backoff period. Exported for tests.<br \/>\n+ DefaultJobPodFailureBackOff = 10 * time.Second<br \/>\n\/\/ MaxJobPodFailureBackOff is the max backoff period. Exported for tests.<br \/>\n+ MaxJobPodFailureBackOff = 360 * time.Second<\/p>\n<p>disruption controller (kube-controller-manager\u3000\u306b\u542b\u307e\u308c\u308b) \u306f contextual logging \u3092\u4f7f\u3046\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\u3002 (#119147, @mengjiao-liu) [SIG API Machinery, Apps, Instrumentation and Testing] [sig\/api-machinery,sig\/apps,sig\/instrumentation,sig\/testing]<\/p>\n<p>podgc controller \u3068\u4ed6\u306e\u6b8b\u308a\u306e\u30ed\u30b0\u30b3\u30fc\u30eb (kube-controller-manager\u3000\u306b\u542b\u307e\u308c\u308b)\u3092 contextual logging \u306b\u79fb\u884c\u3057\u307e\u3057\u305f\u3002 kube-controller-manager \u306e\u79fb\u884c\u306f\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 (#119250, @pohly) [SIG API Machinery, Apps, Cloud Provider, Instrumentation, Network, Storage and Testing] [sig\/network,sig\/storage,sig\/api-machinery,sig\/apps,sig\/instrumentation,sig\/testing,sig\/cloud-provider]<\/p>\n<p>\u4e00\u6642\u7684\u306a API \u30a8\u30e9\u30fc\u306e\u5f8c\u306e Job \u306e\u30d7\u30ed\u30bb\u30b9\u306e\u9045\u5ef6\u3092\u8efd\u6e1b\u3057\u307e\u3057\u305f\u3002 (#118759, @mimowo) [sig\/apps]<\/p>\n<h2>\u611f\u53d7<\/h2>\n<p>\u8fd9\u6b21\u4e3b\u8981\u5bf9 Job \u8fdb\u884c\u4e86\u51e0\u9879\u8f83\u5927\u7684\u66f4\u6539\u3002\u901a\u8fc7\u8c03\u67e5\u6dfb\u52a0\u4e86\u76f8\u5173 KEP \u7684\u539f\u56e0\uff0c\u4f3c\u4e4e\u662f\u7531\u4e8e\u5728 Tensorflow \u7b49\u4f7f\u7528\u6848\u4f8b\u4e2d\u51fa\u73b0\u4e86\u95ee\u9898\u3002\u53ef\u80fd\u7684\u80cc\u666f\u662f\uff0c\u9700\u8981\u5728 Kubernetes \u4e0a\u8fd0\u884c\u9700\u8981 GPU \u7684 Job \u7684\u4f7f\u7528\u6848\u4f8b\u589e\u52a0\u4e86\uff0c\u6240\u4ee5\u76f8\u5173\u95ee\u9898\u4e5f\u589e\u52a0\u4e86\u3002\u6211\u8ba4\u4e3a\u8fd9\u79cd\u8d8b\u52bf\u5c06\u4f1a\u7ee7\u7eed\u4e0b\u53bb\uff0c\u6240\u4ee5\u6211\u8ba4\u4e3a\u5728 Job \u65b9\u9762\u8fd8\u4f1a\u7ee7\u7eed\u6dfb\u52a0\u65b0\u529f\u80fd\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u672c\u9875\u9762\u603b\u7ed3\u4e86\u4e0eKubernetes v1.28\u4e2d\u7684SIG-Apps\u76f8\u5173\u7684\u53d8\u66f4\u5185\u5bb9\u3002 https:\/\/gi [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-36099","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-\u7248\u672c\uff1a-sig-apps-\u7684\u53d8\u66f4\u5185\u5bb9\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u672c\u9875\u9762\u603b\u7ed3\u4e86\u4e0eKubernetes v1.28\u4e2d\u7684SIG-Apps\u76f8\u5173\u7684\u53d8\u66f4\u5185\u5bb9\u3002 https:\/\/gi [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-\u7248\u672c\uff1a-sig-apps-\u7684\u53d8\u66f4\u5185\u5bb9\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-02T01:22:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-29T08:20:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d275237434c4406c3bc7c\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u96c5, \u609f\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u96c5, \u609f\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/\",\"name\":\"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-02T01:22:40+00:00\",\"dateModified\":\"2024-04-29T08:20:42+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6\",\"name\":\"\u96c5, \u609f\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g\",\"caption\":\"\u96c5, \u609f\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-\u7248\u672c\uff1a-sig-apps-\u7684\u53d8\u66f4\u5185\u5bb9\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9","og_description":"\u9996\u5148 \u672c\u9875\u9762\u603b\u7ed3\u4e86\u4e0eKubernetes v1.28\u4e2d\u7684SIG-Apps\u76f8\u5173\u7684\u53d8\u66f4\u5185\u5bb9\u3002 https:\/\/gi [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-\u7248\u672c\uff1a-sig-apps-\u7684\u53d8\u66f4\u5185\u5bb9\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-02T01:22:40+00:00","article_modified_time":"2024-04-29T08:20:42+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d275237434c4406c3bc7c\/5-0.png"}],"author":"\u96c5, \u609f","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u96c5, \u609f","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"9 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/","name":"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-02T01:22:40+00:00","dateModified":"2024-04-29T08:20:42+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes 1.28 \u7248\u672c\uff1a SIG-Apps \u7684\u53d8\u66f4\u5185\u5bb9"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/f044a4b7fa4ee2701702942002419ca6","name":"\u96c5, \u609f","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e71a913e914f1aad1efc391f92084294bac54bc782acd289638580134cf667a6?s=96&d=mm&r=g","caption":"\u96c5, \u609f"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yawu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/kubernetes-1-28-%e7%89%88%e6%9c%ac%ef%bc%9a-sig-apps-%e7%9a%84%e5%8f%98%e6%9b%b4%e5%86%85%e5%ae%b9%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36099","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=36099"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36099\/revisions"}],"predecessor-version":[{"id":86340,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/36099\/revisions\/86340"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=36099"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=36099"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=36099"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}