ansible-kubeadm在线安装高可用K8S集群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-master02
192.168.186.130 k8s-master03
192.168.186.131 k8s-node01
192.168.186.132 ansible
#永久修改主机名
hostnamectl set-hostname k8s-master01 && bash #在master1上操作
hostnamectl set-hostname k8s-master02 && bash #在master2上操作
hostnamectl set-hostname k8s-master03 && bash #在master3上操作
hostnamectl set-hostname k8s-node01 && bash #在node1上操作
hostnamectl set-hostname ansible && bash #在ansible上操作
1. ansible机器与部署k8s集群都做免密钥
cat >> /etc/hosts << EOF
192.168.186.128 k8s-master01
192.168.186.129 k8s-master02
192.168.186.130 k8s-master03
192.168.186.131 k8s-node01
192.168.186.132 ansible
EOF
#所有机器上都操作
ssh-keygen -t rsa #一路回车,不输入密码
###把本地的ssh公钥文件安装到远程主机对应的账户
for i in k8s-master01 k8s-master02 k8s-master03 k8s-node01 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
#192.168.186.129 node_name=k8s-master02
#192.168.186.130 node_name=k8s-master03[masternode]
# 用于存储集群部署多节点master,单独存放一个组,对部署编写方便
192.168.186.128 node_name=k8s-master01
192.168.186.129 node_name=k8s-master02
192.168.186.130 node_name=k8s-master03[node]
192.168.186.131 node_name=k8s-node01[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.186.128 node_name=k8s-master01
192.168.186.129 node_name=k8s-master02[k8s:children]
master
masternode
node[newnode]
192.168.0.187 ansible_ssh_port=22 node_name=k8s-node02EOF
#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.186.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. 高可用K8S集群v1.20.0安装
#K8S集群v1.20.0安装
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
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在线安装高可用K8S集群v1.19-v1.20版本
ansible可以安装的KS8版本如下: 请按照此博客中的内容操作后,才可以通过下面的命令查询到版本。 [rootk8s-master01 ~]# yum list kubectl --showduplicates | sort -r kubectl.x86_64 1.20.0-0 kubern…...
Cesium entity 渐隐渐显、闪烁
点entity function f2(){var x1;var flogtrue;//闪烁//var x0;var flogfalse;//渐显viewer.entities.add({name:"圆点point闪烁",position:Cesium.Cartesian3.fromDegrees(116.200.03,39.530.03,0),point : {show : true, // defaultcolor :new Cesium.CallbackProp…...
LISA:通过大语言模型进行推理分割
论文:https://arxiv.org/pdf/2308.00692 代码:GitHub - dvlab-research/LISA 摘要 尽管感知系统近年来取得了显著的进步,但在执行视觉识别任务之前,它们仍然依赖于明确的人类指令来识别目标物体或类别。这样的系统缺乏主动推理…...
opencv基础40-礼帽运算(原始图像减去其开运算)cv2.MORPH_TOPHAT
礼帽运算是用原始图像减去其开运算图像的操作。礼帽运算能够获取图像的噪声信息,或者得到比原始图像的边缘更亮的边缘信息。 例如,图 8-22 是一个礼帽运算示例,其中: 左图是原始图像。中间的图是开运算图像。右图是原始图像减开运…...
php中的array_filter()函数
php中的array_filter()函数用于筛选数组中的元素,并返回一个新的数组,新数组的元素是所有返回值为true的原数组元素。 array_filter()函数的使用语法如下: array_filter ( array $array [, callable $callback [, int $flag 0 ]] ) : array…...
ArcGIS Pro基础:【按顺序编号】工具实现属性字段的编号自动赋值
本次介绍一个字段的自动排序编号赋值工具,基于arcgis 的字段计算器工具也可以实现类似功能,但是需要自己写一段代码实现, 相对而言不是很方便。 如下所示,该工具就是【编辑】下的【属性】下的【按顺序编号】工具。 其操作方法是…...
neo4j终端操作
1】进入容器 (base) xiaokkkxiaokkkdeMacBook-Pro ~ % docker exec -it 77ed5fe2b52e /bin/bash 2】启动、停止neo4j root77ed5fe2b52e:/var/lib/neo4j/bin# ./neo4j start Neo4j is already running (pid:7). Run with --verbose for a more detailed error message.root7…...
【深度学习】在 MNIST实现自动编码器实践教程
一、说明 自动编码器是一种无监督学习的神经网络模型,主要用于降维或特征提取。常见的自动编码器包括基本的单层自动编码器、深度自动编码器、卷积自动编码器和变分自动编码器等。 其中,基本的单层自动编码器由一个编码器和一个解码器组成,编…...
SpringBoot3基础用法
技术和工具「!喜新厌旧」 一、背景 最近在一个轻量级的服务中,尝试了最新的技术和工具选型; 即SpringBoot3,JDK17,IDEA2023,Navicat16,虽然新的技术和工具都更加强大和高效,但是适应采坑的过程…...
6、移除链表元素
方法1:原链表删除元素 伪代码: 首先判断头节点是否是待删除元素。(头节点和其他节点的删除方法不一样) while(head ! null && head->value target) //如果链表为 1 1 1 1 1,要删除元素1时用if就会失效 {h…...
大厂容器云实践之路(一)
1-华为CCE容器云实践 华为企业云 | CCE容器引擎实践 ——从IaaS到PaaS到容器集群 容器部署时代的来临 IaaS服务如日中天 2014-2015年,大家都在安逸的使用IaaS服务; 亚马逊AWS的部署能力方面比所有竞争对手…...
《合成孔径雷达成像算法与实现》Figure3.1
代码复现如下: clc close all clear all%参数设置 B 5.80e6; %信号带宽 T 7.26e-6; %脉冲持续时间 K B/T; %线性调频频率 alpha 5; %过采样率 F alpha*B; %采样频率 N F*T; %采样点数 dt T/N; …...
代码随想录算法训练营day60
文章目录 Day60 柱状图中最大的矩形题目思路代码 Day60 柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣(LeetCode) 题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图…...
Modbus TCP转Profibus DP网关modbus tcp报文解析
捷米JM-DPM-TCP网关。在Profibus总线侧作为主站,在以太网侧作为ModbusTcp服务器功能, 下面是介绍捷米JM-DPM-TCP主站网关组态工具的配置方法 2, Profibus主站组态工具安装 执行资料光盘中的安装文件setup64.exe或setup.exe安装组态工具。安装过程中一直…...
对 Promise 的理解
Promise 是异步编程的一种解决方案,它是一个对象,可以获取异步 操作的消息,他的出现大大改善了异步编程的困境,避免了地狱回调, 它比传统的解决方案回调函数和事件更合理和更强大。 所谓 Promise,简单说就…...
Vuex:Vue.js应用程序的状态管理模式
介绍 在Vue.js应用程序中,随着项目复杂度的增加,组件之间的数据共享和管理变得困难。为了解决这个问题,Vue.js提供了一个名为Vuex的状态管理模式。Vuex可以帮助我们更有效地组织、管理和共享应用程序的状态。 什么是Vuex? Vuex…...
Unity之ShaderGraph 节点介绍 Utility节点
Utility 逻辑All(所有分量都不为零,返回 true)Any(任何分量不为零,返回 true)And(A 和 B 均为 true)Branch(动态分支)Comparison(两个输入值 A 和…...
springboot()—— swagger
零、一张图读懂swagger 懂了,这玩意就是用swagger搞出来的! 就是一个后端开发自测的东西嘛! 一、概念 存在即合理,我们看一下swagger诞生的原因:在前后端分离的架构中,前端新增一个字段,后端就…...
Java课题笔记~ 关联映射
一、MyBatis关联查询 在关系型数据库中,表与表之间存在着3种关联映射关系,分别为一对一、一对多、多对多。 一对一:一个数据表中的一条记录最多可以与另一个数据表中的一条记录相关。列如学生与学号就属于一对一关系。 一对多:主…...
一零六七、JVM梳理
JVM? Java虚拟机,可以理解为Java程序的运行环境,可以执行Java字节码(Java bytecode)并提供了内存管理、垃圾回收、线程管理等功能 java内存区域划分?每块内存中都对应什么? 方法区:类的结构信息、常量池、…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
