Kubernetes1.91(K8s)安装部署过程(四)--Master节点安装

2023-11-01

再次明确下架构:  三台虚拟机 centos 7.4系统,docker为17版本,ip为10.10.90.105到107,其中105位master,接下来的master相关组件安装到此机器上。

etcd集群为3台,分别复用这3台虚拟机。

 

 

作为k8s的核心,master节点主要包含三个组件,分别是:

三个组件:
kube-apiserver kube-scheduler kube-controller-manager

 

这个三个组件密切联系,再次提醒关闭selinux,关闭防火墙,最好禁用掉。

1、创建TLS证书

这些证书我们在第一篇文章中已经创建,共8个,这里核对一下数量是否正确,至于证书是否正确参考第一篇文章的注释实现。位置:105虚拟机master节点

# ls /etc/kubernetes/ssl
admin-key.pem  admin.pem  ca-key.pem  ca.pem  kube-proxy-key.pem  kube-proxy.pem  kubernetes-key.pem  kubernetes.pem

 

 

2、获取k8s server端文件并安装

 

我们采用在github上下载的方式获得tar包,解压或者二进制程序。说明:这里使用的是最新的1.9版本的。

wget https://dl.k8s.io/v1.9.0/kubernetes-server-linux-amd64.tar.gz
tar -xzvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes
tar -xzvf  kubernetes-src.tar.gz

 

拷贝二进制文件到/usr/bin下,可能会提示overwrite,因为前面安装的kubectl会安装一部分,直接覆盖就好,下面的语句使用了-r去覆盖,不加-r会提示,并且这个server包含server和client文件,不用单独下载client包

cp -r server/bin/{kube-apiserver,kube-controller-manager,kube-scheduler,kubectl,kube-proxy,kubelet} /usr/local/bin/

至此一些必要的二进制命令文件获取完毕,下一部制作3个组件的服务程序和配置文件

 

3、制作apiserver的服务文件

/usr/lib/systemd/system/kube-apiserver.service内容:

[Unit]
Description=Kubernetes API Service
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
After=etcd.service

[Service]
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/apiserver
ExecStart=/usr/local/bin/kube-apiserver \
        $KUBE_LOGTOSTDERR \
        $KUBE_LOG_LEVEL \
        $KUBE_ETCD_SERVERS \
        $KUBE_API_ADDRESS \
        $KUBE_API_PORT \
        $KUBELET_PORT \
        $KUBE_ALLOW_PRIV \
        $KUBE_SERVICE_ADDRESSES \
        $KUBE_ADMISSION_CONTROL \
        $KUBE_API_ARGS
Restart=on-failure
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

制作/etc/kubernetes/config通用文件,的内容为:

###
# kubernetes system config
#
# The following values are used to configure various aspects of all
# kubernetes services, including
#
#   kube-apiserver.service
#   kube-controller-manager.service
#   kube-scheduler.service
#   kubelet.service
#   kube-proxy.service
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"

# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0"

# Should this cluster be allowed to run privileged docker containers
KUBE_ALLOW_PRIV="--allow-privileged=true"

# How the controller-manager, scheduler, and proxy find the apiserver
#KUBE_MASTER="--master=http://sz-pg-oam-docker-test-001.tendcloud.com:8080"
KUBE_MASTER="--master=http://10.10.90.105:8080"

 

kube-apiserver的配置文件/etc/kubernetes/apiserver内容为:

 

###
# kubernetes system config
#
# The following values are used to configure the kube-apiserver
#

# The address on the local server to listen to.
KUBE_API_ADDRESS="--advertise-address=10.10.90.105 --bind-address=10.10.90.105 --insecure-bind-address=127.0.0.1"

# The port on the local server to listen on.
#KUBE_API_PORT="--port=8080"

# Port minions listen on
# KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=https://10.10.90.105:2379,https://10.10.90.106:2379,https://10.10.90.107:2379"

# Address range to use for services
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

# default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction"

# Add your own!
KUBE_API_ARGS="--authorization-mode=RBAC,Node --runtime-config=rbac.authorization.k8s.io/v1beta1 --kubelet-https=true --enable-bootstrap-token-auth --token-auth-file=/etc/kubernetes/token.csv --service-node-port-range=30000-32767 --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 --enable-swagger-ui=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" 

 

 

设置开机启动并启动apiserver组件:

systemctl daemon-reload
systemctl enable kube-apiserver
systemctl start kube-apiserver
systemctl status kube-apiserver

 

ss -tanl  检查端口,6443和8080端口应该监听成功,代表apiserver安装成功。

 

4、配置和启动 kube-controller-manager

 

服务定义文件/usr/lib/systemd/system/kube-controller-manager.service内容为:

说明,某些文件可能已经存在,我们只要核对内容即可。

