前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Kubernetes 1.8.6 集群部署–Master节点(五)

Kubernetes 1.8.6 集群部署–Master节点(五)

原创
作者头像
老七Linux
发布于 2018-05-15 11:47:08
发布于 2018-05-15 11:47:08
1.5K70
代码可运行
举报
运行总次数:0
代码可运行

部署 master 节点

上面的那一堆都是准备工作,下面开始正式部署kubernetes了,

在master节点进行部署。

下载安装文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget https://dl.k8s.io/v1.8.6/kubernetes-server-linux-amd64.tar.gz

# tar -xzvf kubernetes-server-linux-amd64.tar.gz

# cp -r kubernetes/server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl,kube-proxy,kubelet} /usr/local/bin/
配置和启动 kube-apiserver
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat > kube-apiserver.service << EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
After=etcd.service

[Service]
ExecStart=/usr/local/bin/kube-apiserver \\
  --logtostderr=true \\
  --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction \\
  --advertise-address=192.168.161.161 \\
  --bind-address=192.168.161.161 \\
  --insecure-bind-address=127.0.0.1 \\
  --authorization-mode=Node,RBAC \\
  --runtime-config=rbac.authorization.k8s.io/v1alpha1 \\
  --kubelet-https=true \\
  --enable-bootstrap-token-auth \\
  --token-auth-file=/etc/kubernetes/token.csv \\
  --service-cluster-ip-range=10.254.0.0/16 \\
  --service-node-port-range=8400-10000 \\
  --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem \\
  --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \\
  --client-ca-file=/etc/kubernetes/ssl/ca.pem \\
  --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem \\
  --etcd-cafile=/etc/kubernetes/ssl/ca.pem \\
  --etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem \\
  --etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem \\
  --etcd-servers=https://192.168.161.161:2379,https://192.168.161.162:2379,https://192.168.161.163:2379 \\
  --enable-swagger-ui=true \\
  --allow-privileged=true \\
  --apiserver-count=3 \\
  --audit-log-maxage=30 \\
  --audit-log-maxbackup=3 \\
  --audit-log-maxsize=100 \\
  --audit-log-path=/var/lib/audit.log \\
  --event-ttl=1h \\
  --v=2
Restart=on-failure
RestartSec=5
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

注意 更换成自己的IP

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
–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 地址段,该地址段不能路由可达; 

–service-node-port-range 指定 NodePort 的端口范围; 

缺省情况下 kubernetes 对象保存在 etcd /registry 路径下,可以通过 –etcd-prefix 参数进行调整;
启动 kube-apiserver
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cp kube-apiserver.service /etc/systemd/system/

# systemctl daemon-reload

# systemctl enable kube-apiserver

# systemctl start kube-apiserver

# systemctl status kube-apiserver

