【云原生】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.rhkb.cn/news/326875.html

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

相关文章

uniapp编译H5解决ios的border-radius失效问题,以及ios满屏显示不全的问题

1.解决方案 .card-itemA {width: 650rpx;height: 326rpx;box-shadow: 0rpx 0rpx 30rpx 14rpx rgba(236, 235, 236, 0.25);background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);border-radius: 60rpx;overflow: hidden;// 兼容ios的圆角问题transfor…

免费思维13招之十:增值型思维

免费思维13招之十:增值型思维 免费思维的另一大战略思维——增值型思维。 为了提高客户的粘性而促进重复性消费,我们必须对客户进行免费的增值型服务。 大家不要把增值型思维与赠品型思维混淆,增值型思维重心在于提高与消费者的粘性而促进重复消费,重心在后端。而赠品型思…

基于C#开发web网页管理系统模板流程-登录界面

前言&#xff0c;首先介绍一下本项目将要实现的功能 &#xff08;一&#xff09;登录界面 实现一个不算特别美观的登录窗口&#xff0c;当然这一步跟开发者本身的设计美学相关&#xff0c;像蒟蒻博主就没啥艺术细胞&#xff0c;勉强能用能看就行…… &#xff08;二&#xff09…

FOTS:一种用于机器人操作技能Sim2Real学习的快速光学触觉仿真器

类 GelSight的视触觉传感器具有高分辨率和低制造成本的优势&#xff0c;但是在与现实中的物体进行频繁接触时易受磨损。而触觉仿真器可大幅降低硬件成本&#xff0c;同时为后续技能学习任务提供仿真训练环境。为此&#xff0c;来自东南大学自动化学院的钱堃副教授研究团队和伦敦…

vue3+ts--实际开发之--table表格打印或者保存

vue3实现指定区域打印&#xff08;导出&#xff09;功能-主要是解决分页内容分割问题 一、 问题页面效果二、 Print.js相关属性 和使用1. 介绍2. 安装引入3. PrintJS参数配置表 三 、解决关于分页文字或者表格被分割问题&#xff0c;解决后如下&#xff1a;1. 设置一个自定义ta…

windows 环境下安装《车辆动态监控系统》支持JT808、JT1078、苏标主动安全设备接入

《车辆动态监控系统》下载安装部署包 开放端口 80/443/8800&#xff0c;web后台端口&#xff0c;nginx代理服务&#xff0c;nginx默认为8800端口8808&#xff0c;JT808专用端口6802&#xff0c;视频播放推流端口6891-6898&#xff0c;FTP端口6821&#xff0c;苏标主动安全附件…

OpenAI放大招:不是GPT-5和搜索引擎,或推AI助理?

近日&#xff0c;关于 ChatGPT 的开发公司 OpenAI 将推出与谷歌搜索竞争的产品的传闻甚嚣尘上。有报道指出&#xff0c;OpenAI 计划增强 ChatGPT 的功能&#xff0c;并进军搜索引擎市场&#xff0c;新产品甚至可能在 5 月 13 日谷歌 I/O 大会的前一天发布。 然而&#xff0c;Op…

java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)

1.在populateBean 方法中的一部分&#xff1a;用于Autowird&#xff0c;Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinitio…

ctfshow web入门 ssrf web351--web360

web351 <?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $chcurl_init($url); //开启cURL会话 curl_setopt($ch, CURLOPT_HEADER, 0);//将头文件信息作为数据流输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将获得信息以文件流形式返回&am…

vscode无法连接 , .vscode-server版本问题

vscode无法连接 &#xff0c; .vscode-server版本问题 解决办法 &#xff1a; 查看自己的版本号 2. 两边vscode版本号需要一致 找一台vscode可以远程连接的&#xff0c; 将它的.vscode-server/bin/b06ae3b2d2dbfe28bca3134cc6be65935cdfea6a 传到 远程服务器上 或者 本地的…

[蓝桥杯]真题讲解:数三角(枚举+STL)

[蓝桥杯]真题讲解&#xff1a;数三角&#xff08;枚举STL&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;数三角&#xff08;枚举STL&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #define int long…

2.3 Spark运行架构与原理

Spark运行架构由SparkContext、Cluster Manager和Worker构成。在集群模式下&#xff0c;Driver进程初始化SparkContext并向Cluster Manager申请资源&#xff0c;后者根据算法在Worker节点上启动Executor。Executor负责任务执行&#xff0c;反馈状态给Cluster Manager。任务由Ta…

c#访问webservice

背景介绍 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 在这个公开的Webservice上&#xff0c;我想使用getSupportCity这个功能 解决方案 using RestSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.…

Python-VBA函数之旅-type函数

目录 一、type函数的常见应用场景 二、type函数使用注意事项 三、如何用好type函数&#xff1f; 1、type函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://myelsa1024.blog.csdn.net/ 一、type函…

微服务部署不迷茫:4大部署模式深度解析,轻松驾驭云原生时代

微服务部署最全详解(4种常见部署模式) 微服务多实例部署 每个微服务都独立部署在自己的运行环境中&#xff0c;这是微服务架构的核心思想。 一般会采用每个主机多个服务实例&#xff0c;如下所示&#xff1a; 这是一种传统的应用部署方法&#xff0c;每个服务实例在一个或多个…

Spring Boot | Spring Boot 整合“ 邮件任务“ 实现

目录: Spring Boot 整合" 邮件任务" 实现 :一、发送 "纯文本邮件" :(1) 添加 "邮件服务" 依赖启动器(2) 添加 "邮件服务" 配置信息(3) 定制 "邮件发送服务"(4) "纯文本" 邮件发送 测试效果 二、发送 带 "附件…

Linux 第三十章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

CentOS使用Docker搭建Nacos结合内网穿透实现无公网IP远程登录本地管理平台

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Nacos Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化…

数据库——SQL SERVER(先学删库跑路)

目录 一&#xff1a;什么是数据库 二&#xff1a;为什么需要数据库 三&#xff1a;数据库的安装 四&#xff1a;学前必备知识 1. 数据库原理 2. 数据库与编程语言 3. 数据库与数据结构的区别 4. 连接 5. 有了编程语言为啥还要数据库 6. 初学者学习数据库的三个方面 …

交友软件源码-源码+搭建+售后,上线即可运营聊天交友源码 专业语聊交友app开发+源码搭建-快速上线

交友小程序源码是一种可以帮助开发者快速搭建交友类小程序的代码模板。它通常包括用户注册、登录、个人信息编辑、匹配推荐、好友聊天等常见功能&#xff0c;以及与后台数据交互的接口。使用这种源码可以极大地缩短开发时间&#xff0c;同时也可以根据自己的需求进行二次开发和…