kubernetes集群安装指南:kube-apiserver组件部署
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,在kubernetes组件中,master节点组件主要包括:kube-apiserver,kube-controller-manager,kube-scheduler等三个组件,每个组件功能职责分工不
千家信息网最后更新 2025年12月01日kubernetes集群安装指南:kube-apiserver组件部署
在kubernetes组件中,master节点组件主要包括:kube-apiserver,kube-controller-manager,kube-scheduler等三个组件,每个组件功能职责分工不同,这里我们将三个组件部署在同一机器上,分别部署了三台机器。
1 安装准备
1.1 环境变量定义
#################### Variable parameter setting ######################KUBE_NAME=kube-apiserverK8S_INSTALL_PATH=/data/apps/k8s/kubernetesK8S_BIN_PATH=${K8S_INSTALL_PATH}/sbinK8S_LOG_DIR=${K8S_INSTALL_PATH}/logsK8S_CONF_PATH=/etc/k8s/kubernetesCA_DIR=/etc/k8s/sslSOFTWARE=/root/softwareVERSION=v1.14.2PACKAGE="kubernetes-server-${VERSION}-linux-amd64.tar.gz"DOWNLOAD_URL=""https://github.com/devops-apps/download/raw/master/kubernetes/${PACKAGE}"ETCD_ENDPOIDS=https://10.10.10.22:2379,https://10.10.10.23:2379,https://10.10.10.24:2379ETH_INTERFACE=eth2LISTEN_IP=$(ifconfig | grep -A 1 ${ETH_INTERFACE} |grep inet |awk '{print $2}')USER=k8sSERVICE_CIDR=10.254.0.0/22NODE_PORT_RANG=8400-94001.2 下载和分发 kubernetes 二进制文件
登陆devops机器,访问kubernetes github 官方地址下载稳定的 realease 包至本机;
wget $DOWNLOAD_URL -P $SOFTWARE将kubernetes 软件包分发到各个master节点服务器;
sudo ansible master_k8s_vgs -m copy -a "src=${SOFTWARE}/$PACKAGE dest=${SOFTWARE}/" -b2 安装kube-apiserver组件服务
2.1 安装kube-apiserver二进制文件
### 1.Check if the install directory exists.if [ ! -d "$K8S_BIN_PATH" ]; then mkdir -p $K8S_BIN_PATHfiif [ ! -d "$K8S_LOG_DIR/$KUBE_NAME" ]; then mkdir -p $K8S_LOG_DIR/$KUBE_NAMEfiif [ ! -d "$K8S_CONF_PATH" ]; then mkdir -p $K8S_CONF_PATHfi### 2.Install kube-apiserver binary of kubernetes.if [ ! -f "$SOFTWARE/kubernetes-server-${VERSION}-linux-amd64.tar.gz" ]; then wget $DOWNLOAD_URL -P $SOFTWARE >>/tmp/install.log 2>&1ficd $SOFTWARE && tar -xzf kubernetes-server-${VERSION}-linux-amd64.tar.gz -C ./cp -fp kubernetes/server/bin/$KUBE_NAME $K8S_BIN_PATHln -sf $K8S_BIN_PATH/$KUBE_NAM /usr/local/binchown -R $USER:$USER $K8S_INSTALL_PATHchmod -R 755 $K8S_INSTALL_PATH2.3 分发 kubeconfig 文件和证书
分发证书
cd ${CA_DIR}sudo ansible master_k8s_vgs -m copy -a "src=ca.pem dest=${CA_DIR}/" -bsudo ansible master_k8s_vgs -m copy -a "src=ca-key.pem dest=${CA_DIR}/" -bsudo ansible master_k8s_vgs -m copy -a "src=kubernetes.pem dest=${CA_DIR}/" -bsudo ansible master_k8s_vgs -m copy -a "src=kubernetes-key.pem dest=${CA_DIR}/" -bsudo ansible master_k8s_vgs -m copy -a "src=proxy-clinet.pem dest=${CA_DIR}/" -b、sudo ansible master_k8s_vgs -m copy -a "src=proxy-client-key.pem dest=${CA_DIR}/" -b- 因为master节点相关组件都部署在同一台节点上,所有这里把ca根证书公钥和私钥都同步到每个master节点主机上;
- proxy-client主要用于apiserver收集metric server资源使用;
2.4 创建审计策略文件
cat>${K8S_CONF_PATH}/audit-policy.yaml<2.5 创建kube-apiserver 启动服务
at >/usr/lib/systemd/system/${KUBE_NAME}.service<- --advertise-address:apiserver 对外通告的 IP(kubernetes 服务后端节点 IP);
- --default-*-toleration-seconds:设置节点异常相关的阈值;
- --max-*-requests-inflight:请求相关的最大阈值;
- --etcd-*:访问 etcd 的证书和 etcd 服务器地址;
- --experimental-encryption-provider-config:指定用于加密 etcd 中 secret 的配置;
- --bind-address: https 监听的 IP,不能为 127.0.0.1,否则外界不能访问它的安全端口 6443;
- --secret-port:https 监听端口;
- --insecure-port=0:关闭监听 http 非安全端口(8080);
- --tls-*-file:指定 apiserver 使用的证书、私钥和 CA 文件;
- --audit-*:配置审计策略和审计日志文件相关的参数;
- --client-ca-file:验证 client (kue-controller-manager、kube-scheduler、kubelet、kube-proxy 等)请求所带的证书;
- --enable-bootstrap-token-auth:启用 kubelet bootstrap 的 token 认证;
- --requestheader-*:kube-apiserver 的 aggregator layer 相关的配置参数,proxy-client & HPA 需要使用;
- --requestheader-client-ca-file:用于签名 --proxy-client-cert-file 和 --proxy-client-key-file 指定的证书;在启用了 metric aggregator 时使用;
- --requestheader-allowed-names:不能为空,值为逗号分割的 --proxy-client-cert-file 证书的 CN 名称,这里设置为 "aggregator";
- --service-account-key-file:签名 ServiceAccount Token 的公钥文件,kube-controller-manager 的 --service-account-private-key-file 指定私钥文件,两者配对使用;
- --runtime-config=api/all=true: 启用所有版本的 APIs,如 autoscaling/v2alpha1;
- --authorization-mode=Node,RBAC、--anonymous-auth=false: 开启 Node 和 RBAC 授权模式,拒绝未授权的请求;
- --enable-admission-plugins:启用一些默认关闭的 plugins;
- --allow-privileged:运行执行 privileged 权限的容器;
- --apiserver-count=3:指定 apiserver 实例的数量;
- --event-ttl:指定 events 的保存时间;
- --kubelet-:如果指定,则使用 https 访问 kubelet APIs;需要为证书对应的用户(上面 kubernetes.pem 证书的用户为 kubernetes) 用户定义 RBAC 规则,否则访问 kubelet API 时提示未授权;
- --proxy-client-*:apiserver 访问 metrics-server 使用的证书;
- --service-cluster-ip-range: 指定 Service Cluster IP 地址段;
- --service-node-port-range: 指定 NodePort 的端口范围;
- kube-apiserver 的 --requestheader-allowed-names 参数需要与metric证书CN字段一致,否则后续访问 metrics 时会提示权限不足。
- 如果 kube-apiserver 机器没有运行 kube-proxy,则还需要添加 --enable-aggregator-routing=true 参数;
关于 --requestheader-XXX 相关参数,参考:
https://github.com/kubernetes-incubator/apiserver-builder/blob/master/docs/conceptshttps://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/注意:
- requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth;
- 如果 --requestheader-allowed-names 为空,或者 --proxy-client-cert-file 证书的 CN 名称不在 allowed-names 中,则后续查看 node 或 pods 的 metrics 失败,提示:
- requestheader-client-ca-file 指定的 CA 证书,必须具有 client auth and server auth;
- 如果 --requestheader-allowed-names 为空,或者 --proxy-client-cert-file 证书的 CN 名称不在 allowed-names 中,则后续查看 node 或 pods 的 metrics 失败,提示:
###### Error from server (Forbidden): nodes.metrics.k8s.io is forbidden..
2.6 检查kube-apiserver服务及监听的端口
sudo systemctl status kube-apiserver |grep 'Active:'确保状态为 active (running),否则查看日志,确认原因:
sudo journalctl -u kube-apiserver2.7 打印 kube-apiserver 写入 etcd 的数据(可选)
ETCDCTL_API=3 etcdctl \ --endpoints=${ETCD_ENDPOINTS} \ --cacert=/etc/k8s/ssl/ca.pem \ --cert=/etc/k8s/ssl/etcd.pem \ --key=/etc/k8s/ssl/etcd-key.pem \ get /registry/ --prefix --keys-only2.8 检查集群信息
kubectl cluster-info2.9 授予 kube-apiserver 访问 kubelet API 的权限
在执行 kubectl exec、run、logs 等命令时,apiserver 会将请求转发到 kubelet 的 https 端口。这里定义 RBAC 规则,授权 apiserver 使用的证书(kubernetes.pem)用户名(CN:kuberntes)访问 kubelet API 的权限:
kubectl create \ clusterrolebinding kube-apiserver:kubelet-apis \ --clusterrole=system:kubelet-api-admin \ --user kuberneteskube-apiserver安装完成,继续安装其他master组件:kube-controller-manager,具体安装文档请参考:kubernetes集群安装指南:kube-controller-manager组件集群部署,关于kube-apiserver脚本请从此处获取;
证书
组件
文件
节点
端口
服务
参数
机器
权限
用户
提示
监听
集群
名称
地址
审计
配置
安全
三个
二进制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
h3c服务器售后电话
郑州net软件开发价格表
私有部署服务器
举例说明数据库三级模式
ibm服务器 9f
广东惠州注册服务器
网吧的服务器开关在哪
服务器优劣
软件开发专家和资深工程师
大专生学软件开发怎么样
表格配色软件开发
网络安全法立法 新华社
硕士论文知网查重的数据库范围
qq服务器可以干什么
网络安全 演讲稿
杭州程序软件开发怎么样
千锋网络安全毕业设计合集
网络安全保险三个法规
sql2000空白数据库
阿里云服务器 双网卡
试述软件开发工具的性能指标
源代码用什么工具同步到服务器好
网络安全知识我知道手抄报
兰州格罗互联网科技有限公司
留守儿童相关数据库
服务器格式化后找不到系统
杭州区块链钱包软件开发
华为服务器批量装系统
网络安全2级3级
蝙蝠聊天软件开发商