乌市泽哥 发表于 2024-6-11 19:33:47

2024年Go最全Kubernetes 配置基本指南:关键集群设置_kubelet文件(4),2024

https://img-blog.csdnimg.cn/img_convert/5c6fb011624ad556cfbe86af9dae0b84.png
https://img-blog.csdnimg.cn/img_convert/d6dac363efcaa3abcbcd65128ab16df0.png
网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技能提升。
需要这份系统化的资料的朋友,可以添加戳这里获取
一个人可以走的很快,但一群人才能走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技能交换、学习资源、职场吐槽、大厂内推、口试辅导),让我们一起学习成长!
假如要与 etcd 组件交互,可以利用静态 pod YAML 中的详细信息。
比方,假如要备份 etcd,则需要知道 etcd 服务端点和相干证书,以便对 etcd 举行身份验证并创建备份。
假如打开 etcd.yaml 清单,可以查看全部与 etcd 相干的配置,如下所示。
https://img-blog.csdnimg.cn/img_convert/7ecd54f2c82bd71a84237d7add9b8e88.png
TLS 证书

在 Kubernetes 中,全部组件都通过 mTLS 相互通信。在 PKI 文件夹下,您将找到全部 TLS 证书和密钥。Kubernetes 控制平面组件利用这些证书举行身份验证并相互通信。
别的,尚有一个 etcd 子目次,此中包罗特定于 etcd 的证书和私钥。它们用于掩护 etcd 节点之间以及 API 服务器和 etcd 节点之间的通信。
下图显示了 PKI 文件夹的文件结构。
​https://img-blog.csdnimg.cn/img_convert/024c495ea1e1015d47144a7f7eb47cde.png
静态 Pod 清单引用此文件夹中所需的 TLS 证书和密钥。
当您利用 kubeadm 等工具在自托管集群上工作时,这些证书由该工具主动天生。在托管的 Kubernetes 集群中,云提供商负责管理控制平面组件,因此负责满足全部 TLS 要求。
但是,假如要设置用于生产的自承载聚集,则必须向组织的网络或安全团队请求这些证书。他们将天生由组织的内部证书颁发机构签名的这些证书,并将其提供给您。
kubeconfig文件

任何需要向 API 服务器举行身份验证的组件都需要 kubeconfig 文件。
全部集群 Kubeconfig 文件都存在于 **/etc/kubernetes** 文件夹(.conf 文件)中。您将找到以下文件。

[*]admin.conf
[*]controller-manager.conf
[*]kubelet.conf
[*]scheduler.conf
它包罗 API 服务器端点、集群 CA 证书、集群客户端证书和其他信息。
admin.conf 文件,这是最终用户用于访问 API 服务器以管理集群的管理 kubeconfig 文件。您可以利用此文件从远程工作站连接聚集。
Controller 管理器、调度器和 Kubelet 的 Kubeconfig 用于 API 服务器身份验证和授权。
比方,假如检查 Controller Manager 静态 Pod 清单文件,则可以看到 controller-manager.conf 已添加为 authentication 和 authorization 参数。
https://img-blog.csdnimg.cn/img_convert/1888e264542a0cf9eace30c6f2cd6e5c.png
Kubelet 配置

Kubelet 服务作为系统服务在全部集群节点上运行。
您可以在 /etc/systemd/system/kubelet.service.d 下查看 kubelet systemd 服务
以下是系统文件内容。

Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
我用粗体突出显示了两个紧张的 kubelet 配置。

