{"id":35763,"date":"2023-11-21T17:45:00","date_gmt":"2024-02-29T16:50:15","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/"},"modified":"2024-05-04T10:09:09","modified_gmt":"2024-05-04T02:09:09","slug":"%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/","title":{"rendered":"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed"},"content":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u4e09\u90e8\u7cfb\u5217\u7684\u7b2c\u4e09\u7bc7\u3002\u524d\u9762\u7684\u4e24\u7bc7\u5982\u4e0b\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kubespray+Vagrant \u3067 \u304b\u3093\u305f\u3093 Kubernetes \u30c7\u30d7\u30ed\u30a4<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">K8s v1.24 \u306e non-graceful node shutdown \u3092\u8a66\u3059<\/ul>\n<h2>\u9996\u5148<\/h2>\n<p>\u6211\u5728\u4e0a\u4e00\u4e2a\u7248\u672c\u7684K8s v1.24\u4e0a\u624b\u52a8\u7ed9\u6545\u969c\u8282\u70b9\u6dfb\u52a0\u4e86node.kubernetes.io\/out-of-service taint\u6807\u8bb0\uff0c\u786e\u8ba4\u4e86StatefulSet\u7684PV\u9644\u52a0Pod\u4f1a\u88ab\u79fb\u52a8\u5230\u5176\u4ed6\u8282\u70b9\u3002\u4f46\u662f\uff0c\u4e3a\u4ec0\u4e48\u8981\u624b\u52a8\u64cd\u4f5c\u5462\uff1f\u8fd9\u6837\u505a\u5e76\u4e0d\u80fd\u7b97\u4f5c\u81ea\u52a8\u4fee\u590d\u3002<\/p>\n<p>\u8fd9\u662f\u51fa\u4e8e\u65e0\u5948\u7684\u539f\u56e0\u3002\u4f8b\u5982\uff0c\u8282\u70b9\u53d8\u4e3aNotReady\u7684\u539f\u56e0\u6709\u5f88\u591a\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ce\u30fc\u30c9\u306e\u96fb\u6e90\u304c OFF \u306b\u306a\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ce\u30fc\u30c9\u306e OS \u304c\u30d5\u30ea\u30fc\u30ba\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ef\u30fc\u30ab\u30fc\u30ce\u30fc\u30c9\u4e0a\u306e kubelet \u304c\u6b62\u307e\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ef\u30fc\u30ab\u30fc\u30ce\u30fc\u30c9\u3068\u30de\u30b9\u30bf\u30fc\u30ce\u30fc\u30c9\u9593\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u4e0d\u901a\u306b\u306a\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u30de\u30b9\u30bf\u30fc\u30ce\u30fc\u30c9\u4e0a\u306e apiserver \u306e\u30b5\u30fc\u30d0\u8a3c\u660e\u66f8\u306e\u66f4\u65b0\u304c\u30ef\u30fc\u30ab\u30fc\u30ce\u30fc\u30c9\u4e0a\u306b\u53cd\u6620\u3055\u308c\u3066\u3044\u306a\u3044<\/ul>\n<p>\u4ee5\u4e0b\u306b\u6319\u3052\u305f\u306e\u306f\u305f\u3060\u306e\u4f8b\u3067\u3059\u304c\u3001\u4ed6\u306b\u3082\u3055\u307e\u3056\u307e\u306a\u7406\u7531\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u3053\u308c\u3089\u306e\u4e2d\u306b\u306fPod\u304c\u7d99\u7d9a\u3057\u3066\u7a3c\u50cd\u53ef\u80fd\u306a\u30b1\u30fc\u30b9\u3082\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u3001k8s\u4e0a\u3067\u30ce\u30fc\u30c9\u306e\u72b6\u614b\u304cNotReady\u306b\u306a\u3063\u3066\u3044\u308b\u3060\u3051\u3067\u306f\u3001\u30ef\u30fc\u30ab\u30fc\u30ce\u30fc\u30c9\u4e0a\u306ePod\u304c\u672c\u5f53\u306b\u505c\u6b62\u3057\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u306f\u5206\u304b\u308a\u307e\u305b\u3093\u3002\u3082\u3057\u969c\u5bb3\u304c\u767a\u751f\u3057\u305f\u30ce\u30fc\u30c9\u4e0a\u3067\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5f71\u97ff\u3092\u4e0e\u3048\u306a\u3044Pod\u304c\u7a3c\u50cd\u3057\u7d9a\u3051\u3066\u304a\u308a\u3001PV\uff08\u6c38\u7d9a\u30dc\u30ea\u30e5\u30fc\u30e0\uff09\u306e\u30c7\u30fc\u30bf\u3092\u66f4\u65b0\u3057\u7d9a\u3051\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u306e\u307e\u307e\u653e\u7f6e\u3057\u305f\u307e\u307e\u5225\u306e\u30ce\u30fc\u30c9\u3067\u540c\u3058PV\u3092\u4f7f\u7528\u3059\u308bPod\u3092\u4f5c\u6210\u3059\u308b\u3068\u3001PV\u306e\u30c7\u30fc\u30bf\u304c\u7834\u58ca\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u3092\u56de\u907f\u3059\u308b\u306b\u306f\u3001<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5c06Kubernetes\u96c6\u7fa4\u5916\u90e8\u7684\u8fd0\u7ef4\u76d1\u89c6\u7cfb\u7edf\u521b\u5efa\u4e00\u4e2a\u673a\u5236\uff0c\u7528\u4e8e\u5f3a\u5236\u505c\u6b62\u6545\u969c\u8282\u70b9\uff08\u6216\u8005\u7531\u8fd0\u7ef4\u4eba\u5458\u624b\u52a8\u505c\u6b62\uff09\u3002<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\u7c7b\u4f3cPacemaker\u7684STONITH\u8bbe\u5907\uff0c\u5b9e\u73b0Kubernetes\u81ea\u8eab\u5f3a\u5236\u505c\u6b62\uff08\u6216\u5b8c\u5168\u9694\u79bb\uff09\u6545\u969c\u8282\u70b9\u7684\u529f\u80fd\uff08Fencing\uff09\u3002<\/ol>\n<p>\u9700\u8981\u6267\u884c\u5176\u4e2d\u4e00\u79cd\u64cd\u4f5c\u6765\u5f7b\u5e95\u505c\u6b62\u6545\u969c\u8282\u70b9\uff0c\u5e76\u786e\u4fdd\u66f4\u65b0\u7edd\u5bf9\u4e0d\u4f1a\u53d1\u751f\u3002<br \/>\n\u5728 KEP 2268: \u975e\u4f18\u96c5\u8282\u70b9\u5173\u95ed\u4e2d\uff0c\u6211\u4eec\u51b3\u5b9a\u4e0d\u5b9e\u73b0\u5bf9 Kubernetes \u672c\u8eab\u7684\u56f4\u680f\u529f\u80fd\uff0c\u800c\u662f\u5c06\u5176\u59d4\u6258\u7ed9\u7cfb\u7edf\u7ba1\u7406\u5458\u6216\u5916\u90e8\u7cfb\u7edf\uff08=1\uff09\u3002\u6b64\u5916\uff0c\u5728 KEP \u4e2d\u63d0\u51fa\u4e86 Node Fencing \uff08=2\uff09\u4f5c\u4e3a\u66ff\u4ee3\u65b9\u6848\uff0c\u5e76\u5728\u672c KEP \u4e2d\u89e3\u91ca\u4e86\u4e0d\u91c7\u7528\u6b64\u65b9\u6cd5\u7684\u539f\u56e0\u3002<\/p>\n<blockquote><p>\u8fd9\u79cd\u65b9\u6cd5\u4f5c\u4e3a\u4e00\u79cd\u6811\u5185\u89e3\u51b3\u65b9\u6848\u4f3c\u4e4e\u8fc7\u4e8e\u4fb5\u5165\u6027\u3002\u7531\u4e8e\u8fd9\u4e2a KEP \u7684\u8303\u56f4\u88ab\u7f29\u5c0f\u5230\u5904\u7406\u5b9e\u9645\u8282\u70b9\u5173\u673a\u60c5\u666f\uff0c\u6211\u4eec\u4e0d\u9700\u8981\u8282\u70b9\u9694\u79bb\u7684\u65b9\u6cd5\u3002\u6211\u8ba4\u4e3a\u5728\u8fd9\u4e2a KEP \u4e2d\u6240\u63d0\u51fa\u7684\u65b9\u5f0f\u4e5f\u4e0d\u4f1a\u59a8\u788d\u6211\u4eec\u5c06\u6765\u652f\u6301\u8282\u70b9\u5206\u533a\u60c5\u51b5\u3002\u5728\u63d0\u8bae\u7684\u89e3\u51b3\u65b9\u6848\u5b9e\u65bd\u4e4b\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u91cd\u65b0\u8003\u8651\u8fd9\u79cd\u65b9\u6cd5\u3002<\/p><\/blockquote>\n<p>\u56e0\u6b64\uff0c\u6211\u5728\u5bfb\u627e\u4ee3\u66ffKubernetes\u4e2d\u51fa\u73b0NotReady\u8282\u70b9\u7684Fencing OSS\u65f6\uff0c\u627e\u5230\u4e86\u4ee5\u4e0b\u9009\u9879\u3002<\/p>\n<p>kube-fencing<\/p>\n<p>Pacemaker \u3067\u3082\u4f7f\u308f\u308c\u3066\u3044\u308b fence-agents \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u3002\u7269\u7406\u30b5\u30fc\u30d0\u3084\u5404\u7a2e\u30cf\u30a4\u30d1\u30fc\u30d0\u30a4\u30b6\u4e0a\u306e VM \u3092\u5f37\u5236\u7684\u306b\u505c\u6b62\u30fb\u518d\u8d77\u52d5\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>node-fencing<\/p>\n<p>\u7531\u4e8e\u4e2a\u4eba\u8ba4\u4e3a kube-fencing \u770b\u8d77\u6765\u6b63\u5408\u9002\uff0c\u6240\u4ee5\u6211\u5728\u81ea\u5df1\u7684\u8d26\u6237\u4e0a fork \u4e86 kube-fencing\uff0c\u5e76\u5b9e\u73b0\u4e86\u5728\u8282\u70b9\u5f3a\u5236\u505c\u6b62\u540e\u9644\u52a0 node.kubernetes.io\/out-of-service taint \u7684\u529f\u80fd\u3002<\/p>\n<h2>\u5b89\u88c5<\/h2>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5c06\u83b7\u53d6\u6539\u9020\u7248\u7684kube-fencing\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~$ git clone https:\/\/github.com\/yosshy\/kube-fencing.git\r\nyosshy@nuc2:~$ cd kube-fencing\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u5e94\u7528\u5305\u542b kube-fencing \u76f8\u5173\u8d44\u6e90\u7684\u6e05\u5355\u3002\u8bf7\u6ce8\u610f\uff0c\u547d\u540d\u7a7a\u95f4\u5c06\u8bbe\u7f6e\u4e3a kube-fencing\uff0c\u5982\u679c\u9700\u8981\uff0c\u8bf7\u4f7f\u7528helm\u6307\u5b9a\u5176\u4ed6\u547d\u540d\u7a7a\u95f4\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/kube-fencing$ kubectl apply -f deploy\/kube-fencing.yaml\r\nnamespace\/kube-fencing created\r\nserviceaccount\/fencing-controller created\r\nserviceaccount\/fencing-switcher created\r\nclusterrole.rbac.authorization.k8s.io\/fencing-controller created\r\nclusterrole.rbac.authorization.k8s.io\/fencing-switcher created\r\nclusterrolebinding.rbac.authorization.k8s.io\/fencing-controller created\r\nclusterrolebinding.rbac.authorization.k8s.io\/fencing-switcher created\r\nrole.rbac.authorization.k8s.io\/fencing-controller created\r\nrolebinding.rbac.authorization.k8s.io\/fencing-controller created\r\ndaemonset.apps\/fencing-switcher created\r\ndeployment.apps\/fencing-controller created\r\nyosshy@nuc2:~\/kube-fencing$\r\n<\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u6765\u67e5\u770b kube-fencing-agent \u5bb9\u5668\u7684 PodTemplate \u914d\u7f6e\u6587\u4ef6 deploy\/examples\/virtualbox.yaml\u3002<\/p>\n<pre class=\"post-pre\"><code>apiVersion: v1\r\nkind: PodTemplate\r\nmetadata:\r\n  name: fencing\r\ntemplate:\r\n  spec:\r\n    restartPolicy: OnFailure\r\n    containers:\r\n    - name: fence\r\n      image: ghcr.io\/yosshy\/kube-fencing\/kube-fencing-agent:latest\r\n      command: [\"fence_vbox\", \"-a\", \"172.18.8.1\", \"-l\", \"$(FENCING_USER)\", \"-p\", \"$(FENCING_PASSWORD)\", \"-n\", \"$(FENCING_ID)\", \"-o\", \"off\"]\r\n      env:\r\n      - name: FENCING_ID\r\n        valueFrom:\r\n          fieldRef:\r\n            fieldPath: metadata.annotations['fencing\/id']\r\n      - name: FENCING_USER\r\n        valueFrom:\r\n          secretKeyRef:\r\n            name: fencing-user\r\n            key: username\r\n      - name: FENCING_PASSWORD\r\n        valueFrom:\r\n          secretKeyRef:\r\n            name: fencing-user\r\n            key: password\r\n<\/code><\/pre>\n<p>kube-fencing \u5728 Fencing Job \u5bb9\u5668\u4e2d\u5b89\u88c5\u4e86 fence-agents \u5305\u4e2d\u7684\u5404\u79cd Fencing \u547d\u4ee4\uff0c\u5e76\u8bbe\u7f6e\u5728\u5bb9\u5668\u542f\u52a8\u65f6\u6267\u884c\u5176\u4e2d\u4e00\u4e2a\u547d\u4ee4\u3002\u5728\u6b64\u7528\u4e8e VirtualBox \u7684 PodTemplate \u4e2d\uff0c\u5c06\u6267\u884c fence_vbox \u547d\u4ee4\u3002<br \/>\n\u6b64\u5916\uff0c\u6211\u4eec\u5728\u8fd9\u91cc\u5c06\u4e3b\u673a\u7684 IP \u5730\u5740\u8bbe\u5b9a\u4e3a 172.18.8.1\u3002\u5982\u6709\u9700\u8981\uff0c\u8bf7\u5c06\u5176\u66f4\u6539\u4e3a\u5408\u9002\u7684 IP \u5730\u5740\u3002<br \/>\n\u4e3a\u4e86\u4ece Fencing Job \u5bb9\u5668\u8fdc\u7a0b\u767b\u5f55\u5230\u4e3b\u673a\uff0c\u6211\u4eec\u5c06\u5728\u540e\u7eed\u7684 secret \u4e2d\u6307\u5b9a\u5e10\u6237\u540d\u548c\u5bc6\u7801\u3002<br \/>\n\u6bcf\u4e2a\u8282\u70b9\u7684\u4e0d\u540c\u865a\u62df\u673a\u540d\u79f0\u5c06\u5728\u8282\u70b9\u7684 fencing\/id \u6ce8\u91ca\u4e2d\u6307\u5b9a\u3002<br \/>\nFencing \u6a21\u5f0f\u5df2\u8bbe\u7f6e\u4e3a off\uff08\u5f3a\u5236\u505c\u6b62\uff09\u3002\u5982\u679c\u5c06\u5176\u8bbe\u7f6e\u4e3a reboot\uff0c\u865a\u62df\u673a\u5c06\u91cd\u65b0\u542f\u52a8\uff0c\u4f46\u5728\u5b8c\u5168\u5220\u9664 Pod \u4e4b\u524d\uff0c\u5e0c\u671b\u6545\u969c\u8282\u70b9\u91cd\u65b0\u542f\u52a8\u5e76\u53d8\u4e3a Ready \u72b6\u6001\u5728\u5b89\u5168\u6027\u65b9\u9762\u5e76\u4e0d\u7406\u60f3\uff0c\u56e0\u6b64\u6211\u4eec\u6682\u65f6\u5c06\u5176\u8bbe\u7f6e\u4e3a off\uff08\u6545\u969c\u8282\u70b9\u7684\u505c\u6b62\u548c\u91cd\u65b0\u542f\u52a8\u53d6\u51b3\u4e8e\u7cfb\u7edf\u7684\u6545\u969c\u6062\u590d\u7b56\u7565\uff09\u3002<\/p>\n<p>\u6ce8\u518c\u7528\u4e8ekube-fencing-agent\u5bb9\u5668\u7684PodTemplate\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/kube-fencing$ kubectl -n kube-fencing apply -f deploy\/examples\/virtualbox.yaml \r\npodtemplate\/fencing created\r\nyosshy@nuc2:~\/kube-fencing$ \r\n<\/code><\/pre>\n<p>\u5728 PodTemplate \u4e2d\u8bbe\u7f6e\u8981\u4f7f\u7528\u7684 secret\u3002<\/p>\n<div>\n<div class=\"post-table\">secret\u540d\u8aac\u660e<code>username<\/code>\u30db\u30b9\u30c8\u4e0a\u3067 vagrant up \u3092\u5b9f\u884c\u3057\u305f\u30e6\u30fc\u30b6\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u540d<code>password<\/code>\u540c\u30d1\u30b9\u30ef\u30fc\u30c9<\/div>\n<\/div>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/kube-fencing$ kubectl -n kube-fencing create secret generic fencing-user --from-literal='username=yosshy' --from-literal='password=P@ssw0rd'\r\nsecret\/fencing-user created\r\nyosshy@nuc2:~\/kube-fencing$ \r\n<\/code><\/pre>\n<p>\u6211\u4eec\u5c06\u4e3a\u6bcf\u4e2a\u5de5\u4f5c\u8282\u70b9\u6ce8\u518c\u4e0e kube-fencing \u76f8\u5173\u7684\u6ce8\u91ca\u3002<br \/>\n\u73b0\u6709\u6ce8\u91ca\u7684\u8bf4\u660e\u5728\u8fd9\u91cc\uff0c\u4f46\u6211\u4eec\u5c06\u4f7f\u7528\u4ee5\u4e0b\u6ce8\u91ca\u3002<\/p>\n<div>\n<div class=\"post-table\">annotation\u540d\u8a2d\u5b9a\u5024\u8aac\u660e<code>fencing\/enabled<\/code><code>true<\/code>\u30ce\u30fc\u30c9\u3092 kube-fencing \u306e\u5bfe\u8c61\u306b\u3059\u308b\u304b\u3069\u3046\u304b\u3002\u65e2\u5b9a\u5024 <code>true<\/code><code>fencing\/id<\/code>\u5404\u30ce\u30fc\u30c9\u306e VM \u540dvboxmanage \u30b3\u30de\u30f3\u30c9\u306e\u5f15\u6570\u306b\u6307\u5b9a\u3059\u308bVM\u540d<code>fencing\/mode<\/code><code>taint<\/code>\u30ce\u30fc\u30c9 fencing \u5f8c\u306e Pod, PV \u306e\u6271\u3044\u3002<\/div>\n<\/div>\n<p>\u5c06\u8fd9\u4e9b\u914d\u7f6e\u8bbe\u7f6e\u5230 k8s-2\u3001k8s-3 \u8282\u70b9\u4e0a\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/kube-fencing$ vboxmanage list vms\r\n\"generic-ubuntu1804-virtualbox_1655701800174_67684\" {7e7d8758-7362-41f7-9c04-21d09c879c44}\r\n\"kubespray_k8s-1_1665804234747_39746\" {a3512cf1-2cd1-492b-9ec9-5b5bf517b583}\r\n\"kubespray_k8s-2_1665804309774_65270\" {28725bfd-7387-4489-9b09-57c5b8522f10}\r\n\"kubespray_k8s-3_1665804382129_19421\" {a9f75c2a-33b7-4a32-9b5e-f3a996ad3f2c}\r\nyosshy@nuc2:~\/kube-fencing$ kubectl annotate nodes k8s-2 fencing\/id=kubespray_k8s-2_1665804309774_65270\r\nnode\/k8s-2 annotated\r\nyosshy@nuc2:~\/kube-fencing$ kubectl annotate nodes k8s-2 fencing\/mode=taint\r\nnode\/k8s-2 annotated\r\nyosshy@nuc2:~\/kube-fencing$ kubectl annotate nodes k8s-3 fencing\/id=kubespray_k8s-3_1665804382129_19421\r\nnode\/k8s-3 annotated\r\nyosshy@nuc2:~\/kube-fencing$ kubectl annotate nodes k8s-3 fencing\/mode=taint\r\nnode\/k8s-3 annotated\r\nyosshy@nuc2:~\/kube-fencing$ \r\n<\/code><\/pre>\n<p>\u51c6\u5907\u5de5\u4f5c\u5df2\u7ecf\u5b8c\u6210\u3002<\/p>\n<h2>\u6211\u8a66\u8457\u770b\u770b\u3002<\/h2>\n<p>\u4e0a\u6b21\u6211\u4eec\u5728\u8282\u70b9\u4e0a\u901a\u8fc7 VM \u6682\u505c\u6765\u8fdb\u884c\u865a\u62df\u6545\u969c\uff0c\u4f46\u8fd9\u6b21\u60f3\u8981\u901a\u8fc7 kube-fencing \u5b9e\u73b0 VM \u5173\u95ed\uff0c\u6240\u4ee5\u6211\u4eec\u5c06\u5c1d\u8bd5\u901a\u8fc7\u505c\u6b62 kubelet \u6765\u6a21\u62df\u6545\u969c\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/kube-fencing$ cd ~\/csi-driver-nfs\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl create ns kep2268\r\nnamespace\/kep2268 created\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl -n kep2268 apply -f deploy\/example\/statefulset.yaml \r\nstatefulset.apps\/statefulset-nfs created\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl get pods -n kep2268 -o wide \r\nNAME                READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES\r\nstatefulset-nfs-0   1\/1     Running   0          64s   10.233.66.9    k8s-3   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-1   1\/1     Running   0          58s   10.233.65.14   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-2   1\/1     Running   0          51s   10.233.64.8    k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-3   1\/1     Running   0          44s   10.233.66.10   k8s-3   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-4   1\/1     Running   0          38s   10.233.65.15   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-5   1\/1     Running   0          33s   10.233.64.9    k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-6   1\/1     Running   0          27s   10.233.66.11   k8s-3   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-7   1\/1     Running   0          20s   10.233.65.16   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nyosshy@nuc2:~\/csi-driver-nfs$ \r\n<\/code><\/pre>\n<p>\u6211\u51b3\u5b9a\u505c\u6b62K8S-3\u7684kubelet\u3002\u9996\u5148\uff0c\u6211\u4f1a\u786e\u8ba4\u8282\u70b9\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/csi-driver-nfs$ kubectl describe node k8s-3 \r\nName:               k8s-3\r\nRoles:              &lt;none&gt;\r\nLabels:             beta.kubernetes.io\/arch=amd64\r\n                    beta.kubernetes.io\/os=linux\r\n                    kubernetes.io\/arch=amd64\r\n                    kubernetes.io\/hostname=k8s-3\r\n                    kubernetes.io\/os=linux\r\nAnnotations:        csi.volume.kubernetes.io\/nodeid: {\"nfs.csi.k8s.io\":\"k8s-3\"}\r\n                    fencing\/enabled: true\r\n                    fencing\/id: kubespray_k8s-3_1665804382129_19421\r\n                    fencing\/mode: taint\r\n                    flannel.alpha.coreos.com\/backend-data: {\"VNI\":1,\"VtepMAC\":\"aa:d2:74:8e:8f:7b\"}\r\n                    flannel.alpha.coreos.com\/backend-type: vxlan\r\n                    flannel.alpha.coreos.com\/kube-subnet-manager: true\r\n                    flannel.alpha.coreos.com\/public-ip: 172.18.8.103\r\n                    kubeadm.alpha.kubernetes.io\/cri-socket: unix:\/\/\/\/var\/run\/containerd\/containerd.sock\r\n                    node.alpha.kubernetes.io\/ttl: 0\r\n                    volumes.kubernetes.io\/controller-managed-attach-detach: true\r\nCreationTimestamp:  Sat, 15 Oct 2022 12:46:47 +0900\r\nTaints:             &lt;none&gt;\r\n\uff08\u4e2d\u7565\uff09\r\n<\/code><\/pre>\n<p>\u6253\u5f00\u53e6\u4e00\u4e2a\u7ec8\u7aef\uff0c\u4f7f\u7528\u8be5\u7ec8\u7aef\u8fde\u63a5\u5230 k8s-3 \u8282\u70b9\uff0c\u5e76\u505c\u6b62 kubelet \u670d\u52a1\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~$ cd kubespray\r\nyosshy@nuc2:~\/kubespray$ vagrant ssh k8s-3\r\nLast login: Mon Oct 17 04:01:26 2022 from 10.0.2.2\r\n-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)\r\nvagrant@k8s-3:~$ sudo systemctl stop kubelet\r\nvagrant@k8s-3:~$ top\r\n<\/code><\/pre>\n<p>\u5728\u6700\u521d\u7684\u7ec8\u7aef\u4e0a\u76d1\u63a7k8s-3\u8282\u70b9\u7684\u72b6\u6001\u53d8\u5316\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/csi-driver-nfs$ kubectl get nodes -w\r\nNAME    STATUS   ROLES           AGE   VERSION\r\nk8s-1   Ready    control-plane   2d    v1.24.6\r\nk8s-2   Ready    &lt;none&gt;          2d    v1.24.6\r\nk8s-3   Ready    &lt;none&gt;          2d    v1.24.6\r\n\uff08\u4e2d\u7565\uff09\r\nk8s-3   NotReady   &lt;none&gt;          2d    v1.24.6\r\nk8s-3   NotReady   &lt;none&gt;          2d    v1.24.6\r\n\uff08^c \u3067\u4e2d\u65ad\uff09\r\n<\/code><\/pre>\n<p>\u5728\u8282\u70b9\u72b6\u6001\u53d8\u4e3aNotReady\u540e\uff0c\u7acb\u5373\u68c0\u67e5k8s-3\u7684\u8be6\u7ec6\u4fe1\u606f\uff08\u5982\u4e0b\u6240\u793a\uff09\u3002<\/p>\n<p>\u7531\u4e8e\u8282\u70b9\u505c\u673a\uff0c\u5c06\u81ea\u52a8\u9644\u52a0\u8282\u70b9\u4e0akubernetes.io\/unreachable:NoExecute\u548ckubernetes.io\/unreachable:NoSchedule\u6c61\u70b9\uff08\u7b26\u5408Kubernetes\u5148\u524d\u7684\u89c4\u8303\uff09\u3002\u6b64\u5916\uff0ckube-fencing-controller\u5df2\u6dfb\u52a0fencing\/state: started\u6ce8\u89e3\uff0c\u8868\u660e\u5df2\u521b\u5efaFencing Job\u4ecePodTemplate\u4e2d\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/csi-driver-nfs$ watch kubectl describe node k8s-3 \r\nEvery 2.0s: kubectl describe node k8s-3                                  nuc2: Mon Oct 17 13:03:47 2022\r\n\r\nName:               k8s-3\r\nRoles:              &lt;none&gt;\r\nLabels:             beta.kubernetes.io\/arch=amd64\r\n                    beta.kubernetes.io\/os=linux\r\n                    kubernetes.io\/arch=amd64\r\n                    kubernetes.io\/hostname=k8s-3\r\n                    kubernetes.io\/os=linux\r\nAnnotations:        csi.volume.kubernetes.io\/nodeid: {\"nfs.csi.k8s.io\":\"k8s-3\"}\r\n                    fencing\/enabled: true\r\n                    fencing\/id: kubespray_k8s-3_1665804382129_19421\r\n                    fencing\/mode: taint\r\n                    fencing\/state: started\r\n                    flannel.alpha.coreos.com\/backend-data: {\"VNI\":1,\"VtepMAC\":\"02:eb:a3:af:b2:d1\"}\r\n                    flannel.alpha.coreos.com\/backend-type: vxlan\r\n                    flannel.alpha.coreos.com\/kube-subnet-manager: true\r\n                    flannel.alpha.coreos.com\/public-ip: 172.18.8.103\r\n                    kubeadm.alpha.kubernetes.io\/cri-socket: unix:\/\/\/\/var\/run\/containerd\/containerd.sock\r\n                    node.alpha.kubernetes.io\/ttl: 0\r\n                    volumes.kubernetes.io\/controller-managed-attach-detach: true\r\nCreationTimestamp:  Sat, 15 Oct 2022 12:46:47 +0900\r\nTaints:             node.kubernetes.io\/unreachable:NoExecute\r\n                    node.kubernetes.io\/unreachable:NoSchedule\r\nUnschedulable:      false\r\nLease:\r\n<\/code><\/pre>\n<p>\u5f53 Fencing Job \u5b8c\u6210\u540e\uff0cfencing\/state \u5c06\u53d8\u4e3a fenced\uff08\u5982\u4e0b\u6240\u793a\uff09\u3002\u6b64\u65f6\u91cd\u65b0\u6253\u5f00\u7684\u7ec8\u7aef\u4e0a\u7684 SSH \u767b\u5f55\u5df2\u7ecf\u7ed3\u675f\uff0c\u8fd4\u56de\u5230\u539f\u59cb\u4e3b\u673a\u3002<br \/>\n\u540c\u65f6\uff0c\u901a\u8fc7\u6539\u8fdb\u7684 kube-fencing-controller \u81ea\u52a8\u6dfb\u52a0\u4e86 node.kubernetes.io\/out-of-service=nodeshutdown:NoExecute taint\u3002<\/p>\n<pre class=\"post-pre\"><code>Name:               k8s-3\r\nRoles:              &lt;none&gt;\r\nLabels:             beta.kubernetes.io\/arch=amd64\r\n                    beta.kubernetes.io\/os=linux\r\n                    kubernetes.io\/arch=amd64\r\n                    kubernetes.io\/hostname=k8s-3\r\n                    kubernetes.io\/os=linux\r\nAnnotations:        csi.volume.kubernetes.io\/nodeid: {\"nfs.csi.k8s.io\":\"k8s-3\"}\r\n                    fencing\/enabled: true\r\n                    fencing\/id: kubespray_k8s-3_1665804382129_19421\r\n                    fencing\/mode: taint\r\n                    fencing\/state: fenced\r\n                    flannel.alpha.coreos.com\/backend-data: {\"VNI\":1,\"VtepMAC\":\"02:eb:a3:af:b2:d1\"}\r\n                    flannel.alpha.coreos.com\/backend-type: vxlan\r\n                    flannel.alpha.coreos.com\/kube-subnet-manager: true\r\n                    flannel.alpha.coreos.com\/public-ip: 172.18.8.103\r\n                    kubeadm.alpha.kubernetes.io\/cri-socket: unix:\/\/\/\/var\/run\/containerd\/containerd.sock\r\n                    node.alpha.kubernetes.io\/ttl: 0\r\n                    volumes.kubernetes.io\/controller-managed-attach-detach: true\r\nCreationTimestamp:  Sat, 15 Oct 2022 12:46:47 +0900\r\nTaints:             node.kubernetes.io\/out-of-service=nodeshutdown:NoExecute\r\n                    node.kubernetes.io\/unreachable:NoExecute\r\n                    node.kubernetes.io\/unreachable:NoSchedule\r\nUnschedulable:      false\r\nLease:\r\n<\/code><\/pre>\n<p>\u8ba9\u6211\u4eec\u786e\u8ba4\u4e00\u4e0b Pod \u662f\u5426\u5df2\u7ecf\u79fb\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>\uff08^c \u3067\u4e2d\u65ad\uff09\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl get pods -n kep2268 -o wide \r\nNAME                READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES\r\nstatefulset-nfs-0   1\/1     Running   0          12s     10.233.64.10   k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-1   1\/1     Running   0          5m53s   10.233.65.14   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-2   1\/1     Running   0          5m46s   10.233.64.8    k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-3   1\/1     Running   0          9s      10.233.65.19   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-4   1\/1     Running   0          5m33s   10.233.65.15   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-5   1\/1     Running   0          5m28s   10.233.64.9    k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-6   1\/1     Running   0          5s      10.233.64.11   k8s-1   &lt;none&gt;           &lt;none&gt;\r\nstatefulset-nfs-7   1\/1     Running   0          5m15s   10.233.65.16   k8s-2   &lt;none&gt;           &lt;none&gt;\r\nyosshy@nuc2:~\/csi-driver-nfs$ \r\n<\/code><\/pre>\n<p>\u6b63\u5728\u6839\u636e\u9884\u671f\uff0ck8s-3\u4e0a\u7684Pod\u6b63\u5728\u79fb\u52a8\u5230\u53e6\u4e00\u4e2a\u8282\u70b9\u4e0a\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u6765\u6536\u62fe\u6b8b\u5c40\u5427\u3002<\/p>\n<pre class=\"post-pre\"><code>yosshy@nuc2:~\/csi-driver-nfs$ vboxmanage list vms\r\n\"generic-ubuntu1804-virtualbox_1655701800174_67684\" {7e7d8758-7362-41f7-9c04-21d09c879c44}\r\n\"kubespray_k8s-1_1665804234747_39746\" {a3512cf1-2cd1-492b-9ec9-5b5bf517b583}\r\n\"kubespray_k8s-2_1665804309774_65270\" {28725bfd-7387-4489-9b09-57c5b8522f10}\r\n\"kubespray_k8s-3_1665804382129_19421\" {a9f75c2a-33b7-4a32-9b5e-f3a996ad3f2c}\r\nyosshy@nuc2:~\/csi-driver-nfs$ vboxmanage startvm kubespray_k8s-3_1665804382129_19421 --type headless\r\nWaiting for VM \"kubespray_k8s-3_1665804382129_19421\" to power on...\r\nVM \"kubespray_k8s-3_1665804382129_19421\" has been successfully started.\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl get nodes -w\r\nNAME    STATUS     ROLES           AGE   VERSION\r\nk8s-1   Ready      control-plane   2d    v1.24.6\r\nk8s-2   Ready      &lt;none&gt;          2d    v1.24.6\r\nk8s-3   NotReady   &lt;none&gt;          2d    v1.24.6\r\n\uff08\u4e2d\u7565\uff09\r\nk8s-3   Ready      &lt;none&gt;          2d    v1.24.6\r\nk8s-3   Ready      &lt;none&gt;          2d    v1.24.6\r\n\uff08^C \u3067\u4e2d\u65ad\uff09\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl  taint nodes k8s-3 node.kubernetes.io\/out-of-service=nodeshutdown:NoExecute-\r\nnode\/k8s-3 untainted\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl describe node k8s-3 \r\nName:               k8s-3\r\nRoles:              &lt;none&gt;\r\nLabels:             beta.kubernetes.io\/arch=amd64\r\n                    beta.kubernetes.io\/os=linux\r\n                    kubernetes.io\/arch=amd64\r\n                    kubernetes.io\/hostname=k8s-3\r\n                    kubernetes.io\/os=linux\r\nAnnotations:        csi.volume.kubernetes.io\/nodeid: {\"nfs.csi.k8s.io\":\"k8s-3\"}\r\n                    fencing\/enabled: true\r\n                    fencing\/id: kubespray_k8s-3_1665804382129_19421\r\n                    fencing\/mode: taint\r\n                    flannel.alpha.coreos.com\/backend-data: {\"VNI\":1,\"VtepMAC\":\"aa:d2:74:8e:8f:7b\"}\r\n                    flannel.alpha.coreos.com\/backend-type: vxlan\r\n                    flannel.alpha.coreos.com\/kube-subnet-manager: true\r\n                    flannel.alpha.coreos.com\/public-ip: 172.18.8.103\r\n                    kubeadm.alpha.kubernetes.io\/cri-socket: unix:\/\/\/\/var\/run\/containerd\/containerd.sock\r\n                    node.alpha.kubernetes.io\/ttl: 0\r\n                    volumes.kubernetes.io\/controller-managed-attach-detach: true\r\nCreationTimestamp:  Sat, 15 Oct 2022 12:46:47 +0900\r\nTaints:             &lt;none&gt;\r\n\uff08\u4e2d\u7565\uff09\r\nyosshy@nuc2:~\/csi-driver-nfs$ kubectl delete ns kep2268\r\nnamespace \"kep2268\" deleted\r\nyosshy@nuc2:~\/csi-driver-nfs$ \r\n<\/code><\/pre>\n<p>\u6c5a\u67d3\u6807\u8bb0\u5df2\u5b8c\u5168\u5220\u9664\uff0c\u5e76\u4e14\u5177\u5907\u81ea\u52a8\u65bd\u52a0\u7684fencing\/state\u6ce8\u91ca\u4e5f\u88ab\u5220\u9664\u3002\u73b0\u5728\u6062\u590d\u539f\u6837\u4e86\u3002<\/p>\n<h2>\u603b\u7ed3<\/h2>\n<p>\u5728\u672c\u6b21\u975e\u6b63\u5e38\u8282\u70b9\u5173\u95ed\u8fc7\u7a0b\u4e2d\uff0c\u7ba1\u7406\u5458\uff08\u6216\u8fd0\u8425\u7ba1\u7406\u7cfb\u7edf\uff09\u88ab\u89c6\u4e3a\u8d23\u4efb\u65b9\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">NotReady \u306b\u306a\u3063\u305f\u969c\u5bb3\u30ce\u30fc\u30c9\u304c\u96fb\u6e90 OFF \u3067\u3042\u308b\u4e8b\u3092\u4fdd\u8a3c<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\u96fb\u6e90 OFF \u306e\u969c\u5bb3\u30ce\u30fc\u30c9\u306b node.kubernetes.io\/out-of-service taint \u3092\u4ed8\u4e0e<\/ul>\n<p>\u6211\u4eec\u8bc1\u660e\u4e86\u901a\u8fc7\u6539\u88c5\u7248\u7684kube-fencing\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u64cd\u4f5c\u7684\u81ea\u52a8\u5316\u3002\u4f46\u662f\uff0c\u4f60\u89c9\u5f97\u8fd9\u4e2a\u529f\u80fd\u5728\u54ea\u4e9b\u4f7f\u7528\u6848\u4f8b\u4e2d\u662f\u6709\u7528\u7684\u5462\uff1f<\/p>\n<p>\u5982\u679c\u5728\u67d0\u4e2aIaaS\u4e0a\u5b58\u5728Kubernetes\u96c6\u7fa4\uff0c\u5219\u4f5c\u4e3aIaaS\u7684\u529f\u80fd\uff0c\u68c0\u6d4b\u3001\u5220\u9664\u548c\u91cd\u65b0\u521b\u5efa\u6545\u969c\u8282\u70b9VM\u76f8\u5bf9\u6bd4\u8f83\u5bb9\u6613\uff0c\u800c\u4e14\u5df2\u7ecf\u5728AWS EKS\u7b49\u5e73\u53f0\u4e0a\u5b9e\u73b0\u4e86\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u975e\u4f18\u96c5\u5730\u5173\u95ed\u8282\u70b9\u7684\u65b9\u6cd5\u5b9e\u9645\u4e0a\u662f\u4e0d\u5fc5\u8981\u7684\u3002<\/p>\n<p>\u53e6\u4e00\u65b9\u9762\uff0c\u5728\u4e0d\u4f7f\u7528IaaS\u7684\u672c\u5730\u73af\u5883\u3001\u8fb9\u7f18\u8ba1\u7b97\u7684\u8fb9\u7f18\u90e8\u5206\u3001\u5d4c\u5165\u5f0f\u5e94\u7528\u7b49\u76f8\u5bf9\u8f83\u5c0f\u89c4\u6a21\u7684\u670d\u52a1\u5668\u73af\u5883\u4e0a\u7684Kubernetes\u4e2d\uff0c\u91cd\u65b0\u521b\u5efa\u8fd9\u4e9b\u6545\u969c\u8282\u70b9\u5e76\u4e0d\u5bb9\u6613\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u76ee\u524d\u9700\u8981\u5229\u7528\u50cfkube-fencing\u8fd9\u6837\u7684\u589e\u5f3a\u89e3\u51b3\u65b9\u6848\u5b9e\u73b0Kubernetes\u96c6\u7fa4\u6545\u969c\u8282\u70b9\u7684\u81ea\u6211\u4fee\u590d\u3002<\/p>\n<p>\u6b64\u5916\uff0cKubernetes\u672c\u8eab\u53ef\u4ee5\u5b9e\u73b0\u7c7b\u4f3ckube-fencing\u7684\u529f\u80fd\uff0c\u4ece\u800c\u4ee5\u5355\u72ec\u7684Kubernetes\u5b9e\u73b0\u5b8c\u5168\u7684\u81ea\u6211\u4fee\u590d\u662f\u53ef\u884c\u7684\u3002\u5f53\u524d\u7684\u975e\u4f18\u96c5\u8282\u70b9\u5173\u95ed\u53ef\u4ee5\u770b\u4f5c\u662f\u5b9e\u73b0\u8fd9\u4e00\u76ee\u6807\u7684\u7b2c\u4e00\u6b65\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u7bc7\u6587\u7ae0\u662f\u4e09\u90e8\u7cfb\u5217\u7684\u7b2c\u4e09\u7bc7\u3002\u524d\u9762\u7684\u4e24\u7bc7\u5982\u4e0b\u3002 Kubespray+Vagrant \u3067 \u304b\u3093\u305f\u3093 Kuberne [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35763","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>\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed - 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\/\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316k8s-v1-24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\" \/>\n<meta property=\"og:description\" content=\"\u8fd9\u7bc7\u6587\u7ae0\u662f\u4e09\u90e8\u7cfb\u5217\u7684\u7b2c\u4e09\u7bc7\u3002\u524d\u9762\u7684\u4e24\u7bc7\u5982\u4e0b\u3002 Kubespray+Vagrant \u3067 \u304b\u3093\u305f\u3093 Kuberne [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316k8s-v1-24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-29T16:50:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-04T02:09:09+00:00\" \/>\n<meta name=\"author\" content=\"\u5b87, \u534e\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u5b87, \u534e\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 \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\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/\",\"name\":\"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-02-29T16:50:15+00:00\",\"dateModified\":\"2024-05-04T02:09:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\"}]},{\"@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\/513018e4e121d3add1b7c5de8be21458\",\"name\":\"\u5b87, \u534e\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g\",\"caption\":\"\u5b87, \u534e\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed - 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\/\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316k8s-v1-24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed","og_description":"\u8fd9\u7bc7\u6587\u7ae0\u662f\u4e09\u90e8\u7cfb\u5217\u7684\u7b2c\u4e09\u7bc7\u3002\u524d\u9762\u7684\u4e24\u7bc7\u5982\u4e0b\u3002 Kubespray+Vagrant \u3067 \u304b\u3093\u305f\u3093 Kuberne [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316k8s-v1-24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-02-29T16:50:15+00:00","article_modified_time":"2024-05-04T02:09:09+00:00","author":"\u5b87, \u534e","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u5b87, \u534e","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"8 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/","name":"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-02-29T16:50:15+00:00","dateModified":"2024-05-04T02:09:09+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/513018e4e121d3add1b7c5de8be21458"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528kube-fencing\u81ea\u52a8\u5316K8s v1.24\u7684\u975e\u5e73\u7f13\u8282\u70b9\u5173\u95ed"}]},{"@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\/513018e4e121d3add1b7c5de8be21458","name":"\u5b87, \u534e","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63cd45cbc05a35fc4ff7637a163c83c4962ef58d27472726c3a3e0c9c5194f0f?s=96&d=mm&r=g","caption":"\u5b87, \u534e"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yuhua\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8kube-fencing%e8%87%aa%e5%8a%a8%e5%8c%96k8s-v1-24%e7%9a%84%e9%9d%9e%e5%b9%b3%e7%bc%93%e8%8a%82%e7%82%b9%e5%85%b3%e9%97%ad%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\/35763","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=35763"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35763\/revisions"}],"predecessor-version":[{"id":97691,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/35763\/revisions\/97691"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=35763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=35763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=35763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}