【4】搭建k8s集群系列(二进制部署)之安装master节点组件(kube-apiserver)

一、下载k8s二进制文件

下载地址:
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG
-1.20.md

注:打开链接你会发现里面有很多包,下载一个 server 包就够了,包含了 Master 和 Worker Node 二进制文件。
在这里插入图片描述

二、解压二进制包

# 创建工作目录
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
# 解压
tar zxvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin
cp kube-apiserver kube-scheduler kube-controller-manager /opt/kubernetes/bin
cp kubectl /usr/bin/

三、部署 kube-apiserver

3.1 创建配置文件

cat > /opt/kubernetes/cfg/kube-apiserver.conf << EOF
KUBE_APISERVER_OPTS="--logtostderr=false \\
--v=2 \\
--log-dir=/opt/kubernetes/logs \\
--etcd-servers=https://192.168.1.20:2379,https://192.168.1.21:2379,https://192.168.1.22:2379 \\
--bind-address=192.168.1.20 \\
--secure-port=6443 \\
--advertise-address=192.168.1.20 \\
--allow-privileged=true \\
--service-cluster-ip-range=10.0.0.0/24 \\
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction\\
--authorization-mode=RBAC,Node \\
--enable-bootstrap-token-auth=true \\
--token-auth-file=/opt/kubernetes/cfg/token.csv \\
--service-node-port-range=30000-32767 \\
--kubelet-client-certificate=/opt/kubernetes/ssl/server.pem \\
--kubelet-client-key=/opt/kubernetes/ssl/server-key.pem \\
--tls-cert-file=/opt/kubernetes/ssl/server.pem \\
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \\
--client-ca-file=/opt/kubernetes/ssl/ca.pem \\
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \\
--service-account-issuer=api \\
--service-account-signing-key-file=/opt/kubernetes/ssl/server-key.pem \\
--etcd-cafile=/opt/etcd/ssl/ca.pem \\
--etcd-certfile=/opt/etcd/ssl/server.pem \\
--etcd-keyfile=/opt/etcd/ssl/server-key.pem \\
--requestheader-client-ca-file=/opt/kubernetes/ssl/ca.pem \\
--proxy-client-cert-file=/opt/kubernetes/ssl/server.pem \\
--proxy-client-key-file=/opt/kubernetes/ssl/server-key.pem \\
--requestheader-allowed-names=kubernetes \\
--requestheader-extra-headers-prefix=X-Remote-Extra- \\
--requestheader-group-headers=X-Remote-Group \\
--requestheader-username-headers=X-Remote-User \\
--enable-aggregator-routing=true \\
--audit-log-maxage=30 \\
--audit-log-maxbackup=3 \\
--audit-log-maxsize=100 \\
--audit-log-path=/opt/kubernetes/logs/k8s-audit.log"
EOF
注:上面两个\ \ 第一个是转义符,第二个是换行符,使用转义符是为了使用 EOF
保留换行符。
• --logtostderr:启用日志
• ---v:日志等级
• --log-dir:日志目录
• --etcd-servers:etcd 集群地址
• --bind-address:监听地址
• --secure-port:https 安全端口
• --advertise-address:集群通告地址
• --allow-privileged:启用授权
• --service-cluster-ip-range:Service 虚拟 IP 地址段
• --enable-admission-plugins:准入控制模块
• --authorization-mode:认证授权,启用 RBAC 授权和节点自管理
• --enable-bootstrap-token-auth:启用 TLS bootstrap 机制
• --token-auth-file:bootstrap token 文件
• --service-node-port-range:Service nodeport 类型默认分配端口范围
• --kubelet-client-xxx:apiserver 访问 kubelet 客户端证书
• --tls-xxx-file:apiserver https 证书
• 1.20 版本必须加的参数:--service-account-issuer,--service-account-
signing-key-file
• --etcd-xxxfile:连接 Etcd 集群证书
• --audit-log-xxx:审计日志
• 启动聚合层相关配置:--requestheader-client-ca-file,--proxy-client-
cert-file,--proxy-client-key-file,--requestheader-allowed-
names,--requestheader-extra-headers-prefix,--requestheader-group-
headers,--requestheader-username-headers,--enable-aggregator-
routing

3.2 拷贝上一篇文章生成的证书

cp ~/TLS/k8s/ca*pem ~/TLS/k8s/server*pem /opt/kubernetes/ssl/

