【云原生】Kubeadm搭建K8S

一、部署Kubernetes

实验环境

服务器主机名IP地址主要组件
k8s集群master01 + etcd01master01192.168.10.100kube-apiserver kube-controller-manager kube-schedular etcd
k8s集群node01 + etcd02node01192.168.10.101kubelet kube-proxy docker flannel
k8s集群node02 + etcd03node02192.168.10.102kubelet kube-proxy docker flannel

1.1、操作系统初始化配置

1.1.1 设置主机名

[root@localhost ~]#hostnamectl set-hostname master01
[root@localhost ~]#bash
[root@localhost ~]#hostnamectl set-hostname node01
[root@localhost ~]#bash
[root@localhost ~]#hostnamectl set-hostname node02
[root@localhost ~]#bash

1.1.2 关闭防火墙

#所有节点,关闭防火墙规则,
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

1.1.3 关闭核心防护

##所有节点关闭核心防护
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

1.1.4 关闭swap

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

1.1.5 添加主机映射

cat >> /etc/hosts << EOF
192.168.10.100 master01
192.168.10.102 node01
192.168.10.103 node02
EOFcat /etc/hosts

1.1.6 调整内核参数

cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOFsysctl --system

1.1.7 时间同步

##三台机器同时进行时间同步
yum install ntpdate -y
ntpdate time.windows.com

进行时间同步

1.2、所有 node 节点部署docker引擎

1.2.1 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

1.2.2 安装阿里云镜像源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.2.3 安装docker

yum install -y docker-ce docker-ce-cli containerd.io

1.2.4 开启docker服务并设置开机自启、查看状态

systemctl start docker.service
systemctl enable docker.service
systemctl status docker.service

1.2.5 查看版本

docker -v

1.2.6 添加镜像加速器配置

sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://5nbz4xnp.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker

1.3、部署 etcd 集群

在master01节点上操作

1.3.1 准备cfssl证书生成工具

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl --no-check-certificate
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson --no-check-certificate
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/local/bin/cfssl-certinfo --no-check-certificatechmod +x /usr/local/bin/cfssl*

给cfssl证书添加执行权限

chmod +x /usr/local/bin/cfssl*

1.3.2 生成Etcd证书

1.3.2.1 创建etcd证书目录
mkdir /opt/k8s
cd /opt/k8s/

1.3.2.2 上传etcd的两个脚本
etcd-cert.sh  etcd.sh    #这需要上传下面两个文件,上传之后需要在脚本里面修改一下IP地址
[root@master k8s]#vim etcd-cert.sh 
将大概79行开始的hosts改为自己的ip,不修改的话生成的证书效果没用!!!chmod +x etcd-cert.sh etcd.sh   ##给两个脚本添加执行权限

1.3.2.3 创建用于生成CA证书、etcd 服务器证书以及私钥的目录
mkdir /opt/k8s/etcd-cert
mv etcd-cert.sh etcd-cert/
cd /opt/k8s/etcd-cert/
./etcd-cert.sh			#生成CA证书、etcd 服务器证书以及私钥ls

1.3.2.4 上传 etcd-v3.4.9-压缩包 到 /opt/k8s 目录中,启动etcd服务
[root@master01 etcd-cert]#cd /opt/k8s/
[root@master01 k8s]#ls
etcd-cert  etcd.sh
[root@master01 k8s]#rz -E
rz waiting to receive.
[root@master01 k8s]#ls
etcd-cert  etcd.sh  etcd-v3.4.9-linux-amd64.tar.gz
[root@master01 k8s]#tar xf etcd-v3.4.9-linux-amd64.tar.gz 
[root@master01 k8s]#ls 
etcd-cert  etcd.sh  etcd-v3.4.9-linux-amd64  etcd-v3.4.9-linux-amd64.tar.gz
[root@master01 k8s]#ls etcd-v3.4.9-linux-amd64
Documentation  etcd  etcdctl  README-etcdctl.md  README.md  READMEv2-etcdctl.md

