继续前一章的部署。

十、kube-scheduler集群部署

该集群包含2个节点,启动后通过竞争选举机制产生一个leader节点,其他节点为阻塞状态。当leader节点不可用后,剩余的节点将再次进行选举产生新的leader节点,从而保证服务的可用性。

如下两种情况下使用x509证书:

a. 与 kube-apiserver 的安全端口通信

b. 在安全端口(https,10251)输出 prometheus 格式的 metrics

10.1 下载二进制文件,参考 第三章

10.2 创建 kube-scheduler 证书和私钥

创建证书签名请求:

cat > kube-scheduler-csr.json <<EOF
{"CN": "system:kube-scheduler","hosts": ["127.0.0.1","192.168.56.20","192.168.56.21"],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "BeiJing","L": "BeiJing","O": "system:kube-scheduler","OU": "4Paradigm"}]
}
EOF

  • hosts 列表包含所有 kube-scheduler 节点IP
  • CN为 system:kube-scheduler, O 为 system:kube-scheduler , kubernetes 内置的 ClusterRoleBindings system:kube-scheduler 将赋予 kube-scheduler 工作所需的权限

生成证书和私钥:

cfssl gencert -ca=/etc/kubernetes/cert/ca.pem \-ca-key=/etc/kubernetes/cert/ca-key.pem \-config=/etc/kubernetes/cert/ca-config.json \-profile=kubernetes kube-scheduler-csr.json | cfssljson -bare kube-scheduler

10.3 创建和分发 kubeconfig 文件

kubeconfig 文件包含访问 apiserver 的所有信息,如 apiserver地址,CA证书和自身使用的证书

source /opt/k8s/bin/environment.shkubectl config set-cluster kubernetes \--certificate-authority=/etc/kubernetes/cert/ca.pem \--embed-certs=true\--server=${KUBE_APISERVER} \--kubeconfig=kube-scheduler.kubeconfigkubectl config set-credentials system:kube-scheduler \--client-certificate=kube-scheduler.pem \--client-key=kube-scheduler-key.pem \--embed-certs=true\--kubeconfig=kube-scheduler.kubeconfigkubectl config set-context system:kube-scheduler \--cluster=kubernetes \--user=system:kube-scheduler \--kubeconfig=kube-scheduler.kubeconfigkubectl config use-context system:kube-scheduler --kubeconfig=kube-scheduler.kubeconfig

  • 上一步创建的证书、私钥以及 kube-apiserver 地址被写入到 kubeconfig 文件中

分发 kubeconfig 到所有 master 节点

source /opt/k8s/bin/environment.sh
for master_ip in${MASTER_IPS[@]}doecho ">>> ${master_ip}"scp kube-scheduler.kubeconfig k8s@${master_ip}:/etc/kubernetes/
done

10.4 创建和分发 kube-scheduler systemd unit 文件

cat > kube-scheduler.service <<EOF
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
ExecStart=/opt/k8s/bin/kube-scheduler \\--address=127.0.0.1\\--kubeconfig=/etc/kubernetes/kube-scheduler.kubeconfig \\--leader-elect=true\\--alsologtostderr=true\\--logtostderr=false\\--log-dir=/var/log/kubernetes \\--v=2Restart=on-failure
RestartSec=5User=k8s[Install]
WantedBy=multi-user.target
EOF

  • --address 在 127.0.0.1:10251 端口接收 http /metrics 请求; kube-scheduler 目前还不支持接收 https 请求
  • --kubeconfig 指定 kubeconfig 文件路径,kube-scheduler 使用它链接和验证 kube-apiserver
  • --leader-elect=true 集群运行模式,启用选举功能; 被选为 leader 的节点负责处理工作,其他节点为阻塞状态
  • User=k8s  使用 k8s 账户运行

分发 systemd unit 文件到所有 master 节点:

source /opt/k8s/bin/environment.sh
for master_ip in${MASTER_IPS[@]}doecho ">>> ${master_ip}"scp kube-scheduler.service root@${master_ip}:/etc/systemd/system/
done

10.5 启动 kube-scheduler 服务

source /opt/k8s/bin/environment.sh
for master_ip in${MASTER_IPS[@]}doecho ">>> ${master_ip}"ssh root@${master_ip} "mkdir -p /var/log/kubernetes && chown -R k8s /var/log/kubernetes"ssh root@${master_ip} "systemctl daemon-reload && systemctl enable kube-scheduler && systemctl restart kube-scheduler"
done

  • 运行前,必须先创建日志目录

10.6 检查服务运行状态

source /opt/k8s/bin/environment.sh
for master_ip in${MASTER_IPS[@]}doecho ">>> ${master_ip}"ssh k8s@${master_ip} "systemctl status kube-scheduler|grep Active"
done

  • 确认服务是 Active: active (running) 状态
  • 查看日志: journalctl -u kube-scheduler

10.7 查看输出的 metric

以下命令在 kube-scheduler 节点上执行

