ansible-kubeadm在线安装单masterk8s v1.19-v1.20版本
ansible可以安装的KS8版本如下:
[root@k8s-master01 ~]# yum list kubectl --showduplicates | sort -r
kubectl.x86_64 1.20.0-0 kubernetes
kubectl.x86_64 1.20.0-0 @kubernetes
kubectl.x86_64 1.19.9-0 kubernetes
kubectl.x86_64 1.19.8-0 kubernetes
kubectl.x86_64 1.19.7-0 kubernetes
kubectl.x86_64 1.19.6-0 kubernetes
kubectl.x86_64 1.19.5-0 kubernetes
kubectl.x86_64 1.19.4-0 kubernetes
kubectl.x86_64 1.19.3-0 kubernetes
kubectl.x86_64 1.19.2-0 kubernetes
kubectl.x86_64 1.19.16-0 kubernetes
kubectl.x86_64 1.19.15-0 kubernetes
kubectl.x86_64 1.19.14-0 kubernetes
kubectl.x86_64 1.19.13-0 kubernetes
kubectl.x86_64 1.19.12-0 kubernetes
kubectl.x86_64 1.19.11-0 kubernetes
kubectl.x86_64 1.19.1-0 kubernetes
kubectl.x86_64 1.19.10-0 kubernetes
kubectl.x86_64 1.19.0-0 kubernetes
[root@k8s-master01 ~]#
条件情况说明
准备4台机器,是单master安装
192.168.186.128 k8s-master01
192.168.186.129 k8s-node01
192.168.186.130 k8s-node02
192.168.186.131 ansible
#永久修改主机名
hostnamectl set-hostname k8s-master01 && bash #在master上操作
hostnamectl set-hostname k8s-node01 && bash #在node1上操作
hostnamectl set-hostname k8s-node02 && bash #在node2上操作
hostnamectl set-hostname ansible && bash #在ansible上操作
1. ansible机器与部署k8s集群都做免密钥
#所有机器上都操作
ssh-keygen -t rsa #一路回车,不输入密码
###把本地的ssh公钥文件安装到远程主机对应的账户
ssh-copy-id -i .ssh/id_rsa.pub 192.168.186.128 #k8s-master01
ssh-copy-id -i .ssh/id_rsa.pub 192.168.186.129 #k8s-node01
ssh-copy-id -i .ssh/id_rsa.pub 192.168.186.130 #k8s-node02
ssh-copy-id -i .ssh/id_rsa.pub 192.168.186.131 #ansible
#所有机器上都操作
ssh-keygen -t rsa #一路回车,不输入密码
###把本地的ssh公钥文件安装到远程主机对应的账户
for i in k8s-master01 k8s-node01 k8s-node02 ansible;do ssh-copy-id -i .ssh/id_rsa.pub $i ;done
2. ansible安装
#Ansible服务器安装
yum install epel-release git -y
yum install ansible -y
# 克隆部署k8s集群文件
yum -y install git
git clone https://gitee.com/qq759035366/ansible-kubeadm-install.git
#ansible机器上操作
cd ansible-kubeadm-install/
cat > hosts << EOF
[master]
# 如果部署单Master或多master的主master配置
192.168.186.128 node_name=k8s-master01[masternode]
# 用于存储集群部署多节点master,单独存放一个组,对部署编写方便
192.168.0.182 node_name=k8s-master02 [node]
192.168.186.129 node_name=k8s-node01
192.168.186.130 node_name=k8s-node02[etcd]
192.168.186.128 etcd_name=etcd-1
192.168.186.129 etcd_name=etcd-2
192.168.186.130 etcd_name=etcd-3[lb]
# 如果部署单Master,该项忽略
192.168.0.185 node_name=lb-master
192.168.0.186 node_name=lb-backup[k8s:children]
master
masternode
node[newnode]
192.168.0.187 ansible_ssh_port=22 node_name=k8s-node03EOF
#ansible机器上操作
cat > group_vars/all.yml << EOF
# 安装目录
etcd_work_dir: '/etc/etcd'
tmp_dir: '/tmp/k8s'# k8s执行配置临时目录
tmp_kubernetes_dir: '/root/kubernetes'# 集群网络
service_cidr: '10.96.0.0/12'
pod_cidr: '10.244.0.0/16' # 与roles/addons/files/calico.yaml中网段一致# 集群版本
k8s_version: 1.20.0 # 版本测试安装了,v1.19.0-v1.20.0版本,按照需要版本修改# 高可用,如果部署单Master,该项忽略
vip: '192.168.0.188'
nic: 'ens33' # **注意这里一定要修改,修改为实际内网网卡名# 自签证书可信任IP列表,为方便扩展,可添加多个预留IP
cert_hosts:# 包含所有etcd节点IPetcd:- 192.168.186.128- 192.168.186.129- 192.168.186.130
EOF
ansible-kubeadm-install/group_vars/all.yml #网卡默认是eth0,一定要修改这个网卡
ansible-kubeadm-install/roles/SingleMaster/tasks/main.yml #网卡默认是eth0,如果你做了修改一定要修改这个下面的网卡 替换方式参考博客
3. 单master版本K8Sv1.20.0安装
#单master版本
cd /root/ansible-kubeadm-install
ansible-playbook -i hosts -uroot single-master-deploy.yml
注意:这里只需要等待就行,大概需要30多分钟就安装好了
4. 检查安装情况
kubectl get nodes
kubectl get pods -n kube-system
[root@k8s-master01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master01 Ready control-plane,master 3h48m v1.20.0
k8s-node01 Ready <none> 3h45m v1.20.0
k8s-node02 Ready <none> 3h45m v1.20.0
[root@k8s-master01 ~]# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-7985fc4dd6-8t56s 1/1 Running 1 3h48m
calico-node-b4qvv 1/1 Running 3 3h37m
calico-node-hp29x 1/1 Running 1 3h48m
calico-node-rpjbf 1/1 Running 8 3h37m
coredns-7f89b7bc75-69654 1/1 Running 1 3h48m
coredns-7f89b7bc75-scf2l 1/1 Running 1 3h48m
etcd-k8s-master01 1/1 Running 2 3h48m
kube-apiserver-k8s-master01 1/1 Running 2 3h48m
kube-controller-manager-k8s-master01 1/1 Running 9 3h48m
kube-proxy-4wgdq 1/1 Running 1 3h48m
kube-proxy-drsrh 1/1 Running 1 3h37m
kube-proxy-t7kss 1/1 Running 1 3h37m
kube-scheduler-k8s-master01 1/1 Running 9 3h48m
[root@k8s-master01 ~]#
5. dashboard检查
kubectl get pods,svc -n kubernetes-dashboard #查看dashboard对外端口
[root@k8s-master01 yml]# kubectl get pods,svc -n kubernetes-dashboard
NAME READY STATUS RESTARTS AGE
pod/dashboard-metrics-scraper-7b59f7d4df-8q55k 1/1 Running 1 3h39m
pod/kubernetes-dashboard-5dbf55bd9d-qmd7r 1/1 Running 1 3h39mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/dashboard-metrics-scraper ClusterIP 10.110.47.196 <none> 8000/TCP 3h45m
service/kubernetes-dashboard NodePort 10.103.87.75 <none> 443:30001/TCP 3h45m
[root@k8s-master01 yml]#
#获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')#使用输出的token登录Dashboard访问地址:https://IP:30001/ #注意必须是https://
6. 测试kubernetes 集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
[root@k8s-master01 ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-qnf95 1/1 Running 1 3h12mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h57m
service/nginx NodePort 10.104.134.62 <none> 80:32216/TCP 3h12m
[root@k8s-master01 ~]#
浏览器访问 IP:32216
7. 节点扩容
修改hosts文件,添加新节点IP
# vi hosts
...
[newnode]
192.168.0.187 ansible_ssh_port=22 node_name=k8s-node03
#执行安装添加k8s集群node节点
ansible-playbook -i hosts -uroot add-node.yml # 如果安装某个阶段失败,可针对性测试.例如:只运行部署插件
# ansible-playbook -i hosts -uroot single-master-deploy.yml --tags common
所有HTTPS证书存放路径 部署产生的证书都会存放到目录“/tmp/k8s/ssl”,一定要保存好,后面还会用到~
相关文章:

ansible-kubeadm在线安装单masterk8s v1.19-v1.20版本
ansible可以安装的KS8版本如下: [rootk8s-master01 ~]# yum list kubectl --showduplicates | sort -r kubectl.x86_64 1.20.0-0 kubernetes kubectl.x86_64 1.20.0-0 …...

mongodb docker 及常用命令
MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…...

最新版本mac版Idea 激活Jerbel实现热部署
1.环境准备 1.安装docker desktop 客户端创建本地服务 2.创建guid 3.随便准备一个正确格式的邮箱 2.具体操作 1.通过提供的镜像直接搭建本地服务 docker pull qierkang/golang-reverseproxy docker run -d -p 8888:8888 qierkang/golang-reverseproxy2.guid 通过如下网址直…...

基于Ubuntu22.04部署bcache模式ceph
作者:吴业亮 博客:wuyeliang.blog.csdn.net 将Bcache集成到Ceph OSD后端可以带来一些优点和潜在的缺点。以下是它们的一些方面: 优点: 提高性能:BCache作为SSD缓存设备,可以提供更快的数据读取和写入速度…...

根据URL批量下载文件并压缩成zip文件
根据url批量下载图片或者视频,只需要将图片的url和名称放到数组对象即可,例如: let fileArr [{fvUrl:https://image.xuboren.com/image/2023/07/26/1410829074764cdbaa4314a084eb749e.jpg,fvName: 图片名称},{fvUrl:https://image.xuboren.…...

机器学习笔记之优化算法(六)线搜索方法(步长角度;非精确搜索;Glodstein Condition)
机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,Glodstein Condition] 引言回顾: Armijo Condition \text{Armijo Condition} Armijo Condition关于 Armijo Condition \text{Armijo Condition} Armijo Condition的弊端 Glodstein…...

Ant Design Pro 封装网络请求
可以直接在antdPro项目的app.tsx文件中对request进行运行时配置,并且该配置会直接透传到umi-request的全局配置。后续直接从umi中引入request或者useRequest直接使用,可以说是非常方便。文档可查看:umi.js 具体配置代码: import…...

命令模式——请求发送者与接收者解耦
1、简介 1.1、概述 在软件开发中,经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个。此时,特别希望能够以一种松耦合的方式来设计软件&a…...

css 利用模糊属性 制作水滴
<style>.box {background-color: #111;height: 100vh;display: flex;justify-content: center;align-items: center;/* 对比度*/filter: contrast(20);}.drop {width: 150px;height: 159px;border-radius: 50%;background-color: #fff;position: absolute;/* 模糊 */filt…...

怎么才能提升自己工作能力?
表现最好的员工通常是获得加薪和工作晋升的人。您可以采取某些措施来提高您的工作绩效,并帮助您的主管将您视为他们最好的员工之一。在本文中,我们列出了 12 个技巧,可以立即提高您的工作绩效。 什么是工作绩效? 工作绩效是指您…...

Android Framework 之 Zygote
Android Zygote Android Zygote 是 Android 操作系统中一个关键的系统服务,它在系统启动时加载,为应用程序的运行提供了一种快速且资源高效的方式。 Zygote 的主要作用如下: 预加载共享库和类:Zygote 启动时,会预先加…...

二叉树的中序遍历 LeetCode热题100
题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 思路 递归,按左中右的顺序添加节点。 利用栈先进后出的特性模拟递归。 代码 /**递归写法* Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left…...

IOS + Appium自动化教程
前言 项目闲置下来了,终于抽空有时间搞自动化了,看了下网上的教程基本通篇都是android自动化的介绍 ,ios自动化方面的内容网上简介的少之可怜。由于本人对ios自动化也是第一次做,甚至对苹果电脑的使用都不太熟悉,花了大…...

100个精选Python实战项目案例,在线无偿分享
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中。 为什么这么多人学 Python ? 我要喊出那句话了:“人生苦短,我用 Python!”, 正是…...

JSON语法
目录 一、JSON 语法规则 二、JSON 的两种结构: 三、JSON 名称/值对 JSON 值 JSON 数字 JSON 对象 JSON 数组 JSON 布尔值 JSON null 四、JSON 使用 JavaScript 语法 JSON 语法是 JavaScript 语法的子集。 一、JSON 语法规则 JSON 语法是 JavaScript 对象…...

PostMan+Jmeter+QTP工具介绍及安装
目录 一、PostMan介绍编辑 二、下载安装 三、Postman与Jmeter的区别 一、开发语言区别: 二、使用范围区别: 三、使用区别: 四、Jmeter安装 附一个详细的Jmeter按照新手使用教程,感谢作者,亲测有效。 五、Jme…...

2023电赛E题视觉部分
该部分主要要完成正方形区域的识别,并返回对应的坐标,但是由于距离1m,过远。因此需要引入图像增强,下面代码完成基本流程测试,仅供参考: import sensor import image import time # 初始化摄像头 senso…...

算法工程师岗位面试必备,讲透深度学习面试题,详解人工智能生成式任务与AI大模型面试题
DeepLearning-Interview-Awesome-2024 算法工程师岗位面试必备,讲透深度学习面试题,详解人工智能生成式任务与AI大模型面试题 实时更新题解链接:https://github.com/315386775/DeepLearing-Interview-Awesome-2024 记得点个关注࿰…...

JVM基础篇-虚拟机栈
JVM基础篇-虚拟机栈 定义 Java Virtual Machine Stacks (Java 虚拟机栈) 每个线程运行时所需要的内存,称为虚拟机栈每个栈由多个栈帧(Frame)组成,对应着每次方法调用时所占用的内存每个线程只能有一个活动…...

KepwareEX配置API REST接口
服务端Kepware设置 API允许连接设置 创建通道 请求地址(POST): https://<主机名_或_ip>:<端口>/config/v1/project/channels 以下示例使用postman工具访问API创建了一个名为Channel1 的通道,其使用在本地主机运行的服务器中的Simulator …...

【python】python求解矩阵的转置(详细讲解)
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

Mr. Cappuccino的第56杯咖啡——Mybatis拦截器
Mybatis拦截器 概述应用场景项目结构实现分页查询其它拦截器的使用 概述 Mybatis允许使用者在映射语句执行过程中的某一些指定的节点进行拦截调用,通过织入拦截器,在不同节点修改一些执行过程中的关键属性,从而影响SQL的生成、执行和返回结果…...

容器化安装环境EFK搭建
容器化安装环境 Docker中安装并启动ElasticSearch 前置配置 第一步:在宿主机上执行echo “net.ipv4.ip_forward1” >>/usr/lib/sysctl.d/00-system.conf 2.第二步:重启network和docker服务 [rootlocalhost /]# systemctl restart network &&…...

基于 Debian GNU/Linux 12 “书虫 “的Neptune 8.0 “Juna “来了
导读Neptune Linux 发行版背后的团队发布了 Neptune 8.0,作为这个基于 Debian 的 GNU/Linux 发行版的重大更新,它围绕最新的 KDE Plasma 桌面环境构建。 Neptune 8.0 被命名为 “Juna”,是在Neptune 7.5 发布 11 个月后发布的,也是…...

GDAL C++ API 学习之路 (4) Spatial Reference System篇 OGRSpatialReference类
class OGRSpatialReference #include <ogr_spatialref.h> OGRSpatialReference 是 GDAL/OGR 库中的一个重要类,用于管理和操作地理空间数据的空间参考系统(Spatial Reference System,SRS)。它提供了一系列功能&…...

RS232转Profinet网关rs232转网口需要如何设置
大家好,今天我要给大家带来一个很有意思的案例分享。你们猜猜,这回我们要用捷米的一款神奇的网关JM-RS485/232-PN做什么呢?没错,我们要把一台扫码枪设备通过这个RS232转PROFINET网关,接入到一台西门子S7-1200PLC的Prof…...

LaTex的下载与安装超详细windows版
1.LaTex的下载 (texlive下载TexStudio下载) (1)texlive下载: 这里清华镜像下载 (2)TexStudio下载: 点这里下载镜像 可以根据不同的系统选择不同的版本 2 .LaTex的安装 &#…...

MySQL | 存储过程快速入门
文章目录 一、概述1.1 MySQL存储过程和函数的概念1.2 优势和适用场景 二、存储过程基础2.1 存储过程与传统SQL查询的区别2.2 创建和调用存储过程创建存储过程调用存储过程 2.3 参数传递与返回值创建带有输出参数的存储过程调用带有输出参数的存储过程 2.4 流程控制语句IF语句WH…...

C# 图表控件库 ScottPlot
推荐使用ScottPlot原因: 1.图形界面简洁,样式丰富 2.代码较少 3.官方提供多种实例源码,并可以直接通过图形界面查看,便于快速开发 Github源码链接:https://github.com/ScottPlot/ScottPlot 官网WindowFrom Demo实例…...

013 怎么查看自己电脑的wifi密码
方法一:查看当前电脑连接的无线密码 步骤1: 打开windows命令行窗口,输入:ncpa.cpl 快速打开“控制面板”中的“网络连接”,如下图: 步骤2: 右键,打开“状态” 步骤3:…...