[*]kubelet kubeconfig 文件:/etc/kubernetes/kubelet.conf
[*]kubelet 配置文件:/var/lib/kubelet/config.yaml
[*]EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
kubeconfig 文件将用于 API 服务器身份验证和授权。
/var/lib/kubelet/config.yaml 包罗全部与 kubelet 相干的配置。静态 Pod 清单元置作为 staticPodPath 参数的一部分添加。
staticPodPath: /etc/kubernetes/manifests
/var/lib/kubelet/kubeadm-flags.env 文件包罗容器运行时环境 Linux 套接字和基础结构容器(停息容器)映像。
比方,下面是利用 CRI-O 容器运行时的 kubelet 配置,如 Unix 套接字和 pause 容器镜像所示。
KUBELET_KUBEADM_ARGS="--container-runtime-endpoint=unix:///var/run/crio/crio.sock --pod-infra-container-image=registry.k8s.io/pa
pause 容器是一个最小的容器,它是第一个在 Kubernetes Pod 中启动的容器。然后,pause 容器的作用是生存同一 Pod 中全部其他容器的网络定名空间和其他共享资源。
假如你看一下托管的 k8s 集群中的 kubelet 配置,它看起来与 kubeadm 设置略有不同。
比方,下面是 AWS EKS 集群的 kubelet 服务文件。
https://img-blog.csdnimg.cn/img_convert/6a42658dd885901bc0c6a416d9a82d77.png
这里可以看到容器运行时是 containerd,它的 Unix 套接字标志直接添加到服务文件中
与 kubeadm 配置相比,kubelet kubeconfig 文件位于不同的目次中。
CoreDNS配置

CoreDNS插件组件处置惩罚集群DNS配置。
全部 CoreDNS 配置都是 kubesystem 定名空间中名为 CoreDNS 的 configmap 的一部分。
假如在 kube-system 定名空间中列出 Configmap,则可以看到 CoreDNS configmap。
kubectl get configmap --namespace=kube-system
https://img-blog.csdnimg.cn/img_convert/710777824b7c38dbe6204ec5ac3cbc58.png
利用以下下令查看 CoreDNS configmap 内容。
kubectl edit configmap coredns --namespace=kube-system
您将看到以下内容。
apiVersion: v1
data:
Corefile: |
    .:53 {
      errors
      health {
         lameduck 5s
      }
      ready
      kubernetes cluster.local in-addr.arpa ip6.arpa {
         pods insecure
         fallthrough in-addr.arpa ip6.arpa
         ttl 30
      }
      prometheus :9153
      forward . /etc/resolv.conf {
         max_concurrent 1000
      }
      cache 30
      loop
      reload
      loadbalance
    }
当涉及到 DNS 连接时,应用程序大概需要注意到:

[*]利用 Kubernetes 服务端点的内部服务。
[*]利用公共 DNS 终结点的公开可用服务。
[*]在混合云环境中,服务利用私有 DNS 端点托管在本地环境中。
假如您的用例需要自定义 DNS 服务器,比方,集群中的应用程序需要连接到本地数据中心的私有 DNS 端点,则可以将自定义 DNS 服务器添加到核心 DNS configmap 配置中。
比方,假设自定义DNS服务器IP是10.45.45.34,你的DNS后缀是 dns-onprem.com,我们必须添加一个块,如下所示。以便将与该域终结点相干的全部 DNS 请求转发到 10.45.45.34 DNS 服务器。
dns-onprem.com:53 {
    errors
    cache 30
    forward . 10.45.45.34
}
这是完整的 configmap 配置。
apiVersion: v1
data:
Corefile: |
    .:53 {
      errors
      health {
         lameduck 5s
      }
      ready
      kubernetes cluster.local in-addr.arpa ip6.arpa {
         pods insecure
         fallthrough in-addr.arpa ip6.arpa
         ttl 30
      }
      prometheus :9153
      forward . /etc/resolv.conf {
         max_concurrent 1000
      }
      cache 30
      loop
      reload
      loadbalance
    }
    dns-onprem.com:53 {    errors    cache 30    forward . 10.45.45.34!(https://img-blog.csdnimg.cn/img_convert/b10dda353255253dc6107177b3227537.png)!(https://img-blog.csdnimg.cn/img_convert/75618ccd7127fa7f061c2e5b6e245b43.png)**网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技能提升。****[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)****一个人可以走的很快,但一群人才能走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技能交换、学习资源、职场吐槽、大厂内推、口试辅导),让我们一起学习成长!**外链图片转存中...(img-5McQZWxg-1715704883324)]**网上学习资料一大堆,但假如学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技能提升。****[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618658159)****一个人可以走的很快,但一群人才能走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技能交换、学习资源、职场吐槽、大厂内推、口试辅导),让我们一起学习成长!**
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 2024年Go最全Kubernetes 配置基本指南:关键集群设置_kubelet文件(4),2024