Kubernets二进制安装(9)之部署主控节点控制器controller-manager
kube-controller-manager运行控制器,它们是处理集群中常规任务的后台线程
Controller Manager就是集群内部的管理控制中心,由负责不同资源的多个Controller构成,共同负责集群内的Node、Pod等所有资源的管理,比如当通过Deployment创建的某个Pod发生异常退出时,RS Controller便会接受并处理该退出事件,并创建新的Pod来维持预期副本数。
几乎每种特定资源都有特定的Controller维护管理以保持预期状态,而Controller Manager的职责就是把所有的Controller聚合起来:
(1)提供基础设施降低Controller的实现复杂度
(2)启动和维持Controller的正常运行
Controller Manager负责集群内的Node、Pod副本、服务端点(Endpoint)、命令空间(Namespace)、服务帐号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态

每个Controller通过API Server提供的接口实时监控整个集群的每个资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会尝试将系统状态修复到"期望状态"
Kube-Controller-Manager是Kube-Master相关的3个服务之一,是有状态的服务,会修改集群的状态信息
如果多个master节点上的相关服务同时生效,则会有同步与一致性问题,所有多master节点中的kube-controller-manager服务只能是主备的关系,kubernetes采用租赁锁(lease-lock)实现leader的选举,具体到kube-controller-manager,设置启动参数"--leader-elect=true"
Controller工作流程

集群规划
| 主机名 | 角色 | IP地址 |
|---|---|---|
| mfyxw30.mfyxw.com | controller-manager | 192.168.80.30 |
| mfyxw40.mfyxw.com | controller-manager | 192.168.80.40 |
温馨提示:这里部署文档以HDSS7-21.host.com主机为例,另外一台运算节点安装部署方法类似
1.创建controller-manager启动脚本
在mfyxw30.mfyxw.com主机上执行
[root@mfyxw30 ~]#cat > /opt/kubernetes/server/bin/kube-controller-manager.sh << EOF
#!/bin/sh
./kube-controller-manager \\
--cluster-cidr 10.10.0.0/16 \\
--leader-elect true \\
--log-dir /data/logs/kubernetes/kube-controller-manager \\
--master http://127.0.0.1:8080 \\
--service-account-private-key-file ./cert/ca-key.pem \\
--service-cluster-ip-range 172.16.0.0/16 \\
--root-ca-file ./cert/ca.pem \\
--v 2
EOF

在mfyxw40.mfyxw.com主机上执行
[root@mfyxw40 ~]#cat > /opt/kubernetes/server/bin/kube-controller-manager.sh << EOF
#!/bin/sh
./kube-controller-manager \\
--cluster-cidr 10.10.0.0/16 \\
--leader-elect true \\
--log-dir /data/logs/kubernetes/kube-controller-manager \\
--master http://127.0.0.1:8080 \\
--service-account-private-key-file ./cert/ca-key.pem \\
--service-cluster-ip-range 172.16.0.0/16 \\
--root-ca-file ./cert/ca.pem \\
--v 2
EOF

2.调整文件权限和创建目录
在mfyxw30.mfyxw.com上调整文件权限及创建目录
[root@mfyxw30 ~]#chmod +x /opt/kubernetes/server/bin/kube-controller-manager.sh
[root@mfyxw30 ~]#mkdir -p /data/logs/kubernetes/kube-controller-manager

在mfyxw40.mfyxw.com上调整文件权限及创建目录
[root@mfyxw40 ~]#chmod +x /opt/kubernetes/server/bin/kube-controller-manager.sh
[root@mfyxw40 ~]#mkdir -p /data/logs/kubernetes/kube-controller-manager

3.为controller-manager创建supervisor配置
在mfyxw30.mfyxw.com主机上为为controller-manager创建supervisor配置文件
[root@mfyxw30 ~]#cat > /etc/supervisord.d/kube-conntroller-manager.ini << EOF
[program:kube-controller-manager-80.30]
command=/opt/kubernetes/server/bin/kube-controller-manager.sh ; the program (relative uses PATH, can take args)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs=30 ; number of secs prog must stay running (def. 1)
startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
user=root ; setuid to this UNIX account to run the program
redirect_stderr=false ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/kubernetes/kube-controller-manager/controll.stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/data/logs/kubernetes/kube-controller-manager/controll.stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=4 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)
EOF

在mfyxw40.mfyxw.com主机上为为controller-manager创建supervisor配置文件
[root@mfyxw40 ~]#cat > /etc/supervisord.d/kube-conntroller-manager.ini << EOF
[program:kube-controller-manager-80.40]
command=/opt/kubernetes/server/bin/kube-controller-manager.sh ; the program (relative uses PATH, can take args)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
startsecs=30 ; number of secs prog must stay running (def. 1)
startretries=3 ; max # of serial start failures (default 3)
exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
user=root ; setuid to this UNIX account to run the program
redirect_stderr=false ; redirect proc stderr to stdout (default false)
stdout_logfile=/data/logs/kubernetes/kube-controller-manager/controll.stdout.log ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stdout_events_enabled=false ; emit events on stdout writes (default false)
stderr_logfile=/data/logs/kubernetes/kube-controller-manager/controll.stderr.log ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=4 ; # of stderr logfile backups (default 10)
stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
stderr_events_enabled=false ; emit events on stderr writes (default false)
EOF

