概述
部署master节点
控制节点充当整个调度和管理的角色,k8s的Master节点包含以下组件:
※etcd:集群主数据库
※kube-apiserver:统一的资源操作入口
※kube-controller-manager:运行在节点上的管理控制组件
※kube-scheduler:资源调度器根据特定的调度算法把pod生成到指定的计算节点中
上述组件均部署在192.168.0.143机器上。这三者的功能紧密相关。同时只能有一个进程处于工作状态,如果运行多个,则需要通过选举产生一个leader。Mster节点上往往还启动了一个etcd Server进程,因为kubernetes集群里的所有资源对象的数据全部是保存在etcd中的,前面我们已经配置好了etcd服务,这里不再赘述。
这里以master01(192.168.0.143)主机为例,进行master节点部署。
1.1 TLS证书文件
pem和token.csv证书文件我们在前面已创建过了,这里直接拿来复用即可:
1.2 配置和启动kube-apiserver
kube-apiserver提供了资源操作的唯一入口,并提供了认证、授权、访问控制、注册和发现等机制。
1.2.1 创建kube-apiserver服务启动文件
路径:/usr/lib/systemd/system/kube-apiserver.service
[Unit] Description=Kubernetes API Server Documentation=https://github.com/kubernetes/kubernetes
[Service] EnvironmentFile=-/opt/kubernetes/config/kube-apiserver ExecStart=/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_ARGS Restart=on-failure
[Install] WantedBy=multi-user.target |
1.2.3 创建kue-apiserver参数配置文件
路径:/opt/kubernetes/config/apiserver
KUBE_APISERVER_ARGS="--logtostderr=true --v=2 --etcd-servers=https://192.168.0.143:2379,https://192.168.0.144:2379,https://192.168.0.145:2379 --insecure-bind-address=0.0.0.0 --bind-address=0.0.0.0 --insecure-port=8080 --enable-swagger-ui=true --secure-port=6443 --advertise-address=0.0.0.0 --allow-privileged=true --service-cluster-ip-range=10.10.10.0/24 --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota,NodeRestriction --authorization-mode=RBAC,Node --kubelet-https=true --enable-bootstrap-token-auth --token-auth-file=/opt/kubernetes/config/token.csv --service-node-port-range=30000-50000 --tls-cert-file=/opt/kubernetes/ssl/kubernetes.pem --tls-private-key-file=/opt/kubernetes/ssl/kubernetes-key.pem --client-ca-file=/opt/kubernetes/ssl/ca.pem --service-account-key-file=/opt/kubernetes/ssl/ca-key.pem --etcd-cafile=/opt/kubernetes/ssl/ca.pem --etcd-certfile=/opt/kubernetes/ssl/kubernetes.pem --etcd-keyfile=/opt/kubernetes/ssl/kubernetes-key.pem"
|
1.2.3 kube-apiserver状态
启动kube-apiserver服务:
#systemctl daemon-reload
#systemctl start kube-apiserver
#systemctl enable kube-apiserver
#systemctl status kube-apiserver
1.2.3 分发kue-apiserver
向master02和master03节点机器上分发kube-apiserver相关配置文件.
分发服务启动文件: #scp kube-apiserver.service 192.168.0.144:/usr/lib/systemd/system #scp kube-apiserver.service 192.168.0.145:/usr/lib/systemd/system
分发参数配置文件: #scp apiserver 192.168.0.144: /opt/kubernetes/config #scp apiserver 192.168.0.145: /opt/kubernetes/config |
【注意】修改apiserver参数配置文件内容需修改为对应节点环境。
1.3 配置和启动kube-controller-manager
kube-controller-manager服务依赖于kube-apiserver服务,负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。
【1】Kubernetes控制器管理器是一个守护进程它通过apiserver监视集群的共享状态,并进行更改以尝试将当前状态移向所需状态。
【2】kube-controller-manager是有状态的服务,会修改集群的状态信息。如果多个master节点上的相关服务同时生效,则会有同步与一致性问题,所以多master节点中的kube-controller-manager服务只能是主备的关系,kukubernetes采用租赁锁(lease-lock)实现leader的选举,具体到kube-controller-manager,设置启动参数"--leader-elect=true"。
1.3.1 创建kube-controller-manager服务启动文件
路径:/usr/lib/systemd/system/kube-controller-manager.service
[Unit] Description=Kubernetes Controller Manager Documentation=https://github.com/kubernetes/kubernetes
[Service] EnvironmentFile=-/opt/kubernetes/config/kube-controller-manager ExecStart=/opt/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_ARGS Restart=on-failure
[Install] WantedBy=multi-user.target |
1.3.1 创建kube-controller-manager参数配置文件
路径:/opt/kubernetes/config/kube-controller-manager
KUBE_CONTROLLER_MANAGER_ARGS="--logtostderr=true --v=2 --master=127.0.0.1:8080 --leader-elect=true --address=127.0.0.1 --service-cluster-ip-range=10.10.10.0/24 --cluster-name=kubernetes --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem --root-ca-file=/opt/kubernetes/ssl/ca.pem"
|
1.3.2 分发kue-controller-manager
向master02和master03节点机器上分发kube-apiserver相关配置文件.
scp kube-apiserver.service 192.168.0.143:/usr/lib/systemd/system scp kube-apiserver.service 192.168.0.144:/usr/lib/systemd/system
scp apiserver 192.168.0.143: /opt/kubernetes/config scp apiserver 192.168.0.144: /opt/kubernetes/config |
【注意】修改apiserver参数配置文件内容需修改为对应节点环境。
1.4 配置和启动kube-scheduler
kube-scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。
【1】kube-scheduler作为组件运行在master节点,主要任务是把从kube-apiserver中获取的未被调度的pod通过一系列调度算法找到最适合的node,最终通过向kube-apiserver中写入Binding对象(其中指定了pod名字和调度后的node名字)来完成调度
【2】kube-scheduler与kube-controller-manager一样,如果高可用,都是采用leader选举模式。启动后将通过竞争选举机制产生一个 leader 节点,其它节点为阻塞状态。当 leader 节点不可用后,剩余节点将再次进行选举产生新的 leader 节点,从而保证服务的可用性。
总结:
kube-scheduler负责分配调度Pod到集群内的node节点;
监听kube-apiserver,查询还未分配的Node的Pod;
根据调度策略为这些Pod分配节点 .
1.4.1 创建kube-scheduler服务启动文件
路径:/usr/lib/systemd/system/kube-scheduler
[Unit] Description=Kubernetes Scheduler Documentation=https://github.com/kubernetes/kubernetes
[Service] EnvironmentFile=-/opt/kubernetes/config/kube-scheduler ExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_ARGS Restart=on-failure
[Install] WantedBy=multi-user.target |
1.4.2 创建kube-scheduler参数配置文件
路径:/usr/lib/systemd/system/kube-scheduler
KUBE_SCHEDULER_ARGS="--logtostderr=true --v=4 --master=127.0.0.1:8080 --leader-elect=true"
|
1.4.3 分发kue-scheduler
向master02和master03节点机器上分发kube-apiserver相关配置文件.
分发服务启动文件: #scp kube-scheduler.service 192.168.0.144:/usr/lib/systemd/system #scp kube- scheduler.service 192.168.0.145:/usr/lib/systemd/system
分发参数配置文件: #scp scheduler 192.168.0.144:/opt/kubernetes/config #scp scheduler 192.168.0.145: /opt/kubernetes/config |
【注意】修改apiserver参数配置文件内容需修改为对应节点环境
1.5 启动master节点的各个组件
Master节点上需要按顺序启动以下组件:
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service
一定要顺序启动etcd,在按顺序启动其他组件。
1.6 检测master节点状态
#kubectl get cs
查看集群leader:
kubectl get endpoints kube-controller-manager --namespace=kube-system -o yaml |
可以看到,此时集群的leader是master01。
1.7 注意事项
上述master节点是以master01(192.168.0.143)主机为例进行部署。
根据官方文档说明,我们部署高可用kubernetes集群一般最少要三台主节点(单节点除外),因此,一定注意再分发上述配置文件到master02和master03主机上后,必须要将文件中对应的节点地址那些参数修改为对应的master节点IP地址。
关于master02和master03节的部署步骤,启动方式与master01部署方式雷同,这里不再赘述。
愿你就像早晨八九点钟的太阳,活力十足,永远年轻。
最后
以上就是负责蜻蜓为你收集整理的(9)二进制文件方式部署Kubernetes高可用集群----------部署master节点部署master节点愿你就像早晨八九点钟的太阳,活力十足,永远年轻。的全部内容,希望文章能够帮你解决(9)二进制文件方式部署Kubernetes高可用集群----------部署master节点部署master节点愿你就像早晨八九点钟的太阳,活力十足,永远年轻。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复