<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OPSaid – Kubernetes</title><link>https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/</link><description>Recent content in Kubernetes on OPSaid</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: etcd</title><link>https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/etcd/</link><pubDate>Thu, 03 Aug 2023 09:42:05 +0800</pubDate><guid>https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/etcd/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>记录 etcd 相关的场景问题。&lt;/p>
&lt;h2 id="无法启动类">无法启动类&lt;/h2>
&lt;h3 id="received-signal-shutting-down">&amp;ldquo;received signal; shutting down&amp;rdquo;&lt;/h3>
&lt;ul>
&lt;li>关键日志&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;level&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;info&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;ts&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;2023-07-27T13:31:34.277Z&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;caller&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;rafthttp/stream.go:274&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;msg&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;established TCP streaming connection with remote peer&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;stream-writer-type&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;stream MsgApp v2&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;local-member-id&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;edacac26a3fb24b3&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;remote-peer-id&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;2c8b55a3459bb7ff&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;level&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;info&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;ts&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;2023-07-27T13:33:03.898Z&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;caller&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;osutil/interrupt_unix.go:64&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;msg&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;received signal; shutting down&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;signal&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;terminated&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">{&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;level&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;info&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;ts&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;2023-07-27T13:33:03.898Z&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;caller&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;embed/etcd.go:367&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;msg&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;closing etcd server&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;name&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;node3&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;data-dir&amp;#34;&lt;/span>:&lt;span style="color:#4e9a06">&amp;#34;/data/etcd/&amp;#34;&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;advertise-peer-urls&amp;#34;&lt;/span>:&lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://10.49.2.36:2380&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>,&lt;span style="color:#4e9a06">&amp;#34;advertise-client-urls&amp;#34;&lt;/span>:&lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://10.49.2.36:2379&amp;#34;&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">]}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>问题原因&lt;/li>
&lt;/ul>
&lt;p>在文件 &lt;code>/etc/containerd/config.toml&lt;/code> 中的 &lt;code>SystemdCgroup&lt;/code> 配置为 &lt;code>false&lt;/code> 了，与 &lt;code>kubelet&lt;/code> 中不同。&lt;/p>
&lt;ul>
&lt;li>解决步骤&lt;/li>
&lt;/ul>
&lt;p>更改配置，使用同 &amp;ldquo;kubelet&amp;rdquo; 一样的 cgroup 为 systemd&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ce5c00;font-weight:bold">[&lt;/span>plugins.&lt;span style="color:#4e9a06">&amp;#34;io.containerd.grpc.v1.cri&amp;#34;&lt;/span>.containerd.runtimes.runc.options&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">SystemdCgroup&lt;/span> &lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span> &lt;span style="color:#204a87">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="备份恢复类">备份恢复类&lt;/h2>
&lt;h3 id="控制节点-etcd-数据恢复">控制节点 etcd 数据恢复&lt;/h3>
&lt;ul>
&lt;li>登录故障节点，移除 etcd 静态 POD&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> /etc/kubernetes/manifests/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv etcd.yaml /usr/local/src/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>登录另外正常的 etcd 集群节点&lt;/li>
&lt;/ul>
&lt;p>查看成员列表&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ctr --namespace k8s.io run &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --rm &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --net-host &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --mount &lt;span style="color:#000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>bind,src&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,dst&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,options&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>rbind:ro &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> registry.cn-hangzhou.aliyuncs.com/kube-image-repo/etcd:v3.5.10 etcd-health &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --key /etc/kubernetes/pki/etcd/peer.key &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --cacert /etc/kubernetes/pki/etcd/ca.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --endpoints https://127.0.0.1:2379 &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> member list
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>移除异常的成员&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ctr --namespace k8s.io run &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --rm &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --net-host &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --mount &lt;span style="color:#000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>bind,src&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,dst&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,options&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>rbind:ro &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> registry.cn-hangzhou.aliyuncs.com/kube-image-repo/etcd:v3.5.10 etcd-health &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --key /etc/kubernetes/pki/etcd/peer.key &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --cacert /etc/kubernetes/pki/etcd/ca.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --endpoints https://127.0.0.1:2379 &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> member remove 63e2da0114a7b9b7
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>更改故障节点 etcd 作为新成员加入&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ctr --namespace k8s.io run &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --rm &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --net-host &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --mount &lt;span style="color:#000">type&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>bind,src&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,dst&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes,options&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>rbind:ro &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> registry.cn-hangzhou.aliyuncs.com/kube-image-repo/etcd:v3.5.10 etcd-health &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> etcdctl --cert /etc/kubernetes/pki/etcd/peer.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --key /etc/kubernetes/pki/etcd/peer.key &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --cacert /etc/kubernetes/pki/etcd/ca.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --endpoints https://127.0.0.1:2379 &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> member add node2 --peer-urls&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://192.168.201.122:2380&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ETCD_NAME&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;node2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ETCD_INITIAL_CLUSTER&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;node3=https://192.168.201.123:2380,node2=https://192.168.201.122:2380,node1=https://192.168.201.121:2380&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ETCD_INITIAL_ADVERTISE_PEER_URLS&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;https://192.168.201.122:2380&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ETCD_INITIAL_CLUSTER_STATE&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;existing&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>启动故障节点的 etcd 服务&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>--initial-cluster-state&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>new
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>更改为
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>--initial-cluster-state&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>existing
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: kube-apiserver</title><link>https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/kube-apiserver/</link><pubDate>Mon, 06 May 2024 14:05:48 +0800</pubDate><guid>https://opsaid.net/docs/operations-practice/troubleshooting/kubernetes/kube-apiserver/</guid><description>
&lt;h2 id="简要概述">简要概述&lt;/h2>
&lt;p>记录 kube-apiserver 相关问题。&lt;/p>
&lt;h2 id="无法启动类">无法启动类&lt;/h2>
&lt;h3 id="dial-tcp-1270018080-connect-connection-refused">&amp;ldquo;dial tcp 127.0.0.1:8080: connect: connection refused&amp;rdquo;&lt;/h3>
&lt;ul>
&lt;li>关键日志&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>root@k8s/etc/kubernetes/manifests# kubectl get nodes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:01:41.668372 &lt;span style="color:#0000cf;font-weight:bold">300010&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#4e9a06">&amp;#39;t get current server API group list: Get &amp;#34;http://localhost:8080/api?timeout=32s&amp;#34;: dial tcp 127.0.0.1:8080: connect: connection refused
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">E0803 10:01:41.669287 300010 memcache.go:265] couldn&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;http://localhost:8080/api?timeout=32s&amp;#34;&lt;/span>: dial tcp 127.0.0.1:8080: connect: connection refused
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:01:41.671326 &lt;span style="color:#0000cf;font-weight:bold">300010&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#4e9a06">&amp;#39;t get current server API group list: Get &amp;#34;http://localhost:8080/api?timeout=32s&amp;#34;: dial tcp 127.0.0.1:8080: connect: connection refused
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">E0803 10:01:41.672078 300010 memcache.go:265] couldn&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;http://localhost:8080/api?timeout=32s&amp;#34;&lt;/span>: dial tcp 127.0.0.1:8080: connect: connection refused
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:01:41.674043 &lt;span style="color:#0000cf;font-weight:bold">300010&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#a40000">&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;http://localhost:8080/api?timeout=32s&amp;#34;&lt;/span>: dial tcp 127.0.0.1:8080: connect: connection refused
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The connection to the server localhost:8080 was refused - did you specify the right host or port?
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>root@k8s/etc/kubernetes/manifests#
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>问题原因&lt;/li>
&lt;/ul>
&lt;p>新版不在开放本地的 &amp;ldquo;127.0.0.1:8080&amp;rdquo; 端口，需配置下 kubeconfig 路径，如：$HOME/.kube/config&lt;/p>
&lt;h3 id="failed-to-verify-certificate-x509">&amp;ldquo;failed to verify certificate: x509&amp;rdquo;&lt;/h3>
&lt;ul>
&lt;li>关键日志&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>root@k8s/etc/kubernetes/manifests# kubectl get nodes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:27:46.079494 &lt;span style="color:#0000cf;font-weight:bold">300470&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#4e9a06">&amp;#39;t get current server API group list: Get &amp;#34;https://10.49.2.108:6443/api?timeout=32s&amp;#34;: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">E0803 10:27:46.094227 300470 memcache.go:265] couldn&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;https://10.49.2.108:6443/api?timeout=32s&amp;#34;&lt;/span>: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:27:46.105654 &lt;span style="color:#0000cf;font-weight:bold">300470&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#4e9a06">&amp;#39;t get current server API group list: Get &amp;#34;https://10.49.2.108:6443/api?timeout=32s&amp;#34;: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">E0803 10:27:46.117784 300470 memcache.go:265] couldn&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;https://10.49.2.108:6443/api?timeout=32s&amp;#34;&lt;/span>: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>E0803 10:27:46.127952 &lt;span style="color:#0000cf;font-weight:bold">300470&lt;/span> memcache.go:265&lt;span style="color:#ce5c00;font-weight:bold">]&lt;/span> couldn&lt;span style="color:#a40000">&amp;#39;&lt;/span>t get current server API group list: Get &lt;span style="color:#4e9a06">&amp;#34;https://10.49.2.108:6443/api?timeout=32s&amp;#34;&lt;/span>: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Unable to connect to the server: tls: failed to verify certificate: x509: certificate signed by unknown authority
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>root@k8s/etc/kubernetes/manifests#
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>问题原因&lt;/li>
&lt;/ul>
&lt;p>在 &amp;ldquo;$HOME/.kube/config&amp;rdquo; 中内嵌的 ca 证书不对，检查方式：&lt;/p>
&lt;ol>
&lt;li>获取 &amp;ldquo;$HOME/.kube/config&amp;rdquo; 中 &amp;ldquo;certificate-authority-data&amp;rdquo; 内容，使用 &lt;code>base64&lt;/code> 反解：&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">echo&lt;/span> -n &lt;span style="color:#4e9a06">&amp;#39;${certificate-authority-data}&amp;#39;&lt;/span> &lt;span style="color:#000;font-weight:bold">|&lt;/span> base64 -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="资源无法释放">资源无法释放&lt;/h2>
&lt;h3 id="命名空间无法删除">命名空间无法删除&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>NAME STATUS AGE
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>argo Active 3d21h
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>argo-events Terminating 6d
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>argocd Active 3d22h
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>命名空间 &amp;ldquo;argo-events&amp;rdquo; 无法删除，持续处于 &amp;ldquo;Terminating&amp;rdquo; 状态，这种情况一般是因为相关的 crd 资源没有删除干净，此时通过查询 etcd 中键值。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">ETCDCTL_API&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#0000cf;font-weight:bold">3&lt;/span> etcdctl &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --endpoints https://127.0.0.1:2379 &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --cacert&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes/pki/etcd/ca.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --cert&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes/pki/etcd/server.crt &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --key&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>/etc/kubernetes/pki/etcd/server.key &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> get / --prefix --keys-only &lt;span style="color:#000;font-weight:bold">|&lt;/span> grep argo-events
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/argoproj.io/eventbus/argo-events/default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/argoproj.io/eventsources/argo-events/oneops-syncmi-v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/argoproj.io/sensors/argo-events/log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterrolebindings/argo-events-binding
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterrolebindings/argo-events-webhook-binding
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterroles/argo-events-aggregate-to-admin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterroles/argo-events-aggregate-to-edit
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterroles/argo-events-aggregate-to-view
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterroles/argo-events-role
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/clusterroles/argo-events-webhook
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/kubernetes/fake/registry/namespaces/argo-events
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>通过键值可知还有哪些资源存在，此时只要把以下自定义资源移除，命名空间也就自动删除了。&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span># /kubernetes/fake/registry/argoproj.io/sensors/argo-events/log
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># /kubernetes/fake/registry/argoproj.io/eventsources/argo-events/oneops-syncmi-v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># /kubernetes/fake/registry/argoproj.io/eventbus/argo-events/default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ETCDCTL_API=3 etcdctl \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --endpoints https://127.0.0.1:2379 \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --cacert=/etc/kubernetes/pki/etcd/ca.crt \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --cert=/etc/kubernetes/pki/etcd/server.crt \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> --key=/etc/kubernetes/pki/etcd/server.key \
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> del /kubernetes/fake/registry/argoproj.io/eventbus/argo-events/default
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="基础配置更改">基础配置更改&lt;/h2>
&lt;h3 id="更换-apiservercrt-证书">更换 apiserver.crt 证书&lt;/h3>
&lt;p>因需更换 vip 等原因，需要对证书重新签发更换，可通过以下步骤。&lt;/p>
&lt;ul>
&lt;li>进入部署仓库&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87">cd&lt;/span> ./ansible
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>变更 vip 为新地址&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>vim group_vars/all.yaml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>......
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># 集群南北流量高可用的ip地址
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># 一般为vip，没有则设置为控制平面任意一个实际的ip地址
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>#apiserver_haip: 192.168.17.139
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apiserver_haip: 10.155.17.139
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>......
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>备份旧证书&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>mv roles/pki/files/apiserver/apiserver.crt roles/pki/files/apiserver/apiserver.crt.bak
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mv roles/pki/files/apiserver/apiserver.key roles/pki/files/apiserver/apiserver.key.bak
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>重新生成证书&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ansible-playbook -i hosts.ini deploy.yaml -t pki
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>检查证书是否符合期望&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>openssl x509 -in roles/pki/files/apiserver/apiserver.crt -noout -text &lt;span style="color:#000;font-weight:bold">|&lt;/span> less
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>循环切换节点使用新证书&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ansible-playbook -i hosts.ini deploy.yaml -t control,worker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>是否 /etc/hosts 绑定了域名&lt;/li>
&lt;/ul>
&lt;p>确认各节点上 /etc/hosts 是否静态配置了 vip ，如果有手工更改为最新地址下。&lt;/p>
&lt;ul>
&lt;li>重启 kube-apiserver 与各 kubelet 服务&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">for&lt;/span> i in &lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>kubectl get pods -n kube-system &lt;span style="color:#000;font-weight:bold">|&lt;/span> grep kube-apiserver &lt;span style="color:#000;font-weight:bold">|&lt;/span> awk &lt;span style="color:#4e9a06">&amp;#39;{ print $1 }&amp;#39;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">do&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kubectl delete pod &lt;span style="color:#000">$i&lt;/span> -n kube-system
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">done&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>ansible kube_control_plane,kube_node -i hosts.ini -m shell -a &lt;span style="color:#4e9a06">&amp;#34;systemctl restart kubelet&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>验证证书情况&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>kubeadm certs check-expiration
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>