4.启动服务并检查
在mfyxw30.mfyxw.com主机上执行启用服务和检查
[root@mfyxw30 ~]# supervisorctl update
[root@mfyxw30 ~]# supervisorctl status

在mfyxw30.mfyxw.com主机上执行启用服务和检查
[root@mfyxw40 ~]# supervisorctl update
[root@mfyxw40 ~]# supervisorctl status

Kubernets二进制安装(9)之部署主控节点控制器controller-manager的更多相关文章
- Kubernets二进制安装(6)之部署主控节点服务--etcd
Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息. 整个kubernetes系统中一共有两个服务需要用到etcd用来协同和存储配置,分别是 网络插件 ...
- Kubernets二进制安装(10)之部署主控节点部署调度器服务kube-scheduler
Kubernetes Scheduler是一个策略丰富.拓扑感知.工作负载特定的功能,调度器显著影响可用性.性能和容量.调度器需要考虑个人和集体的资源要求.服务质量要求.硬件/软件/政策约束.亲和力和 ...
- Kubernets二进制安装(7)之部署主控节点服务--apiserver二进制安装
kube-apiserver集群规划 主机名 角色 IP地址 mfyxw30.mfxyw.com kube-apiserver主 192.168.80.30 mfyxw40.mfyxw.com kub ...
- Kubernets二进制安装(7)之部署主控节点服务--apiserver简介
API Server简介 Kubernetes API Server提供了K8S各类资源对象(如:pod.RC.Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和 ...
- Kubernets二进制安装(12)之部署Node节点服务的kube-Proxy
kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服 ...
- Kubernets二进制安装(11)之部署Node节点服务的kubelet
集群规划 主机名 角色 IP地址 mfyxw30.mfyxw.com kubelet 192.168.80.30 mfyxw40.mfyxw.com kubelet 192.168.80.40 注意: ...
- Kubernets二进制安装(13)之部署Flannel
Flannel简介 Flannel是CoreDNS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址 ...
- Kubernets二进制安装(8)之部署四层反向代理
四层反向代理集群规划 主机名 角色 IP地址 mfyxw10.mfyxw.com 4层负载均衡(主) 192.168.80.10 mfyxw20.mfyxw.com 4层负载均衡(从) 192.168 ...
- 6、二进制安装K8s之部署kubectl
二进制安装K8s之部署kubectl 我们把k8s-master 也设置成node,所以先master上面部署node,在其他机器上部署node也适用,更换名称即可. 1.在所有worker node ...
随机推荐
- 洛谷P3275 [SCOI2011]糖果(差分约束)
题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的 ...
- 使用CDN访问免备案网站
如何使用CDN绕过服务器域名备案 前言 不得不说,大陆需要备案,时间真的有点长,至少得5天~20天起步,对于我们这些火急火燎的站长还是比较难受的.这里教大家如何使用cdn绕过备案, 访问速度很快,亲测 ...
- [Usaco2008 Nov]Buying Hay 购买干草
题目描述 约翰的干草库存已经告罄,他打算为奶牛们采购H(1≤H≤50000)磅干草,他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi≤5000)磅 ...
- MySQL如何加锁控制并发
目录 前言 一.乐观锁 添加version字段 二.悲观锁 读锁 全表锁(LOCK TABLE 表 READ) 行锁(SELECT ... LOCK IN SHARE MODE) 写锁 全表锁(LOC ...
- Code Review 的几个技巧
No magic: Explicit not implicit: 覆盖度比深度重要,覆盖度追求100%: 频率比仪式感重要,坐公交蹲厕所打开手机都可以 Review 别人代码,不需要专门组织会议: 粒 ...
- 轻型目录访问协议 ldap 公司内部网站的登录 单点登录
https://zh.wikipedia.org/wiki/轻型目录访问协议 轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛ ...
- 语言反射规则 - The Laws of Reflection
[译]Go反射的三个原则(官方博客) | seven的分享 https://sevenyu.top/2019/12/21/laws-of-reflection.html wilhg/The-Laws- ...
- Trie 前缀树或字典树 确定有限状态自动机
https://zh.wikipedia.org/wiki/Trie 应用 trie树常用于搜索提示.如当输入一个网址,可以自动搜索出可能的选择.当没有完全匹配的搜索结果,可以返回前缀最相似的可能.[ ...
- 【实战】ZooKeeper 实战
1. 前言 这篇文章简单给演示一下 ZooKeeper 常见命令的使用以及 ZooKeeper Java客户端 Curator 的基本使用.介绍到的内容都是最基本的操作,能满足日常工作的基本需要. 如 ...
- JasperReports 取消自动分页/忽略分页
因为需要将合同比价单由PDF文档形式改为HTML页面方式,虽然转换文档类型了,但是发现HTML页面中间到了一定行数就出现了空行把Detail给隔开了.之前总想着怎样消除中间空行,以为是报表top页面边 ...