K8S单master部署四:Kubelet+kube-pro
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,服务器角色分配角色地址安装组件master192.168.142.220kube-apiserver kube-controller-manager kube-scheduler etcdnode11
千家信息网最后更新 2026年11月01日K8S单master部署四:Kubelet+kube-pro
服务器角色分配
| 角色 | 地址 | 安装组件 |
|---|---|---|
| master | 192.168.142.220 | kube-apiserver kube-controller-manager kube-scheduler etcd |
| node1 | 192.168.142.136 | kubelet kube-proxy docker flannel etcd |
| node2 | 192.168.142.132 | kubelet kube-proxy docker flannel etcd |
一、Kubelet、proxy部署前期准备
分隔符前所有操作均在master进行,后面均为node节点
移动控制命令
[root@master bin]# pwd/k8s/kubernetes/server/bin//node2地址[root@master bin]# scp -p kubelet kube-proxy root@192.168.142.132:/opt/kubernetes/bin///node1地址[root@master bin]# scp -p kubelet kube-proxy root@192.168.142.136:/opt/kubernetes/bin/建立引导文件用于引导kubelet自动颁发证书
创建bootstrap.kubeconfig(必须品!!!)
//指定api入口,指自身即可(必须安装了apiserver)[root@master kubernetes]# export KUBE_APISERVER="https://192.168.142.220:6443"//设置集群[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-cluster kubernetes \--certificate-authority=/opt/kubernetes/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=/k8s/kubeconfig/bootstrap.kubeconfig//设置客户端认证[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-credentials kubelet-bootstrap \--token=${BOOTSTRAP_TOKEN} \--kubeconfig=/k8s/kubeconfig/bootstrap.kubeconfig//设置上下文参数[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-context default \--cluster=kubernetes \--user=kubelet-bootstrap \--kubeconfig=/k8s/kubeconfig/bootstrap.kubeconfig//设置默认上下文[root@master kubernetes]# /opt/kubernetes/bin/kubectl config use-context default \--kubeconfig=/k8s/kubeconfig/bootstrap.kubeconfig创建kube-proxy kubeconfig文件
//设置集群[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-cluster kubernetes \--certificate-authority=/opt/etcd/ssl/ca.pem \--embed-certs=true \--server=${KUBE_APISERVER} \--kubeconfig=/k8s/kubeconfig/kube-proxy.kubeconfig//设置客户端认证[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-credentials kube-proxy \--client-certificate=/opt/kubernetes/ssl/kube-proxy.pem \--client-key=/opt/kubernetes/ssl/kube-proxy-key.pem \--embed-certs=true \--kubeconfig=/k8s/kubeconfig/kube-proxy.kubeconfig//设置上下文参数[root@master kubernetes]# /opt/kubernetes/bin/kubectl config set-context default \--cluster=kubernetes \--user=kube-proxy \--kubeconfig=/k8s/kubeconfig/kube-proxy.kubeconfig//设置默认上下文[root@master kubernetes]# /opt/kubernetes/bin/kubectl config use-context default \--kubeconfig=/k8s/kubeconfig/kube-proxy.kubeconfig将kubeconfig文件进行推送
[root@master kubeconfig]# scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.142.132:/opt/kubernetes/cfg/[root@master kubeconfig]# scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.142.136:/opt/kubernetes/cfg/将kubectl写入环境变量
[root@master kubeconfig]# echo "export PATH=\$PATH:/opt/kubernetes/bin/" >> /etc/profile[root@master kubeconfig]# source /etc/profile创建bootstrap角色权限用于apiserver请求签名
(重中之重!!!没有基本完蛋)
[root@master kubeconfig]# kubectl create clusterrolebinding kubelet-bootstrap \--clusterrole=system:node-bootstrapper \--user=kubelet-bootstrapnode端(所有节点只有地址不同,剩余所有步骤均相同)
安装Kubelet
指定node节点IP和DNS为全局变量(不同的node节点变量需要改变)
不进行变量的设置直接在配置文件进行更改也可。
[root@node1 bin]# export NODE_ADDRESS="192.168.142.136"[root@node1 bin]# export DNS_SERVER_IP="192.168.142.2"创建kubelet配置文件
[root@node1 ~]# cat </opt/kubernetes/cfg/kubeletKUBELET_OPTS="--logtostderr=true \\--v=4 \\--hostname-override=${NODE_ADDRESS} \\--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \\--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \\--config=/opt/kubernetes/cfg/kubelet.config \\--cert-dir=/opt/kubernetes/ssl \\--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"EOF//这是第二个,有两个!!记住,有两个!![root@node1 ~]# cat </opt/kubernetes/cfg/kubelet.configkind: KubeletConfigurationapiVersion: kubelet.config.k8s.io/v1beta1address: ${NODE_ADDRESS}port: 10250readOnlyPort: 10255cgroupDriver: cgroupfsclusterDNS:- ${DNS_SERVER_IP} clusterDomain: cluster.local.failSwapOn: falseauthentication: anonymous: enabled: trueEOF 创建kubelet启动脚本
[root@node1 ~]# cat </usr/lib/systemd/system/kubelet.service[Unit]Description=Kubernetes KubeletAfter=docker.serviceRequires=docker.service[Service]EnvironmentFile=/opt/kubernetes/cfg/kubeletExecStart=/opt/kubernetes/bin/kubelet \$KUBELET_OPTSRestart=on-failureKillMode=process[Install]WantedBy=multi-user.targetEOF 开启服务
[root@node1 ~]# chmod +x /usr/lib/systemd/system/kubelet.service[root@node1 ~]# systemctl daemon-reload[root@node1 ~]# systemctl enable kubelet[root@node1 ~]# systemctl restart kubelet此时,如果顺利则会在master收到该node节点发出的请求加入群集的签名请求。下面我们要做的就是进行请求同意。
返回master端检查签名请求
[root@master kubeconfig]# kubectl get csrNAME AGE REQUESTOR CONDITIONnode-csr-rDZDbQ9_NzqUXKMn2Yn28LVkzEXuITrNqPZ9WrJD5qg 42s kubelet-bootstrap Pending//"pending" 代表等待状态通过bootstrap角色权限生成kubelet.kubeconfig证书文件
[root@master kubeconfig]# kubectl certificate approve node-csr-rDZDbQ9_NzqUXKMn2Yn28LVkzEXuITrNqPZ9WrJD5qg//此时node节点状态会发生变化[root@master kubeconfig]# kubectl get csrNAME AGE REQUESTOR CONDITIONnode-csr-rDZDbQ9_NzqUXKMn2Yn28LVkzEXuITrNqPZ9WrJD5qg 42s kubelet-bootstrap Approved,Issued//"Approved" 表示同意请求;"Issued" 表示节点已发布//查看集群情况[root@master kubeconfig]# kubectl get nodesNAME STATUS AGE VERSION192.168.142.136 Ready 49m v1.6.2以下步骤均在node节点中进行
安装kube-proxy
建立kube-proxy配置文件
[root@node1 ~]# cat </opt/kubernetes/cfg/kube-proxyKUBE_PROXY_OPTS="--logtostderr=true \\--v=4 \\--hostname-override=192.168.142.136 \\--cluster-cidr=10.0.0.0/24 \\--proxy-mode=ipvs \\--kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"EOF 建立kube-proxy启动脚本
[root@node1 ~]# cat </usr/lib/systemd/system/kube-proxy.service[Unit]Description=Kubernetes ProxyAfter=network.target[Service]EnvironmentFile=-/opt/kubernetes/cfg/kube-proxyExecStart=/opt/kubernetes/bin/kube-proxy \$KUBE_PROXY_OPTSRestart=on-failure[Install]WantedBy=multi-user.targetEOF 开启服务
[root@node1 ~]# chmod +x /usr/lib/systemd/system/kube-proxy.service[root@node1 ~]# systemctl daemon-reload[root@node1 ~]# systemctl enable kube-proxy[root@node1 ~]# systemctl restart kube-proxy查看服务启动状况
[root@node2 cfg]# netstat -atnp | grep proxytcp 0 0 127.0.0.1:10249 0.0.0.0:* LISTEN 50601/kube-proxytcp6 0 0 :::10256 :::* LISTEN 50601/kube-proxy至此,整个单master集群部署完成!!!!
节点
文件
上下
上下文
变量
地址
角色
集群
服务
配置
不同
两个
参数
客户
客户端
权限
步骤
状态
脚本
证书
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
广州大一互联网络科技有限公司
科技制造互联网公司
互联网科技金融公司
互联网科技logo设计
友谊互联网络科技
互联网科技股有哪些
美国互联网前沿科技
科技大学互联网专业好不好
承德科技产业互联网发展
移动互联网年度科技创新
杭州壁岐互联网科技有限公司
深圳市优智互联网科技有限公司
互联网科技大赛获奖感言
群盈汇互联网科技有限公司
本届互联网大会上的黑科技
广东鹅鹅鹅互联网科技有限公司
安徽零酒互联网科技有限公司
绵阳真晨互联网科技有限公司
高科技和互联网的现代国家
高科技互联网
腾讯阿里互联网科技
互联网 科技公司
互联网金融公司科技
湖南洣水互联网科技有限公司扣款
江苏南京365互联网科技
移动互联网年度科技创新
恒生互联网科技指数跳水
卓翼科技产业互联网合作
互联网硬科技公司