kube-apiserver.service - Kubernetes API Server
   Loaded: loaded (/etc/systemd/system/kube-apiserver.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2018-03-19 16:26:03 CST; 19s ago
     Docs: https://github.com/GoogleCloudPlatform/kubernetes
 Main PID: 5948 (kube-apiserver)
   CGroup: /system.slice/kube-apiserver.service
           └─5948 /usr/local/bin/kube-apiserver --logtostderr=true --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction --advertise-address=192....

319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.901059    5948 wrap.go:42] POST /api/v1/namespaces: (11.166039ms) 409 [[kube-apiserver/v1.8.6 (linux/amd64) kubernetes/6260bb0] 192...161.161:60460]
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.914750    5948 wrap.go:42] POST /apis/rbac.authorization.k8s.io/v1beta1/namespaces/kube-system/rolebindings: (5.722228ms) 201 [[kub...161.161:60460]
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.915229    5948 storage_rbac.go:287] created rolebinding.rbac.authorization.k8s.io/system:controller:token-cleaner in kube-system
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.929618    5948 wrap.go:42] GET /apis/rbac.authorization.k8s.io/v1beta1/namespaces/kube-public/rolebindings/system:controller:bootst...161.161:60460]
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.935152    5948 wrap.go:42] POST /api/v1/namespaces: (4.882855ms) 409 [[kube-apiserver/v1.8.6 (linux/amd64) kubernetes/6260bb0] 192....161.161:60460]
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.965294    5948 wrap.go:42] POST /apis/rbac.authorization.k8s.io/v1beta1/namespaces/kube-public/rolebindings: (17.302393ms) 201 [[ku...161.161:60460]
319 16:26:05 master1 kube-apiserver[5948]: I0319 16:26:05.965805    5948 storage_rbac.go:287] created rolebinding.rbac.authorization.k8s.io/system:controller:bootstrap-signer in kube-public
319 16:26:13 master1 kube-apiserver[5948]: I0319 16:26:13.776733    5948 wrap.go:42] GET /api/v1/namespaces/default: (2.511793ms) 200 [[kube-apiserver/v1.8.6 (linux/amd64) kubernetes/6260bb...161.161:60460]
319 16:26:13 master1 kube-apiserver[5948]: I0319 16:26:13.780367    5948 wrap.go:42] GET /api/v1/namespaces/default/services/kubernetes: (2.593409ms) 200 [[kube-apiserver/v1.8.6 (linux/amd6...161.161:60460]
319 16:26:13 master1 kube-apiserver[5948]: I0319 16:26:13.784057    5948 wrap.go:42] GET /api/v1/namespaces/default/endpoints/kubernetes: (2.67392ms) 200 [[kube-apiserver/v1.8.6 (linux/amd6...161.161:60460]
Hint: Some lines were ellipsized, use -l to show in full.
配置和启动 kube-controller-manager
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat > kube-controller-manager.service << EOF
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes

[Service]
ExecStart=/usr/local/bin/kube-controller-manager \\
  --logtostderr=true  \\
  --address=127.0.0.1 \\
  --master=http://127.0.0.1:8080 \\
  --allocate-node-cidrs=true \\
  --service-cluster-ip-range=10.254.0.0/16 \\
  --cluster-cidr=172.30.0.0/16 \\
  --cluster-name=kubernetes \\
  --cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \\
  --cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem \\
  --service-account-private-key-file=/etc/kubernetes/ssl/ca-key.pem \\
  --root-ca-file=/etc/kubernetes/ssl/ca.pem \\
  --leader-elect=true \\
  --v=2
Restart=on-failure
LimitNOFILE=65536
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
–address 值必须为 127.0.0.1,因为当前 kube-apiserver 期望 scheduler 和 controller-manager 在同一台机器;

–master=http://{MASTER_IP}:8080:使用非安全 8080 端口与 kube-apiserver 通信; 

–cluster-cidr 指定 Cluster 中 Pod 的 CIDR 范围,该网段在各 Node 间必须路由可达(flanneld保证); 

–service-cluster-ip-range 参数指定 Cluster 中 Service 的CIDR范围,该网络在各 Node 间必须路由不可达,必须和 kube-apiserver 中的参数一致; 

–cluster-signing-* 指定的证书和私钥文件用来签名为 TLS BootStrap 创建的证书和私钥; 

–root-ca-file 用来对 kube-apiserver 证书进行校验,指定该参数后,才会在Pod 容器的 ServiceAccount 中放置该 CA 证书文件; 

–leader-elect=true 部署多台机器组成的 master 集群时选举产生一处于工作状态的 kube-controller-manager 进程;
启动 kube-controller-manager
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cp kube-controller-manager.service /etc/systemd/system/

# systemctl daemon-reload

# systemctl enable kube-controller-manager

# systemctl start kube-controller-manager
配置和启动 kube-scheduler
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat > kube-scheduler.service << EOF
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/GoogleCloudPlatform/kubernetes

[Service]
ExecStart=/usr/local/bin/kube-scheduler \\
  --logtostderr=true \\
  --address=127.0.0.1 \\
  --master=http://127.0.0.1:8080 \\
  --leader-elect=true \\
  --v=2
Restart=on-failure
LimitNOFILE=65536
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
–address 值必须为 127.0.0.1,因为当前 kube-apiserver 期望 scheduler 和 controller-manager 在同一台机器; 

–master=http://{MASTER_IP}:8080:使用非安全 8080 端口与 kube-apiserver 通信; 

–leader-elect=true 部署多台机器组成的 master 集群时选举产生一处于工作状态的 kube-controller-manager 进程;
启动 kube-scheduler
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cp kube-scheduler.service /etc/systemd/system/

# systemctl daemon-reload

# systemctl enable kube-scheduler

# systemctl start kube-scheduler
验证 master 节点功能
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master1 ~]# kubectl get cs
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-0               Healthy   {"health": "true"}   
etcd-2               Healthy   {"health": "true"}   
etcd-1               Healthy   {"health": "true"}   

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
7 条评论
热度
最新
很细致,正在学习搭建部署中。。。
很细致,正在学习搭建部署中。。。
回复回复点赞举报
谢谢分享
谢谢分享
回复回复点赞举报
能不能再具体讲解一下呢,环境部署那块不是很清楚
能不能再具体讲解一下呢,环境部署那块不是很清楚
11点赞举报
有问题可以随时提出来的,我可以解答!
有问题可以随时提出来的,我可以解答!
回复回复点赞举报
谢谢分享
谢谢分享
回复回复点赞举报
学习了
学习了
回复回复点赞举报
很好的集群搭建文档,学习了
很好的集群搭建文档,学习了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Kubernetes 1.8.6 集群部署–Master节点(五)
部署 master 节点 上面的那一堆都是准备工作,下面开始正式部署kubernetes了, 在master节点进行部署。 下载安装文件 # wget https://dl.k8s.io/v1.8.6/kubernetes-server-linux-amd64.tar.gz # tar -xzvf kubernetes-server-linux-amd64.tar.gz # cp -r kubernetes/server/bin/{kube-apiserver,kube-controller-manag
老七Linux
2018/05/31
8420
kubernetes 之 master高可用集群搭建
1、k8s的node默认已经有高可用了,因为在pod会随机分配到各个node上,如果有pod挂了,就会分配到其他node上,所以这里主要是做一下master的高可用。
kubernetes中文社区
2019/06/24
6.1K0
kubernetes 之 master高可用集群搭建
Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
0. 前言 紧接上一篇,本篇文章我们尝试学习多节点部署 kubernetes 集群 并通过 haproxy+keepalived 实现 Master 节点的负载均衡 1. 实验环境 实验环境主要为 5 台虚拟机,IP 地址分别为:192.168.1.65、192.168.1.66、192.168.1.67、192.168.1.68、192.168.1.69 1.1 节点分配 LB 节点: lb1:192.168.1.65 lb2:192.168.1.66 Master 节点: master1:192.
西凉风雷
2022/11/23
1.6K0
Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
k8s集群部署六(部署master节点组件) 顶
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md
算法之名
2019/08/20
6850
06-搭建master集群
部署高可用 kubernetes master 集群 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 目前这三个组件需要部署在同一台机器上。 kube-scheduler、kube-controller-manager 和 kube-apiserver 三者的功能紧密相关; 同时只能有一个 kube-scheduler、kube-controller-manager 进程处于工作状态,如果运行多
程序员同行者
2018/07/03
5470
Kubernetes高可用集群二进制部署(三)部署api-server
在工作节点上分发软件,因为只规划了一台服务器作为工作节点(k8s-worker1),实际在工作中为了节省资源会把master同时作为工作节点
鱼找水需要时间
2023/08/03
4300
Kubernetes高可用集群二进制部署(三)部署api-server
Kubernetes-V1.14.2 二进制编译部署(master节点部署篇)
vim /usr/lib/systemd/system/kube-scheduler.service
运维搬砖
2019/07/24
1.3K0
Kubernetes-V1.14.2 二进制编译部署(master节点部署篇)
Kubernetes 1.8.6 集群部署–基础环境(一)
k8s 目前架构重构就用到了,太有吸引力了,都说k8s难搞,之前使用yum搭建了一个简易的K8S环境组件也不是太完善,今天就来重新再次部署一个完整些的,主要是学习与了解 Kubernetes 创建流程。
老七Linux
2018/05/13
8471
Kubernetes 1.8.6 集群部署–基础环境(一)
k8s集群部署高可用完整版
环境规划 k8s-master1 192.168.0.131 kube-apiserver kube-controller-manager kube-scheduler etcd k8s-master2 192.168.0.132 kube-apiserver kube-controller-manager kube-scheduler k8s-node01 192.168.0.133 kubelet kube-proxy docker etcd k8s-node02 192.168.0.134 kubel
yuezhimi
2020/09/30
1.4K0
k8s集群部署高可用完整版
Kubernetes集群部署篇( 一)
K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,我们这里强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常
老七Linux
2018/05/31
1.8K1
Kubernetes集群搭建之Master配置篇
本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复【K8s实战】获取
程序员同行者
2019/03/19
1K0
Kubernetes集群搭建之Master配置篇
Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
0. 前言 最近受“新冠肺炎”疫情影响,在家等着,入职暂时延后,在家里办公和学习 尝试通过源码编译二进制的方式在单一节点(Master 与 Node 部署在同一个机器上)上部署一个 k8s 环境,整理相关步骤和脚本如下 参考原文:Kubernetes二进制部署(一)单节点部署 1. 相关概念 1.1 基本架构 1.2 核心组件  1.2.1 Master 1.2.1.1 kube-apiserver 集群的统一入口,各组件协调者 以RESTful API提供接口服务 所有对象资源的增删改查和监听操作都
西凉风雷
2022/11/23
1.4K0
Kubernetes 二进制部署(一)单节点部署(Master 与 Node 同一机器)
二进制包部署管理Kubernetes集群
K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少。这篇文章是使用二进制包部署Kubernetes集群。
菲宇
2022/12/21
5110
二进制包部署管理Kubernetes集群
Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-manager、kube-scheduler
kube.config`` 为kubectl的配置文件,包含访问 `apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
鱼找水需要时间
2023/08/03
3490
Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-manager、kube-scheduler
Kubernetes(k8s)1.14 离线版集群 - 部署master节点
声明: 如果您有更好的技术与作者分享,或者商业合作; 请访问作者个人网站 http://www.esqabc.com/view/message.html 留言给作者。 如果该案例触犯您的专利,请在这里:http://www.esqabc.com/view/message.html 留言给作者说明原由 作者一经查实,马上删除。
Mr.Vv
2020/06/11
8180
Kubernetes(k8s)1.14 离线版集群 - 部署master节点
Kubernetes 1.22.1 高可用二进制部署
kube.config 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书
云原生运维
2021/09/17
5.5K1
Kubernetes 1.22.1 高可用二进制部署
Kubernetes-v1.24版安装部署之Mater节点安装部署
Kubernetes Master节点部署三个服务:kube-apiserver、kube-controller-manager、kube-scheduler和一个命令工具kubectl.
王先森sec
2023/04/24
4710
第四篇(二进制部署k8s集群---master集群部署)
本文在以下主机上操作部署k8s集群 k8s-master1:192.168.206.31 k8s-master2:192.168.206.32 k8s-master3:192.168.206.33
@凌晨
2020/11/23
7100
k8s1.13.0二进制部署-master节点(三)
下载二进制包:https://github.com/kubernetes/kubernetes
yuezhimi
2020/09/30
5660
IT苦工指南 | Kubernetes v1.8.x全手动安装
觉得Rainbond提供的既简洁、又易用、而且生产就绪的Kubernets体验不过瘾……
Rainbond开源
2018/05/28
1.2K3
推荐阅读
相关推荐
Kubernetes 1.8.6 集群部署–Master节点(五)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档