3.3 启用 TLS Bootstrapping 机制

TLS Bootstraping:Master apiserver 启用 TLS 认证后,Node 节点 kubelet 和kube-proxy 要与 kube-apiserver 进行通信,必须使用 CA 签发的有效证书才可以,当 Node 节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了简化流程,Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet 会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署。所以强烈建议在 Node 上使用这种方式,目前主要用于 kubelet,kube-proxy 还是由我们统一颁发一个证书。

TLS bootstraping 工作流程:
在这里插入图片描述
创建上述配置文件中 token 文件:

cat > /opt/kubernetes/cfg/token.csv << EOF
c47ffb939f5ca36231d9e3121a252940,kubelet-bootstrap,10001,"system:node-bootstrapper"
EOF

格式:token,用户名,UID,用户组
token 也可自行生成替换:

head -c 16 /dev/urandom | od -An -t x | tr -d ' '

3.4 systemd 管理 apiserver

cat > /usr/lib/systemd/system/kube-apiserver.service << EOF
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=/opt/kubernetes/cfg/kube-apiserver.conf
ExecStart=/opt/kubernetes/bin/kube-apiserver \$KUBE_APISERVER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

3.5 启动并设置开机启动

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

3.6查看启动状态

ps -ef | grep kube-apiserver

输出:
在这里插入图片描述
如果启动失败,通过以下方式查看日志:

journalctl -u kube-apiserver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子电气架构 --- AUTOSAR 的信息安全架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

ROS2与OpenAI Gym集成指南:从安装到自定义环境与强化学习训练

1.理解 ROS2 和 OpenAI Gym 的基本概念 ROS2&#xff08;Robot Operating System 2&#xff09;&#xff1a;是一个用于机器人软件开发的框架。它提供了一系列的工具、库和通信机制&#xff0c;方便开发者构建复杂的机器人应用程序。例如&#xff0c;ROS2 可以处理机器人不同组…

【设计模式】创建型 -- 单例模式 (c++实现)

文章目录 单例模式使用场景c实现静态局部变量饿汉式&#xff08;线程安全&#xff09;懒汉式&#xff08;线程安全&#xff09;懒汉式&#xff08;线程安全&#xff09; 智能指针懒汉式(线程安全)智能指针call_once懒汉式(线程安全)智能指针call_onceCRTP 单例模式 单例模式是…

C语言之九九乘法表

一、代码展示 二、运行结果 三、代码分析 首先->是外层循环是小于等于9的 然后->是内层循环是小于等于外层循环的 最后->就是\n让九九乘法表的格式更加美观(当然 电脑不同 有可能%2d 也有可能%3d) 四、与以下素数题目逻辑相似 五、运行结果

自动化备份全网服务器数据平台

自动化备份全网服务器数据平台 项目背景知识 总体需求 某企业里有一台Web服务器&#xff0c;里面的数据很重要&#xff0c;但是如果硬盘坏了数据就会丢失&#xff0c;现在领导要求把数据做备份&#xff0c;这样Web服务器数据丢失在可以进行恢复。要求如下&#xff1a;1.每天0…

stm32+esp8266+机智云手机app

现在很多大学嵌入式毕设都要求云端控制&#xff0c;本文章就教一下大家如何使用esp8266去连接机智云的app去进行显示stm32的外设传感器数据啊&#xff0c;控制一些外设啊等。 因为本文章主要教大家如何移植机智云的代码到自己的工程&#xff0c;所以前面的一些准备工作&#x…

时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化

小T导读&#xff1a;在物联网和工业互联网场景下&#xff0c;企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接&#xff0c;帮助企业实现更安全、更高效、更低成本的数据采集与传输&#xff0c;从架构解析到实际配…

【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot中自动配置原理与自定义Starter开发实践详解 - 3-5年Java开发必备知识 引言 Spring Boot作为Java生态中最流行的框架之一&#xff0c;其自动配置机制和Starter开发是面试中的高频考点。对于3-5年经验的Java开发者来说&#xff0c;深入理解这些原理…

解决Spring Boot Test中的ByteBuddy类缺失问题

目录 解决Spring Boot Test中的ByteBuddy类缺失问题前奏问题描述问题解决第一步&#xff1a;移除ByteBuddy的特定版本号第二步&#xff1a;更新maven-surefire-plugin配置第三步&#xff1a;清理并重新构建项目 结语 解决Spring Boot Test中的ByteBuddy类缺失问题 前奏 今天&…

