K8S二进制部署:配置kubelet与kube-proxy

需积分: 26 1 下载量 93 浏览量 更新于2024-08-05 收藏 12KB TXT 举报
"本文档主要介绍如何在Kubernetes(K8S)环境中,通过二进制方式安装node节点上的关键组件——kubelet和kube-proxy。这个过程涉及到节点的配置,包括TLS bootstrapping、服务配置文件的创建以及对系统角色和组的授权。" 在Kubernetes集群中,node节点是运行应用工作负载的地方,它们通过kubelet和kube-proxy与主控节点进行通信。kubelet是Kubernetes在每个节点上的代理,负责维护容器的运行状态,执行主控节点的指令,并向主控报告节点状态。而kube-proxy则是实现服务发现和网络规则的关键组件。 在安装kubelet之前,首先需要设置TLS bootstrapping,这是kubelet首次启动时用于获取认证凭据的过程。在描述中提到,我们需要创建一个名为`kubelet-bootstrap`的集群角色绑定(ClusterRoleBinding),将`kubelet-bootstrap`用户赋予`system:node-bootstrapper`的集群角色。这一步骤确保kubelet在启动时有权向kube-apiserver发起TLS bootstrapping请求,以获取其自身的身份验证证书。 ```shell kubectl create clusterrolebinding kubelet-bootstrap \ --clusterrole=system:node-bootstrapper \ --user=kubelet-bootstrap ``` 这里的`--user=kubelet-bootstrap`对应于`/etc/kubernetes/token.csv`文件中定义的用户名,该用户名也会写入到`/etc/kubernetes/bootstrap.kubeconfig`文件,供kubelet在启动时使用。 接下来,为了使kubelet能够注册节点到集群,我们需要创建另一个集群角色绑定`kubelet-nodes`,将`kubelet-nodes`用户赋予`system:node`集群角色和`system:nodes`组。这允许kubelet在认证成功后向kube-apiserver发送注册节点的请求。 ```shell kubectl create clusterrolebinding kubelet-nodes \ --clusterrole=system:node \ --group=system:nodes ``` 安装kubelet的最后步骤是配置其服务文件。在`/usr/lib/systemd/system/kubelet.service`中,我们定义了服务的启动参数,如工作目录、环境变量(指向配置文件的位置)以及依赖的服务(如Docker)。这确保kubelet在Docker服务启动后才开始运行。 ```ini [Unit] Description=Kubernetes Kubelet Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=docker.service Requires=docker.service [Service] WorkingDirectory=/var/lib/kubelet EnvironmentFile=-/etc/kubernetes/config ... ``` 至于kube-proxy,它是Kubernetes网络模型的关键组件,它实现了服务的负载均衡和网络策略。kube-proxy通常会作为守护进程运行,监听kube-apiserver的变化,动态调整网络规则以确保服务的可达性。它的配置和启动过程与kubelet类似,但涉及的配置和参数可能略有不同,如监听端口、网络模式等。 正确配置和安装kubelet和kube-proxy对于Kubernetes集群的正常运行至关重要。理解这些步骤有助于在本地或生产环境中部署和管理Kubernetes节点。