[root@k8s-m1 template]# sudo netstat -lnpt|grep kube-sche
tcp0      0 127.0.0.1:10251         0.0.0.0:*               LISTEN      6800/kube-scheduler[root@k8s-m1 template]# curl -s http://127.0.0.1:10251/metrics |head
# HELP apiserver_audit_event_total Counter of audit events generated and sent to the audit backend.
# TYPE apiserver_audit_event_total counter
apiserver_audit_event_total0# HELP apiserver_client_certificate_expiration_seconds Distribution of the remaining lifetime on the certificate used to authenticate a request.
# TYPE apiserver_client_certificate_expiration_seconds histogram
apiserver_client_certificate_expiration_seconds_bucket{le="0"} 0apiserver_client_certificate_expiration_seconds_bucket{le="21600"} 0apiserver_client_certificate_expiration_seconds_bucket{le="43200"} 0apiserver_client_certificate_expiration_seconds_bucket{le="86400"} 0apiserver_client_certificate_expiration_seconds_bucket{le="172800"} 0

10.8 测试 kube-scheduler 集群的高可用

找到一个节点,停掉服务,查看其它节点是否获取了leader权限

10.9 查看当前的 leader

kubectl get endpoints kube-scheduler --namespace=kube-system  -o yaml

转载于:https://www.cnblogs.com/aast/p/9871247.html

二进制安装kubernetes v1.11.2 (第十章 kube-scheduler集群部署)相关推荐

  1. 二进制安装kubernetes v1.11.2 (第八章 kube-apiserver 部署)

    继续上一章部署. 八.部署kube-apiserver组件 使用第七章的haproxy和keepalived部署的高可用集群提供的VIP:${MASTER_VIP} 8.1 下载二进制文件,参考 第三 ...

  2. 二进制安装kubernetes(v1.20.16)

    目录 1.集群规划 2.软件版本 3.下载地址 4.初始化虚拟机 4.1安装虚拟机 4.2升级内核 4.3安装模块 4.4系统设置 4.5设置hoss 4.6设置IPv4转发 4.7时间同步 4.8安 ...

  3. kubeadm安装kubernetes 1.13.2多master高可用集群

    1. 简介 Kubernetes v1.13版本发布后,kubeadm才正式进入GA,可以生产使用,用kubeadm部署kubernetes集群也是以后的发展趋势.目前Kubernetes的对应镜像仓 ...

  4. 树莓派4B 4G Ubuntu 20.04 arm64位 安装 Kubernetes 1.18.5 单master 双node集群

    简介 本文章通过从零开始,最精简的初始化系统一步步配置完成K8S的安装,尽量介绍清楚各软件安装环境.作用,减少个人之间树莓派系统配置差异带来的异常排查困难.本次教程前提:需要会linux简单的操作 本 ...

  5. 二进制安装Kubernetes(k8s) v1.24.0 IPv4

    感谢:二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 - 小陈运维 kubernetes 1.24 变化较大,详细见:Kubernetes 1.24 的删除和弃用 | ...

  6. 二进制安装Kubernetes(k8s) v1.23.6

    二进制安装Kubernetes(k8s) v1.23.6 背景 kubernetes二进制安装 1.23.3 和 1.23.4 和 1.23.5 和 1.23.6 文档以及安装包已生成. 后续尽可能第 ...

  7. 二进制安装Kubernetes(k8s)IPv4/IPv6双栈 v1.24.0

    二进制安装Kubernetes(k8s) v1.24.0 IPv4/IPv6双栈 介绍 kubernetes二进制安装 1.23.3 和 1.23.4 和 1.23.5 和 1.23.6 和 1.24 ...

  8. openEuler 22.09环境二进制安装Kubernetes(k8s) v1.26

    本文档描述了如何在openEuler 22.09上以二进制模式部署高可用Kubernetes集群(适用k8s v1.26版本). 注意:本文档中的所有操作均使用root权限执行. 1 部署环境 1.1 ...

  9. 二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈

    二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了

最新文章

  1. python期末考试试题
  2. Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
  3. 关于思科网际操作系统漏洞情况的通报
  4. 闪电模型数学_初中数学|23种几何模型汇总(中)
  5. ES6中解构赋值深入解读
  6. CODEVS 1205 单词反转
  7. 没写client,想先测试server端怎么办?
  8. 别再搞纯文本了!多模文档理解更被时代需要!
  9. relativelayout中按键不能点_CNC | M80/M800系列系统常见按键和外部存储器故障
  10. 理论基础 —— 查找 —— 二叉排序树
  11. 关于单元测试的那些事儿,Mockito 都能帮你解决
  12. jquery1.9 下检测浏览器类型和版本的方法
  13. 腾讯QQ浏览器 10.0.932.400 正式版
  14. PostGIS 报错libcrypto
  15. 防火墙服务器-iptables
  16. 【批量身份证图片识别】如何批量OCR识别身份证图片或复印件并导出至excel表格或文本格式,下面教你方法
  17. 软件测试10年,如果再给我一次机会,我可能···
  18. c语言身份证号码验证
  19. Win10系统如何关闭防火墙?
  20. 移动云,中国移动算力网络棋局中的关键一子

热门文章

  1. python ui测试_uiautomator2 使用Python测试 Android应用
  2. R语言︱决策树族——随机森林算法
  3. 第三章_深度学习基础
  4. 01-HTML基础与进阶-day4-录像250
  5. 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比
  6. Express框架是什么
  7. 作为IT人员,专业和不专业的差别有多大?
  8. linux tomcat配置https
  9. 在域中使用组策略允许用户关闭计算机以及更改系统时间
  10. IBM启用水冷却技术为IDC服务器降温