ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

(9)二进制文件方式部署Kubernetes高可用集群----------部署master节点

2019-07-06 14:40:35  阅读:205  来源: 互联网

标签:opt Kubernetes kubernetes 部署 apiserver pem service master kube


部署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证书文件

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

 

1.7 注意事项

上述master节点是以master01(192.168.0.143)主机为例进行部署。

根据官方文档说明,我们部署高可用kubernetes集群一般最少要三台主节点(单节点除外),因此,一定注意再分发上述配置文件到master02和master03主机上后,必须要将文件中对应的节点地址那些参数修改为对应的master节点IP地址。

关于master02和master03节的部署步骤,启动方式与master01部署方式雷同,这里不再赘述。


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

标签:opt,Kubernetes,kubernetes,部署,apiserver,pem,service,master,kube
来源: https://blog.csdn.net/qq_27706119/article/details/94851972

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有