资讯专栏INFORMATION COLUMN

K8S学习笔记 | 如何部署 Kubernetes master 节点

ernest.wang / 1467人阅读

摘要:年初开始研究,至目前已发表近篇学习笔记。同时,他也是中国社区的活跃者,见证了中国社区的一路成长。经本人授权,从本周开始,中国将转载他的学习笔记,由浅入深地分享他在学习过程中的收获。节点包含的组件目前这三个组件需要部署在同一台机器上。

作者:宋净超

宋净超(Jimmy Song),TalkingData 容器技术负责人,微服务和云原生应用布道者。2017 年初开始研究 Kubernetes,至目前已发表近 40 篇 Kubernetes 学习笔记。同时,他也是「K8sMeetup 中国社区」的活跃者,见证了「K8sMeetup 中国社区」的一路成长。

经 Jimmy Song 本人授权, 从本周开始,K8sMeetup 中国将转载他的 Kubernetes 学习笔记,由浅入深地分享他在学习过程中的收获。7 月 22 日,北京 K8S 2 周年Meetup,Jimmy Song 也将到现场进行分享,欢迎 Kubernetes 爱好者届时参与。

kubernetes master 节点包含的组件:

kube-apiserver
kube-scheduler
kube-controller-manager
目前这三个组件需要部署在同一台机器上。

kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关;
同时只能有一个 kube-scheduler、kube-controller-manager 进程处于工作状态,如果运行多个,则需要通过选举产生一个 leader;
本文档记录部署一个三个节点的高可用 kubernetes master 集群步骤。(后续创建一个 load balancer 来代理访问 kube-apiserver 的请求)

暂时未实现master节点的高可用。

TLS 证书文件

pem和token.csv证书文件我们在TLS证书和秘钥这一步中已经创建过了。我们再检查一下。

下载最新版本的二进制文件

有两种下载方式

方式一

从 github release 页面 下载发布版 tarball,解压后再执行下载脚本

方式二

从 CHANGELOG页面 下载 client 或 server tarball 文件

server 的 tarball kubernetes-server-linux-amd64.tar.gz 已经包含了 client(kubectl) 二进制文件,所以不用多带带下载kubernetes-client-linux-amd64.tar.gz文件;


配置和启动 kube-apiserver

创建 kube-apiserver的service配置文件

serivce配置文件/usr/lib/systemd/system/kube-apiserver.service内容:

--authorization-mode=RBAC 指定在安全端口使用 RBAC 授权模式,拒绝未通过授权的请求;
kube-scheduler、kube-controller-manager 一般和 kube-apiserver 部署在同一台机器上,它们使用非安全端口和 kube-apiserver通信;
kubelet、kube-proxy、kubectl 部署在其它 Node 节点上,如果通过安全端口访问 kube-apiserver,则必须先通过 TLS 证书认证,再通过 RBAC 授权;
kube-proxy、kubectl 通过在使用的证书里指定相关的 User、Group 来达到通过 RBAC 授权的目的;
如果使用了 kubelet TLS Boostrap 机制,则不能再指定 --kubelet-certificate-authority、--kubelet-client-certificate 和 --kubelet-client-key 选项,否则后续 kube-apiserver 校验 kubelet 证书时出现 ”x509: certificate signed by unknown authority“ 错误;
--admission-control 值必须包含 ServiceAccount;
--bind-address 不能为 127.0.0.1;
runtime-config配置为rbac.authorization.k8s.io/v1beta1,表示运行时的apiVersion;
--service-cluster-ip-range 指定 Service Cluster IP 地址段,该地址段不能路由可达;
缺省情况下 kubernetes 对象保存在 etcd /registry 路径下,可以通过 --etcd-prefix 参数进行调整;
完整 unit 见 kube-apiserver.service

如果有组件report unhealthy请参考:https://github.com/kubernetes...

完整 unit 见 kube-controller-manager.service

启动 kube-controller-manager

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32562.html

相关文章

  • Kubernetes学习笔记(持续更新)

    摘要:常用命令服务启动滚动升级概念集群分布式存储保存了整个集群的状态控制节点控制节点负责整个集群的管理,例如容器调度资源状态维护自动扩展滚动更新等服务节点服务节点是真正运行容器 1.常用命令 服务启动 [root@k8s-master ~]# systemctl start etcd [root@k8s-master ~]# systemctl start docker [root@k8s-...

    XBaron 评论0 收藏0
  • kubernetes学习

    摘要:知识点核心组件保存整个集群的状态信息,感觉相当于的数据库提供对资源操作的唯一入口,并提供认证授权,访问控制,注册与发现等机制负责维护集群的状态,故障检测,自动扩展,滚动更新等负责对资源的调度,按着预定的调度策略将调度到相应的集群上负责维护容 kubernetes kubernetes 知识点 1. 核心组件 etcd 保存整个集群的状态信息,感觉相当于k8s的数据库 apiserve...

    lncwwn 评论0 收藏0
  • kubernetes学习

    摘要:知识点核心组件保存整个集群的状态信息,感觉相当于的数据库提供对资源操作的唯一入口,并提供认证授权,访问控制,注册与发现等机制负责维护集群的状态,故障检测,自动扩展,滚动更新等负责对资源的调度,按着预定的调度策略将调度到相应的集群上负责维护容 kubernetes kubernetes 知识点 1. 核心组件 etcd 保存整个集群的状态信息,感觉相当于k8s的数据库 apiserve...

    jayce 评论0 收藏0
  • 如何用 Ansible 部署 Kubernetes 集群到 OpenStack

    摘要:测试后,使用来发布。部署软件组件,启动虚拟机,将虚拟机分类到和节点,然后部署密钥清单。集群自动化集群配置由三个控制。自签证书签署的服务器端证书和它的密钥文件。 我们之前聊了把OpenStack跑在K8S上,如何基于Kubernetes在TCP云端创建私有云解决方法,运用在生产或在OpenStack启动虚拟化。今天换个姿势,我们来看看如何在OpenStack虚拟机上运行Kubernete...

    jiekechoo 评论0 收藏0
  • Kubernetes 入门基础

    摘要:我们要学习,就有首先了解的技术范围基础理论知识库等,要学习,肯定要有入门过程,在这个过程中,学习要从易到难,先从基础学习。组件组件一个集群是由一组被称为节点的机器或虚拟机组成,节点有两种类型。我们要学习 Kubernetes,就有首先了解 Kubernetes 的技术范围、基础理论知识库等,要学习 Kubernetes,肯定要有入门过程,在这个过程中,学习要从易到难,先从基础学习。 接...

    myshell 评论0 收藏0

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<