[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes

[Service]
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/controller-manager
ExecStart=/usr/local/bin/kube-controller-manager \
        $KUBE_LOGTOSTDERR \
        $KUBE_LOG_LEVEL \
        $KUBE_MASTER \
        $KUBE_CONTROLLER_MANAGER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

 

相关配置文件配置文件/etc/kubernetes/controller-manager内容:

###
# The following values are used to configure the kubernetes controller-manager

# defaults from config and apiserver should be adequate

# Add your own!
KUBE_CONTROLLER_MANAGER_ARGS="--address=127.0.0.1 --service-cluster-ip-range=10.254.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"

设置开机启动并启动controller-manager

systemctl daemon-reload
systemctl enable kube-controller-manager
systemctl start kube-controller-manager

 

5、配置和启动 kube-scheduler

服务定义文件/usr/lib/systemd/system/kube-scheduler.service内容为:

[Unit]
Description=Kubernetes Scheduler Plugin
Documentation=https://github.com/GoogleCloudPlatform/kubernetes

[Service]
EnvironmentFile=-/etc/kubernetes/config
EnvironmentFile=-/etc/kubernetes/scheduler
User=kube
ExecStart=/usr/local/bin/kube-scheduler \
        $KUBE_LOGTOSTDERR \
        $KUBE_LOG_LEVEL \
        $KUBE_MASTER \
        $KUBE_SCHEDULER_ARGS
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

 相关的配置文件/etc/kubernetes/scheduler内容为:

###
# kubernetes scheduler config

# default config should be adequate

# Add your own!
KUBE_SCHEDULER_ARGS="--leader-elect=true --address=127.0.0.1"

 

设置开机启动并启动:

systemctl daemon-reload
systemctl enable kube-scheduler
systemctl start kube-scheduler

 

6、所有服务启动之后验证服务

首先ss -tanl查看端口:我的如下:

 

使用kubectl get命令获得组件信息:确保所有组件都是ok和healthy状态为true

[root@c7test_master ~]# kubectl get componentstatuses
NAME                 STATUS    MESSAGE              ERROR
scheduler            Healthy   ok                   
controller-manager   Healthy   ok                   
etcd-2               Healthy   {"health": "true"}   
etcd-1               Healthy   {"health": "true"}   
etcd-0               Healthy   {"health": "true"} 

 

至此,master节点安装完成,在创建配置文件的过程中一定要信息,如果发现报错,使用journalctl -xe -u 服务名称  查看相关报错以及查看/var/log/message查看更详细的报错情况,具体情况具体解决即可。

注意事项:1、拷贝配置文件注意标点符号2、需要创建kube账户,否则scheduler启动不了

 

补充:

source <(kubectl completion bash)

执行以上命令可以执行kubectl命令的自动补全,因为kubectl太多子命令了。

 

转载于:https://www.cnblogs.com/netsa/p/8194241.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes1.91(K8s)安装部署过程(四)--Master节点安装 的相关文章

  • python入门笔记——函数①

    python入门笔记 函数 def function 定义一个名为function的函数 定义函数时用下面来解释该函数的用处 这个函数是用来重复输出4次 你好 的 return for i in range 1 5 print 你好 pas
  • SSL、TLS、HTTPS的关系

    SSL TLS HTTPS的关系 SSL Secure Sockets Layer 安全套接字协议 TLS Transport Layer Security 传输层安全性协议 TLS是SSL的升级版 两者几乎是一样的 HTTPS Hyper

随机推荐

  • Java 多线程 -- 从入门到精通

    持续更新中 欢迎收藏 关注 以便查看后续 Java 多线程 从入门到精通 Java线程与线程的区别 多线程的实现方法 Thread中start和run方法的区别 Thread和Runnable的关系 使用Callable和Future创建线
  • 神经网络的三种可视化方法——使用keras和MXNet(gluon)实现

    神经网络的三种可视化方法 用keras和MXNet gluon 实现 目录 神经网络的三种可视化方法 用keras和MXNet gluon 实现 概述 keras实现 keras特征图可视化 keras可视化滤波器 卷积核 的最大响应图 k
  • 清除内存/缓存

    1 查看缓存 free h 2 清理缓存 sync echo 3 gt proc sys vm drop caches 我们在清理缓存前应该先sync下 因为系统在操作的过程当中 会把你的操作到的文件资料先保存到buffer中去 因为怕你在
  • 刷脸支付产业也迎来新的跃升时刻

    2019年刷脸支付异常火爆 一种创投人青睐有加 纷纷入局 一项新事物从诞生到发展总要经历很多波折 对于刷脸支付行业来说 更是如此 2020年初新冠疫情肆虐 人们被围在城里 圈在村里 各类实体门店到店率急剧下降 刷脸支付一度遇冷 而在疫情期间
  • C++星罗万象时钟罗盘

    编写思路 该程序的难点在于字符串的书写角度 理解了这个就已经理解了这个程序的核心内容 需要注意的地方是这个程序的每一圈代表一个 for 循环 我开始写的时候认为一个 for 循环嵌套一个 for 循环 但是后面我发现 for 循环嵌套的太多
  • vue-chat项目之重构与体验优化

    前言 vue chat 也就是我的几个月之前写的一个基于vue的实时聊天项目 到目前为止已经快满400star了 注册量也已经超过了1700 消息量达2000 由于一直在实习 没有时间对它频繁地更新 趁着这个国庆 对他进行了一次重构 希望我
  • 国内研发!适用于安卓应用程序的 Word文档功能开发组件来啦!

    你是否在寻找一款工具能够在Android应用程序中的Word文档管理的开发工具 那么 好消息来啦 Spire系列文档开发组件又添新成员 专门用于在 Android 手机应用程序中创建 读取 操作和转换 Word 文档 Spire Doc f
  • Flutter移动应用开发 - 商品界面

    目录 0 项目简介 1 效果展示 2 代码 commodity dart CardTry dart recentPurchase dart 0 项目简介 项目想法脱胎于2023年服务外包大赛A18题 随手买 详情 整个APP思路如下 这篇博
  • QDockWidget设置初始大小的一个解决方案

    QDockWidget仅仅作为其子控件的一个包装 因此对其使用resize 或者setGeometry 均不管用 这造成QDockWidget的初始大小常常不尽如人意 网上有前辈提出通过调用QDockWidget的setMaximumSiz
  • ElementUI浅尝辄止34:Radio 单选框

    在一组备选项中进行单选 1 如何使用 由于选项默认可见 不宜过多 若选项过多 建议使用 Select 选择器 要使用 Radio 组件 只需要设置v model绑定变量 选中意味着变量的值为相应 Radio label属性的值 label可
  • 工业设备自动化平台的一些杂想

    今天是愚人节 浦西开始正式封闭 所有人都被关在家里足不出户 等待着不知道何时开始的核酸检测 一时间也不知道能做些啥 闲的发慌 总得找点事情做做 翻了会CLR的书 又背了会单词 总感觉心不静 回想起之前被人问过的工业设备自动化平台的问题 突然
  • 非递归实现二叉树遍历(附c++完整代码)

    先序 中序和后序遍历过程 遍历过程中经过结点的路线一样 只是访问各结点的时机不同 从图中可以看到 前序遍历在第一次遇见元素时输出 中序遍历在第二次遇见元素时输出 后序遍历在第三次遇见元素时输出 非递归算法实现的基本思路 使用堆栈 一 前序遍
  • 【Android Studio】android.database.sqlite.SQLiteException: no such table: XXX (code 1 SQLITE_ERROR)

    问题描述 android database sqlite SQLiteException no such table XXX code 1 SQLITE ERROR while compling select from xxxx 参考了各种
  • 字符替换C++

    题目描述 把一个字符串中特定的字符全部用给定的字符替换 得到一个新的字符串 输入 只有一行 由一个字符串和两个字符组成 中间用单个空格隔开 字符串是待替换的字符串 字符串长度小于等于1000个字符 且不含空格等空白符 接下来一个字符为需要被
  • FileReader读取文件

    前言 FileReader是一种异步文件读取机制 结合input file可以很方便的读取本地文件 input file 在介绍FileReader之前 先简单介绍input的file类型
  • doxygen教程-6-把注释放在其他位置

    文章目录 把注释放到成员之后 注释在头文件和源文件的分布 Structural commands 把注释放到 几乎 任意位置 只有先注释高层级的结构 才会显示低层级的注释 把注释放到成员之后 这里出现了新词 成员 member 在官方手册里
  • ubuntu18.04更新clang的版本

    可选 添加bionic相关的源 1 备份 etc apt sources list 2 添加源到sources list文件最后 sudo vim etc apt sources list deb http archive ubuntu c
  • 模型结构可视化神器——Netron(支持tf, caffe, keras,mxnet等多种框架)

    转自 https blog csdn net leviopku article details 81980249 很多时候 复现人家工程的时候 需要了解人家的网络结构 但不同框架之间可视化网络层方法不一样 这样给研究人员造成了很大的困扰 前
  • 【华为OD机试真题2023 JS】几何平均值最大子数组

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 几何平均值最大子数组 知识点数组二分查找 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 从一个长度为N的正数数组numbers中找出长度至少为L且几何平均值最大
  • Kubernetes1.91(K8s)安装部署过程(四)--Master节点安装

    再次明确下架构 三台虚拟机 centos 7 4系统 docker为17版本 ip为10 10 90 105到107 其中105位master 接下来的master相关组件安装到此机器上 etcd集群为3台 分别复用这3台虚拟机 作为k8s