我是靠谱客的博主 负责蜻蜓,最近开发中收集的这篇文章主要介绍(9)二进制文件方式部署Kubernetes高可用集群----------部署master节点部署master节点愿你就像早晨八九点钟的太阳,活力十足,永远年轻。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

部署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"

 

参数说明:

--logtostderr:设置为false表示将该日志写入文件,不写入srderr; 如果true则相反

--v=4 :日志级别

--etcd-servers:指定etcd服务的URL

--insecure-bind-address:apiserver绑定的非安全IP地址,上述配置表示绑定所有IP地址

--bind-address=0.0.0.0

--insecure-port:apiserver绑定的非安全端口号,默认8080

--secure-port=6443 :绑定安全访问端口

--advertise-address=0.0.0.0 :绑定通告地址

--allow-privileged=true

--service-cluster-ip-range:集群中service的虚拟IP地址段,该地址不能路由可达

--admission-control:集群的准入控制设置,各控制模块插件的形式依次生效

--authorization-mode=RBAC,Node :指定在安全端口使用RBAC授权模式,拒绝未通授权的请求。

--runtime-config=rbac.authorization.k8s.io/v1beta1

--kubelet-https=true :支持https

--enable-bootstrap-token-auth

--token-auth-file=/opt/kubernetes/config/token.csv :指定token文件路径,鉴权

--service-node-port-range:集群节点端口范围

--tls-cert-file:服务端证书文件

--tls-private-key-file:服务端私钥文件

--client-ca-file:CA根证书文件

--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

--enable-swagger-ui=true

 

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"

参数说:

--master:指定apiserver的URL地址

--v:日志级别

--logtostderr:设置为false表示价格日志写入文件,不写入srderr;true则相反

--leader-elect

--address=127.0.0.1 :必须为127.0.0.1,因为当前kube-apiserver期望scheduler和controller-manager在同一台机器

--service-cluster-ip-range=10.10.10.0/24  

--cluster-name=kubernetes  :集群名

--cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem :指定的证书和私钥文件来签名为TLS BoostStrap创建的证书和私钥

--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":用来对kube-apiserver证书进行校验,指定该参数后,才会在Pod容器的ServiceAccount中放置该CA证书文件

 

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节点愿你就像早晨八九点钟的太阳,活力十足,永远年轻。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部