Go最新Kubernetes 配置基本指南:关键集群设置_kubelet文件(3),Golang码农是如何进入腾讯的

12 篇文章 0 订阅
12 篇文章 0 订阅

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

├── etcd.yaml
├── kube-apiserver.yaml
├── kube-controller-manager.yaml
└── kube-scheduler.yaml


您可以从这些容器清单中获取这些组件的所有配置位置。


#### API 服务器配置


如果您查看 **`kube-apiserver.yaml`**,在[容器]( )规范下,您可以看到指向 TLS 证书的所有参数以及 API 服务器工作和与其他集群组件通信所需的其他参数。



apiVersion: v1
kind: Pod
metadata:
annotations:
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 172.31.42.106:6443
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:

  • command:
    • kube-apiserver
    • –advertise-address=172.31.42.106
    • –allow-privileged=true
    • –authorization-mode=Node,RBAC
    • –client-ca-file=/etc/kubernetes/pki/ca.crt
    • –enable-admission-plugins=NodeRestriction
    • –enable-bootstrap-token-auth=true
    • –etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
    • –etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
    • –etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
    • –etcd-servers=https://127.0.0.1:2379
    • –kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
    • –kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
    • –kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
    • –proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
    • –proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
    • –requestheader-allowed-names=front-proxy-client
    • –requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    • –requestheader-extra-headers-prefix=X-Remote-Extra-
    • –requestheader-group-headers=X-Remote-Group
    • –requestheader-username-headers=X-Remote-User
    • –secure-port=6443
    • –service-account-issuer=https://kubernetes.default.svc.cluster.local
    • –service-account-key-file=/etc/kubernetes/pki/sa.pub
    • –service-account-signing-key-file=/etc/kubernetes/pki/sa.key
    • –service-cluster-ip-range=10.96.0.0/12
    • –tls-cert-file=/etc/kubernetes/pki/apiserver.crt
    • –tls-private-key-file=/etc/kubernetes/pki/apiserver.key
      image: registry.k8s.io/kube-apiserver:v1.26.3

因此,如果要对集群组件配置进行故障排除或验证,首先应查看静态 Pod 清单配置。


#### etcd 配置


如果要与 etcd 组件交互,可以使用静态 pod YAML 中的详细信息。


例如,如果要[备份 etcd]( ),则需要知道 etcd 服务端点和相关证书,以便对 etcd 进行身份验证并创建备份。


如果打开 **`etcd.yaml`** 清单,可以查看所有与 etcd 相关的配置,如下所示。



[![](https://img-blog.csdnimg.cn/img_convert/7ecd54f2c82bd71a84237d7add9b8e88.png)](https://devopscube.com/wp-content/uploads/2023/04/image-11.png "​编辑")



#### TLS 证书


在 Kubernetes 中,所有组件都通过 mTLS 相互通信。在 PKI 文件夹下,您将找到所有 TLS 证书和密钥。Kubernetes 控制平面组件使用这些证书进行身份验证并相互通信。


此外,还有一个 etcd 子目录,其中包含特定于 etcd 的证书和私钥。它们用于保护 etcd 节点之间以及 API 服务器和 etcd 节点之间的通信。


下图显示了 PKI 文件夹的文件结构。



[​![](https://img-blog.csdnimg.cn/img_convert/024c495ea1e1015d47144a7f7eb47cde.png)](https://devopscube.com/wp-content/uploads/2023/04/image-8.png "​编辑")



静态 Pod 清单引用此文件夹中所需的 TLS 证书和密钥。


当您使用 kubeadm 等工具在自托管集群上工作时,这些证书由该工具自动生成。在托管的 Kubernetes 集群中,云提供商负责管理控制平面组件,因此负责满足所有 TLS 要求。


但是,如果要设置用于生产的自承载群集,则必须向组织的网络或安全团队请求这些证书。他们将生成由组织的内部证书颁发机构签名的这些证书,并将其提供给您。


#### kubeconfig文件


任何需要向 API 服务器进行身份验证的组件都需要 [kubeconfig 文件]( )。


所有集群 Kubeconfig 文件都存在于 `**/etc/kubernetes**` 文件夹(.conf 文件)中。您将找到以下文件。


1. admin.conf
2. controller-manager.conf
3. kubelet.conf
4. 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)](https://devopscube.com/wp-content/uploads/2023/04/image-10.png "​编辑")



### **Kubelet 配置**


Kubelet 服务作为系统服务在所有集群节点上运行。


您可以在 /**`etc/systemd/system/kubelet.service.d`** 下查看 kubelet systemd 服务


以下是系统文件内容。



[Service]
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 配置。


1. kubelet kubeconfig 文件:/**etc/kubernetes/kubelet.conf**
2. kubelet 配置文件:/**var/lib/kubelet/config.yaml**
3. 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)](https://devopscube.com/wp-content/uploads/2023/05/carbon-9.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)](https://devopscube.com/wp-content/uploads/2023/04/image-12.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

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

外链图片转存中…(img-r6vmdaLn-1715884137251)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值