IntelliJ IDEA使用技巧(json字符串格式化)

文章目录 一、IDEA自动格式化json字符串二、配置/查找格式化快捷键 本文主要讲述idea中怎么将json字符串转换为JSON格式的内容并且有层级结构。 效果&#xff1a; 转换前&#xff1a; 转换后&#xff1a; 一、IDEA自动格式化json字符串 步骤一&#xff1a;首先创建一个临…

眨眼睛查看密码工具类

“眨眼睛查看密码”工具类实现思路&#xff1a; 一、核心功能 实现点击眼睛图标切换密码明文/星号显示&#xff0c;提升表单输入体验。包含以下关键功能&#xff1a; • 初始状态&#xff1a;密码框显示为星号&#xff0c;闭眼图标可见。 • 点击闭眼图标&#xff1a;切换为明…

【GPT入门】第33课 从应用场景出发,区分 TavilyAnswer 和 TavilySearchResults,代码实战

【GPT入门】第33课 从应用场景出发&#xff0c;区分 TavilyAnswer 和 TavilySearchResults&#xff0c;代码实战 1. 区别应用场景 2. 代码使用3.代码执行效果 在langchain_community.tools.tavily_search中&#xff0c;TavilyAnswer和TavilySearchResults有以下区别和应用场景&…

【Java设计模式】第10章 外观模式讲解

10. 外观模式 10.1 外观模式讲解 定义:为子系统提供统一接口,简化调用。类型:结构型模式适用场景: 子系统复杂需简化调用分层系统需统一入口优点: 降低耦合符合迪米特法则(最少知道原则)缺点: 扩展子系统需修改外观类,违反开闭原则10.2 外观模式 Coding // 子系统:…

Dubbo的简单介绍

Dubbo的简单介绍 Dubbo 是一个高性能的 Java RPC 框架&#xff0c;最初由阿里巴巴开发&#xff0c;用于构建分布式服务。它主要用于提供服务间的通信&#xff0c;支持高效的远程调用和服务治理&#xff0c;常用于大规模分布式系统中。Dubbo 提供了以下几个核心功能&#xff1a…

每日一题(小白)数组娱乐篇17

对一个数组进行接收进行操作后输出。输入三个操作数abc&#xff0c;将数组下标a到b的数字加上c&#xff1b;输入四个操作数abcd&#xff0c;将下标c到d的数字复制到a到b&#xff0c;可以借用一个中间量数组实现&#xff1b;两个操作数ab&#xff0c;将数组下标a到b的数字加和输…

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI&#xff08;Poor Obfuscation Implementation&#xff09;&#xff1a;它是 Apache 软件基金会的一个开源项目&#xff0c;为 Java 程序提供了读写 Microsoft Office 格式文件的功能&#xff0c;支持如 Excel、Word、PowerPoint 等多种文件格…

01-Redis-基础

1 redis诞生历程 redis的作者笔名叫做antirez&#xff0c;2008年的时候他做了一个记录网站访问情况的系统&#xff0c;比如每天有多少个用户&#xff0c;多少个页面被浏览&#xff0c;访客的IP、操作系统、浏览器、使用的搜索关键词等等(跟百度统计、CNZZ功能一样)。最开始存储…

在 Ubuntu 上离线安装 Prometheus 和 Grafana

在 Ubuntu 上离线安装 Prometheus 和 Grafana 的步骤如下: 一.安装验证 二.安装步骤 1.准备离线安装包 在一台可以访问互联网的机器上下载 Prometheus 和 Grafana 的二进制文件。 Prometheus 下载地址:Prometheus 官方下载页面Grafana 下载地址:Grafana 官方下载页面下载所…

mapbox基础,加载ESRI OpenStreetMap开放街景标准风格矢量图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.1 ☘️mapboxgl.Map style属性二、🍀加载ESRI OpenStreetMap开放街景标准风…

Java 集合有序性与重复性总结及记忆技巧

Java 集合有序性与重复性总结及记忆技巧 一、集合分类速查表 集合类型是否有序是否允许重复记忆口诀ArrayList✅ 有序&#xff08;插入顺序&#xff09;✅ 可重复"数组列表&#xff0c;顺序记牢"LinkedList✅ 有序&#xff08;插入顺序&#xff09;✅ 可重复"…