1.3.2.5 创建用于存放 etcd 配置文件,命令文件,证书的目录
mkdir -p /opt/etcd/{cfg,bin,ssl}cd /opt/k8s/etcd-v3.4.9-linux-amd64/
mv etcd etcdctl /opt/etcd/bin/
cp /opt/k8s/etcd-cert/*.pem /opt/etcd/ssl/

cd /opt/k8s/
./etcd.sh etcd01 192.168.10.80 etcd02=https://192.168.10.18:2380,etcd03=https://192.168.10.19:2380
##进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况。##在开一个窗口查看
ps -ef | grep etcd

1.3.2.6 把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
scp -r /opt/etcd/ root@192.168.10.102:/opt/
scp -r /opt/etcd/ root@192.168.10.103:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.10.102:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.10.103:/usr/lib/systemd/system/

1.4、部署node节点的etcd集群

1.4.1 在 node01 节点上操作

#[Member]
ETCD_NAME="etcd02"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.102:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.102:2379"#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.102:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.102:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.10.100:2380,etcd02=https://192.168.10.102:2380,etcd03=https://192.168.10.103:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

1.4.2 启动etcd服务

systemctl start etcd.service    #启动etcd服务
systemctl enable etcd.service   #设置开机自启
systemctl status etcd           #查看服务状态

1.4.3 在node02节点操作

#[Member]
ETCD_NAME="etcd03"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.10.103:2380"
ETCD_LISTEN_CLIENT_URLS="https://192.168.10.103:2379"#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.10.103:2380"
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.10.103:2379"
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.10.100:2380,etcd02=https://192.168.10.102:2380,etcd03=https://192.168.10.103:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"

1.4.4 启动etcd服务

systemctl start etcd.service    #启动etcd服务
systemctl enable etcd.service   #设置开机自启
systemctl status etcd           #查看服务状态

再次查看master01节点上的etcd服务的状态

1.4.5 检查etcd群集状态

ETCDCTL_API=3   /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.100:2379,https://192.168.10.102:2379,https://192.168.10.103:2379" endpoint health --write-out=tableETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.100:2379,https://192.168.10.102:2379,https://192.168.10.103:2379" endpoint status --write-out=table-------------------------------------------------------------------------------------------
--cert-file:识别HTTPS端使用SSL证书文件
--key-file:使用此SSL密钥文件标识HTTPS客户端
--ca-file:使用此CA证书验证启用https的服务器的证书
--endpoints:集群中以逗号分隔的机器地址列表
cluster-health:检查etcd集群的运行状况

1.4.6 查看etcd集群成员列表

ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.10.100:2379,https://192.168.10.102:2379,https://192.168.10.103:2379"  --write-out=table member list
---------------------------------------------------------------------------------------------cert-file:识别HTTPS端使用SSL证书文件
--key-file:使用此SSL密钥文件标识HTTPS客户端
--ca-file:使用此CA证书验证启用https的服务器的证书
--endpoints:集群中以逗号分隔的机器地址列表
member list  查看列表

1.5、部署Master 组件

master组件签发证书

在 master01 节点上操作

1.5.1 上传 master.zip  到 /opt/k8s 目录中,并解压 

cd /opt/k8s/master.zip   k8s-cert.shunzip master.zip
chmod +x *.sh

1.5.2 创建kubernetes工作目录

mkdir -p  /opt/kubernetes/{cfg,bin,ssl,logs}
tree /opt/kubernetes/

1.5.3  创建用于生成CA证书、相关组件的证书和私钥的目录

[root@master01 k8s]#mkdir /opt/k8s/k8s-cert
[root@master01 k8s]#mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
[root@master01 k8s]#cd /opt/k8s/k8s-cert/
[root@master01 k8s-cert]#ls
k8s-cert.sh
[root@master01 k8s-cert]#vim k8s-cert.sh 
[root@master01 k8s-cert]#./k8s-cert.sh

 

pwd
ll *.pem

1.5.4 复制CA证书、apiserver相关证书和私钥到 kubernetes工作目录的 ssl 子目录中

cp ca*pem apiserver*pem /opt/kubernetes/ssl/

1.5.4.1 上传 kubernetes-server 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包
下载地址:https://github.com/kubernetes/kubernetes/blob/release-1.20/CHANGELOG/CHANGELOG-1.20.md
#注:打开链接你会发现里面有很多包,下载一个server包就够了,包含了Master和Worker Node二进制文件。
[root@master01 k8s-cert]#cd /opt/k8s/
[root@master01 k8s]#rz -E
rz waiting to receive.
[root@master01 k8s]#ls
admin.sh               etcd-cert                etcd-v3.4.9-linux-amd64.tar.gz        master.zip
apiserver.sh           etcd.sh                  k8s-cert                              scheduler.sh
controller-manager.sh  etcd-v3.4.9-linux-amd64  kubernetes-server-linux-amd64.tar.gz
[root@master01 k8s]#
[root@master01 k8s]#tar xf kubernetes-server-linux-amd64.tar.gz 
[root@master01 k8s]#ls
admin.sh               etcd-cert                etcd-v3.4.9-linux-amd64.tar.gz  kubernetes-server-linux-amd64.tar.gz
apiserver.sh           etcd.sh                  k8s-cert                        master.zip
controller-manager.sh  etcd-v3.4.9-linux-amd64  kubernetes                      scheduler.sh

1.5.4.2 复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中
[root@master01 k8s]#cd /opt/k8s/kubernetes/server/bin
[root@master01 bin]#cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
[root@master01 bin]#ln -s /opt/kubernetes/bin/* /usr/local/bin/

1.5.4.3 创建 bootstrap token 认证文件,apiserver 启动时会调用,接下来就可以用 RBAC 给他授权
[root@master01 bin]#cd /opt/k8s/
[root@master01 k8s]#vim token.sh

#!/bin/bash
#获取随机数前16个字节内容,以十六进制格式输出,并删除其中空格
BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ') 
#生成 token.csv 文件,按照 Token序列号,用户名,UID,用户组 的格式生成
cat > /opt/kubernetes/cfg/token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF

chmod +x token.sh
./token.sh
cat /opt/kubernetes/cfg/token.csv

1.5.5  二进制文件、token、证书都准备好后,开启 apiserver 服务

[root@master01 k8s]#cd /opt/k8s/
[root@master01 k8s]#./apiserver.sh 192.168.10.100 https://192.168.10.100:2379,https://192.168.10.102:2379,https://192.168.10.103:2379
#安全端口6443用于接收HTTPS请求,用于基于Token文件或客户端证书等认证[root@master01 k8s]#ps aux | grep kube-apiserver
[root@master01 k8s]#netstat -natp | grep 6443

1.5.6 启动 scheduler 服务

cd /opt/k8s/
ls
vim scheduler.sh

vim scheduler.sh#生成kubeconfig文件                                            ##45
KUBE_CONFIG="/opt/kubernetes/cfg/kube-scheduler.kubeconfig"    ##46
KUBE_APISERVER="https://192.168.10.100:6443"                   ##47

[root@master01 k8s]#./scheduler.sh
[root@master01 k8s]#ps aux | grep kube-scheduler

1.5.7 启动 controller-manager 服务

pwd
/opt/k8sls
vim controller-manager.sh 

#生成kubeconfig文件
KUBE_CONFIG="/opt/kubernetes/cfg/kube-controller-manager.kubeconfig"
KUBE_APISERVER="https://192.168.10.100:6443"

[root@master01 k8s]#./controller-manager.sh
[root@master01 k8s]#ps aux | grep kube-controller-manager

1.5.8 生成kubectl连接集群的kubeconfig文件

pwd
/opt/k8sls
vim admin.sh

[root@master01 k8s]#vim admin.sh

通过kubectl工具查看当前集群组件状态

[root@master01 k8s]#pwd
/opt/k8s
[root@master01 k8s]#kubectl get cs

1.5.9 查看版本信息

[root@master01 k8s]#kubectl version

1.6、 部署 Worker Node 组件

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

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

相关文章

数据结构-题目

1.已知一颗完全二叉树的第6曾&#xff08;设根为第1层&#xff09;&#xff0c;有8个结点&#xff0c;则完全二叉树的结点个数&#xff0c;最少和最多分别是多少&#xff1f; 因此最少为39&#xff0c;最多为111 2.假设一棵三叉树的结点数为50&#xff0c;则它的最小高度为&…

【声呐仿真】学习记录3-待续

【声呐仿真】学习记录3-后续 第五阶段-获取数据1.运行赫尔库勒斯沉船的世界&#xff1a;2.键盘操纵rov至合适的位置&#xff0c;调整Image topic&#xff0c;查看输出图像3.RVIZ SONAR 图像查看器插件&#xff08;没有对应的topic&#xff09;4.点云5.录制rosbag 第六阶段-查看…

守护数据安全:精选七款数据加密软件

在数字化日益普及的今天&#xff0c;数据安全成为了企业和个人不可忽视的重要问题。加密软件作为数据安全的第一道防线&#xff0c;扮演着至关重要的角色。本文将为读者精选七款优秀的加密软件&#xff0c;帮助大家更好地守护数据安全。 Ping32数据加密软件 Ping32数据加密软…

Timestamp Unix时间戳在线转换

Timestamp Unix时间戳在线转换 打开网站 在线工具网-梦幻加菲猫 选择“时间戳转换” 在前半部分输入框输入时间/时间戳&#xff0c;点击“转换>>”按钮&#xff0c;即可转换完成 得到转换结果

Python自动化SQL注入和数据库取证工具库之sqlmap使用详解

概要 在网络安全领域,SQL注入仍然是最常见的攻击之一。sqlmap是一个开源的自动化SQL注入和数据库取证工具,它提供了广泛的功能来检测和利用SQL注入漏洞。本文将详细介绍sqlmap的安装、特性、基本与高级功能,并结合实际应用场景,展示其在网络安全测试中的应用。 安装 sqlm…

银行监管报送系统系列介绍(十七):一表通2.0

国家金融监督管理总局于9月发布了【一表通2.0&#xff08;试用版&#xff09;】&#xff08;简称&#xff1a;一表通2.0&#xff09;&#xff0c;在原试点报送范围的基础上扩大了试点报送区域&#xff0c;意味着将陆续扩大试报送机构范围&#xff0c;推进的速度已明显加快。尽早…

HQChart使用教程98-右键菜单2.0使用介绍

HQChart使用教程98-右键菜单2.0使用介绍 内置右键菜单启用右键菜单定制右键菜单内容1. 注册内置右键菜单创建回调事件2. 修改内置菜单的显示内容回调函数格式菜单数据结构示例 3. 注册菜单项点击事件回调 右键事件完整示例HQChart代码地址 内置右键菜单 HQChart h5版本内置提供…

Spring Boot + Mybatis-plus代码生成器 自动生成项目结构

首先创建一个新的springboot项目 项目初始化结构如下&#xff1a; 运行自动生成结构代码后的效果如下&#xff1a; 对比初始化项目结构可以发现结构中多了以下几个部分; controller文件夹存储接口类mapper文佳夹存储数据库映射model文件夹存储数据库模型类Service文件夹存储业…

未授权访问:Docker未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过crontab反弹宿主机shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验&#xff0c;一共有好多篇&#xff0c;内容主要是参考先知社区的一位大佬的关于未授权访问的好文章&#xff0c;还有其他大佬总结好…

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技&#xff0c;让你开发与修复 Bug 的效率提升亿倍 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — …

QCC---Aptx Lossless验证

因为aptx Lossless属于高通骁龙声音的一部分&#xff0c;一般支持高通骁龙声音的设备会支持到&#xff0c;比如说手机&#xff0c;而且还要支持最新的aptx adaptive协议R2.2版本。但是如果手上没有这样的手机的话&#xff0c;有source芯片也可以去做测试验证。在最新的784.1版本…

钽酸锂集成光子芯片:引领光电集成新纪元

在信息技术飞速发展的今天&#xff0c;光电集成技术已成为推动全球集成电路产业持续创新的重要力量。随着全球集成电路产业发展步入“后摩尔时代”&#xff0c;芯片性能提升的难度和成本不断攀升&#xff0c;业界急需寻找新的技术突破口。在这一背景下&#xff0c;中国科学院上…

微软发布研究报告:75%的知识工作者在工作中使用AI

“人工智能正在使整个劳动力的专业知识民主化&#xff0c;我们的最新研究强调了每个组织都有机会应用这项技术来推动更好的决策、协作&#xff0c;并最终实现业务成果。” ——Microsoft董事长兼首席执行官萨蒂亚纳德拉&#xff08;Satya Nadella&#xff09; 一年前&#xff0…

pycharm连接远程服务器,解决终端出现乱码问题

在终端输入命令时会有乱码问题&#xff0c;是字体编码设置错误。 根据上述步骤&#xff0c;设置完成后重启就可以了。

重生之霸总的项目管理之道

在都市的摩天大楼之间&#xff0c;顾辰&#xff0c;这位被人们称为“霸总”的项目经理&#xff0c;以他独特的魅力和高效的项目管理方式&#xff0c;成为了行业内的传奇人物。他并非传统意义上的冷酷霸总&#xff0c;而是一个懂得运用现代项目管理工具&#xff0c;带领团队一次…

MySQL基础指南:从入门到精通

MySQL基础指南&#xff1a;从入门到精通 MySQL是一个流行的开源关系型数据库管理系统&#xff0c;被广泛用于Web应用程序和服务器端开发。本文将从MySQL的基本概念开始&#xff0c;逐步介绍MySQL的安装、常用操作、数据类型、查询语句等内容&#xff0c;帮助你快速入门MySQL数…

地下车库导航地图怎么做?停车场地图绘制软件哪个好?

上海懒图科技以先进技术和丰富的行业服务经验为用户提供停车场景下的全流程服务平台&#xff0c;用户基于平台可自主快速绘制酷炫的停车场地图&#xff0c;通过提供完善的停车场应用功能集和扩展API服务包&#xff0c;可以方便地实现电子地图服务于您的各类停车场应用中&#x…

利用香港多IP服务器进行大数据分析的潜在优势?

利用香港多IP服务器进行大数据分析的潜在优势? 在当今数据驱动的时代&#xff0c;大数据分析已经成为企业获取竞争优势的不二选择。而香港作为一个拥有世界级通信基础设施的城市&#xff0c;提供了理想的环境来部署多IP服务器&#xff0c;从而为大数据分析提供了独特的优势。…

答辩PPT快速生成工具有哪些?笔灵AI答辩PPT,一键搞定

很多快要毕业的同学在做答辩PPT的时候总是感觉毫无思路&#xff0c;一窍不通。但这并不是你们的错&#xff0c;对于平时没接触过相关方面&#xff0c;第一次搞答辩PPT的人来说&#xff0c;这是很正常的一件事。一个好的答辩PPT可以根据以下分为以下几部分来写。 1.研究的背景和…

RS485空调系统到BACnet江森楼宇系统的高效整合攻略

智慧城市的每一栋建筑都在追求更高的能效与更佳的居住体验&#xff0c;而这一切的实现离不开强大且灵活的楼宇自动化系统。其中&#xff0c;协议转换网关作为连接不同设备的纽带&#xff0c;扮演着至关重要的角色。本文将以一个典型的商业综合体为例&#xff0c;揭秘BACnet协议…