Kubernetes介绍和部署,使用
1.k8s kubernetes来自希腊语舵手,google, 8是ubernete
1.管理docker容器 go写的(并发)
2.用于微服务
3.cncf云原生基金会
2.mater(管理节点)和nodes(微服务节点)
3.部署
1.minikube kind官网在线测试语句
2.kubeadm(官方)(安装比较方便 添加)
3.github下载二进制包
4.yum(老)
5.大神封装的环境
6.买云服务商提供的 阿里云
4.kubeadm
- cent7 2g2core
- interact network between two nodes(download flannel.yum file connect network)
- forbid swap areas ,firework
- xshell 查看—>撰写–>send cmd at the same time
- kubelet(manage POD and container,in every node of cluster )
kubeadm(init cluster)
kubectl(client can connect it )
5.蓝绿发布 预发布(nginx 摘一台机器发布,其他其它的可以正常运行,然后再摘除运行)
6.!!!牛 linux插件直接上传选择的文件
yum install lrzsz -y rz #upload filesz #download file
7.部署过程
1.关闭防火墙和selinux和swap(k8s为了提供性能关闭虚拟内存) mater和nodes同时配置
systemctl stop firewalldsystemctl disable firewalldsed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时close swapsed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时//改host文件方便访问cat >> /etc/hosts << EOF192.168.192.100 k8smaster192.168.172.101 k8snodeEOF//改k8s,让网络生效配置文件cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF//执行命令sysctl --system #生效# 时间同步yum install ntpdate -y
ntpdate time.windows.com
2.安装docker19 mater和nodes同时配置
yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install docker-ce-19.03.13 -y//改docker加速配置vim /etc/docker/daemon.json{
"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]
}//启动服务systemctl enable docker.service//k8s阿里源cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF//安装yum install kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 -y//启动服务systemctl enable kubelet.service//查看服务和版本yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectlkubelet --version
3.master节点执行init命令 会生成join命令
kubeadm init --apiserver-advertise-address=192.168.172.134 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
4.master复制配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config//得到节点
kubectl get nodes
5.join命令如果被重复执行,必须删除节点重启node节点
//master生成命令,给node执行join,node不用init
//坑!!! 主节点的 /etc/kubernetes/admin.conf 一定要复制到node 不然not connection
//坑hostname作为k8s的简单名,不能重复 ,用nmtui修改
//坑 删除“$HOME/.kube/config”文件并执行kubeadm reset命令方可解除 ,(出现各种配置文件和端口占用)//坑!!!//查看master init生成的join命令kubeadm token create --print-join-command //删除节点kubectl drain node1 --delete-local-data --force --ignore-daemonsetskubectl delete nodes node1//重新加入节点
//disabled_plugins = []//必须重启节点kubeadm reset
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
systemctl start docker
systemctl start kubelet
6.从节点执行master生成的join命令
kubeadm join 192.168.172.132:6443 --token wa5bif.zfuvbesevdfvf4of \
--discovery-token-ca-cert-hash sha256:87cf5828d54dd80da13c4b57c57360370ea0267a7cc3991989ca3006cf3e44d8
7.节点状态都是notready(坑,节点重启也要重新提交网络)(可以打通master和node内部访问的端口),要在master配置网络(其实都可以,apply上去就好了)
(重启只要主节点还在,就会重新部署从节点的pod)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.ymlkubectl apply -f kube-flannel.yml//等待片刻...,发现pod flannelkubectl get nodes
8.pod 一个可运行1/多个docker容器
9.k8s部署容器化应用nginx
打jar/war包
写Dockerfile生成镜像
kubectl create deployment nginx --image=镜像名,暴露端口
镜像运行在pod中
//下面重复启动如何删除节点//部署nginx,通过docker间接创建容器看到running,可能在不同容器运行//暴露端口//查看控制节点,和子节点的状态, 暴露节点的服务kubectl get deploykubectl get pod //或者podskubectl get services//生成节点kubectl delete deployment nginx //pod//默认在default namespace创建
kubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=NodePortkubectl get pod,svc
#部署tomcat
kubectl create deployment tomcat --image=tomcatkubectl expose deployment tomcat --port=8080 --type=NodePort
//运行springboot项目!!!,记得先测试jar包成功,不然也是会报PullErr的
//写Dockerfile文件
FROM openjdk:8-jdk
VOLUME /tmp
ADD target/demo.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
//打包为镜像
docker build -t 38-springboot-k8s-1.0.0-jar .//spingboot试运行,可以空运行生成yaml文件,然后提交yaml到k8s运行
kubectl create deployment springboot-k8s --image=38-springboot-k8s-1.0.0-jar --dry-run=client -o yaml > deploy.yaml
//改yaml在本地拉取,默认远程拉取,不行包PullErr错误
vi deploy.yaml文件里面container镜像从本地拉取;imagePullPolicy: Never
//提交到k8s
kubectl apply -f deploy.yaml
//暴露端口
kubectl expose deployment springboot-k8s --port=8080 --type=NodePort
kubectl get pod,svc//访问从内:外
10.k8s dashboard 使用页面管理
//提交文件到k8s拉镜像
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yamlkubectl apply -f recommended.yaml//文件修改配置文件里,可以用内部修改配置文件!!!(get pod无法看到已经启动的端口)kubectl -n kubernetes-dashboard edit service kubernetes-dashboard//生成token复制到访问页面dashboardkubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-adminkubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
11.3种端口
- nodePort向外暴露的端口
// 优点 :type:NodePort可以暴露端口,yaml有写不用写语句 nodeport指定端口
//不足: 1.一个服务一个端口使用2.只能使用30000-32767端口 3.如果虚拟机ip变化,需要人工处理(ip被写进配置了)
- targetPort 容器的端
- port 集群服务之间内部的端口
12.ingress入口(生产使用,不是内置的) 相当于网关,代替nodePort直接暴露关机端口可能变化
//有多种方式安装,我们使用拉取 nginx的方式
//下载deploy.yuml文件,改image的地址
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml
spec:329 hostNetwork: true //添加 330 dnsPolicy: ClusterFirst331 containers:332 - name: controller333 image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.33.0 //修改334 imagePullPolicy: IfNotPresent
//rule.yaml用于配置路由的规则,比如外面要访问到www.abc.com才能直接访问到内部80nginx端口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: k8s-ingress
spec:rules:- host: www.abc.comhttp:paths:- pathType: Prefixpath: /backend:service:name: nginxport:number: 80
kubectl apply -f rule.yaml//如果之前存在kubectl delete ing k8s-ingress//查看配置的规则,记住要看规则的地址,客户端通过域名和ip同时访问服务器,然后通过ingress自动映射到pod的内部端口80//要在规则配置容器的内部端口才能访问!!! kubectl get ingkubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
//windows模拟访问到C:\Windows\System32\drivers\etc\hosts添加192.168.192.100 www.abc.com
//提交的任务如果有错误可以 kubectl delete servive/deploy/pod xx//在客户端访问www.abc.com会跳到nginx页面
13.部署springcloud项目
//k8s部署无状态访问(静态数据) pod删除掉数据也保存下来没有影响下一次部署, euraka是有状态访问,影响灰度发布, 数据库会动态增加数据
//!!!到工作节点上传jar和Dockerfile
//先部署提供者和消费者,再部署网关,在加ingress(rule)
//和springboot流程一致,增加了ingress
//查看容器日志
kubectl logs -f xxxpods
//deploy是controller的类型,还可以部署定时任务…
14.动态扩容缩容
//改yaml的replicate的数量,注册中心会知道注册了多少台服务器
//如果在运行,更新配置文件
vi deploy.yaml文件里面container镜像从本地拉取;//修改集群数spec:replicas: 2kubectl apply -f deploy.yaml
相关文章:
Kubernetes介绍和部署,使用
1.k8s kubernetes来自希腊语舵手,google, 8是ubernete 1.管理docker容器 go写的(并发) 2.用于微服务 3.cncf云原生基金会 2.mater(管理节点)和nodes(微服务节点) 3.部署 1.minikube kind官网在线测试语句 2.kubeadm(官方)(安装比较方便 添加) 3.github下载二进制包 4.yum(老) …...

视频汇聚平台EasyCVR视频监控播放平台WebRTC流地址无法播放的问题解决方案
开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...
node.js 基础高并发案例
什么是高并发 高并发是指系统在同一时间段内需要处理大量的并发请求或同时进行大量的操作。在计算机领域中,高并发通常指的是在短时间内有大量的用户或客户端同时访问系统或进行操作,对系统的并发处理能力提出了较高的要求。 高并发的特点包括 大量的…...

OpenCV实例(八)车牌字符识别技术(二)字符识别
车牌字符识别技术(二)字符识别 1.字符识别原理及其发展阶段2.字符识别方法3.英文、数字识别4.车牌定位实例 1.字符识别原理及其发展阶段 匹配判别是字符识别的基本思想,与其他模式识别的应用非常类似。字符识别的基本原理就是对字符图像进行…...
svn文章五:问题排查与修复 - 出了问题怎么办?SVN故障排除与修复指南
文章五:问题排查与修复 - “出了问题怎么办?SVN故障排除与修复指南” 概述:在使用SVN时,难免会遇到一些问题和错误。在这篇文章中,我们将教您如何进行故障排查和修复,保护您的SVN仓库和数据安全。 1. 引言…...
国产开源ambari之DataSophon部署
介绍 DataSophon致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台,帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台。 主要特性有: 快速部署,可快速完成300个节点的大数据集群部署兼容复杂环境,极少的依赖使其很容易适配各种复杂环境监控指标全面丰…...

面试之快速学习STL- vector
1. vector底层实现机制刨析: 简述:使用三个迭代器表示的:  这也就解释了,为什么 vector 容器在进行扩容后,与其相关的指针、引用以及迭代器可能会失效的原因。 insert 整体向后移 erase 整体向前移…...

LeetCode_03Java_1572. 矩阵对角线元素的和
给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线的和为:1 5 9 3 7 2…...

系统架构设计师---职责及与其他角色的关系区别
一. 系统架构设计师的职责如下: 系统架构设计师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出 开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件、…...

【Visual Studio Code】--- Win11 C盘爆满 修改 Code 插件数据和缓存的保存路径
Win11 C盘爆满 修改 Code 插件数据和缓存的保存路径 一、概述二、修改 Code 插件数据和缓存的保存路径 一、概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径,学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成…...
mapbox-gl中mvt、pbf 矢量切片 feature id bug
1.版本:mapbox-gl.js 2.13.0,pbf采用 postgis生成 2.调用矢量切片时,采用如下方法查询矢量切片要素,报错 map.on(mousemove, function(e) { var bbox = [ [e.point.x - 5, e.point.y - 5], [e.point…...

206、仿真-51单片机锂电池蓄电池电压电流加按键控制开关状态Proteus仿真设计(程序+Proteus仿真+配套资料等)
毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…...

【Realtek sdk-3.4.14b】RTL8197F+RTL8812F欧洲屏蔽5G天气雷达信道DFS信道120、124、128方法
需求描述 对于欧洲国家来说,默认支持DFS信道,但是有三个信道比较特殊,是天气雷达信道,如下图所示120、124、128,天气雷达信道有个特点就是在信号可以发射之前需要检测静默15min,如果信道自动选择到了天气雷达信道,就会有15min的时间无法连接到WiFi热点,严重影响用户体验…...

【嵌入式学习笔记】嵌入式入门7——IIC总线协议
1.IIC简介 IIC即Inter Integrated Circuit,集成电路总线,是一种同步,串行,半双工通信总线。 IIC总线协议——总线就是传输数据通道,协议就是传输数据的规则,有以下特点: 由时钟线SCL和数据线S…...

你永远想象不到有多折磨的 Android 开发 react-native gradle*!¥%#
很难过,拿到项目运行不起来,错误报告研究几天没研究明白,改代码,装gradle,忙和好久还是一个样,也不知道是码的问题还是什么,一开始 后面装完gradle,不报错了,但是也跑不起…...
关于STM32 hal printf重定向 “FILE“ is undefined
> 关于STM32 hal printf重定向,及报错。“FILE” is undefined 增加以下内容: #include "string.h" #include "stdio.h" #pragma import(__use_no_semihosting) 标准库需要的支持函数 struct __…...
“深入剖析JVM内部机制:理解Java虚拟机的工作原理“
标题:深入剖析JVM内部机制:理解Java虚拟机的工作原理 介绍: Java虚拟机(JVM)是Java语言的核心组件,负责将Java源代码转换为可以在计算机上运行的机器码。了解JVM的内部机制对于开发人员来说非常重要&#…...

939. 最小面积矩形;2166. 设计位集;2400. 恰好移动 k 步到达某一位置的方法数目
939. 最小面积矩形 核心思想:枚举矩形的右边那条边的两个点,并用一个哈希表存储相同纵坐标的最近出现的列的列数,不断更新最近出现的左边那条边。 2166. 设计位集 核心思想:这题主要是时间复杂度的优化,用一个flag来标记当前翻转…...

GPT垂直领域相关模型 现有的开源领域大模型
对于ToC端来说,广大群众的口味已经被ChatGPT给养叼了,市场基本上被ChatGPT吃的干干净净。虽然国内大厂在紧追不舍,但目前绝大多数都还在实行内测机制,大概率是不会广泛开放的(毕竟,各大厂还是主盯ToB、ToG市…...
学习Vue:slot使用
在Vue.js中,组件高级特性之一是插槽(Slots)。插槽允许您在父组件中插入内容到子组件的特定位置,从而实现更灵活的组件复用和布局控制。本文将详细介绍插槽的使用方法和优势。 什么是插槽? 插槽是一种让父组件可以向子…...

QT的工程文件.pro文件
文章目录 QT的工程文件.pro文件QT5中的基本模块Qt CoreQt GUIQt WidgetsQt QMLQt QuickQt NetworkQt SQLQt MultimediaQt ConcurrentQt WebEngineQt TestLib TARGET 可选择的模版CONFIG的配置项 QT的工程文件.pro文件 每一个QT项目都至少有一个.pro文件,用来配置项目…...

【第九篇】 SpringBoot测试补充篇
简介 本文介绍了SpringBoot测试中的五项关键技术:测试类专用属性加载、 测试类专用Bean配置、 表现层测试方法、测试类事务回滚控制、配置文件随机数据设置)。这些技术可以有效隔离测试环境,确保测试数据不影响生产环境,同时提供了…...

idea 启动jar程序并调试
添加一个JAR 应用程序,填写以下内容: JAR路径:填写你要启动的jar程序的绝对路径 虚拟机选项:-Xmx1G -Xms1G -agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 程序实参(可选,minecraft专用…...
【Redis】笔记|第9节|Redis Stack扩展功能
Redis Stack 扩展功能笔记(基于 Redis 7) 一、Redis Stack 概述 定位:Redis OSS 扩展模块(JSON、搜索、布隆过滤器等),提供高级数据处理能力。核心模块: RedisJSON:原生 JSON 支持…...

【西门子杯工业嵌入式-5-串口实现数据收发】
西门子杯工业嵌入式-5-串口实现数据收发 一、通信基础1.1 什么是通信1.2 嵌入式系统中的通信 二、串行通信原理2.1 串行通信简介2.2 通信参数约定 三、GD32F470 串口资源与性能3.1 串口硬件资源 四、串口通信的实现4.1 串口初始化流程4.2 串口发送函数编写4.3 使用 printf 实现…...
Wireshark使用教程(含安装包和安装教程)
Wireshark使用入门教程 0.资源下载以及软件安装1.Wireshark中无法显示网卡列表2.Wireshark抓取H264过程 0.资源下载以及软件安装 参考blog: 抓包神器wireshark安装保姆级教程 压缩包下载:Wireshark安装包 1.Wireshark中无法显示网卡列表 Wireshark中无法显示网…...

2024 CKA题库+详尽解析| 15、备份还原Etcd
目录 免费获取题库配套 CKA_v1.31_模拟系统 15、 备份还原Etcd 题目: 开始操作: 1)、切换集群 2)、登录master并提权 3)、备份Etcd现有数据 4)、验证备份数据快照 5)、查看节点和Pod状态 6&am…...
NLP学习路线图(二十四):门控循环单元(GRU)
一、背景:RNN的困境与门控机制的曙光 RNN的基本原理: RNN的核心思想是引入循环连接,使网络具有“记忆”功能。 在时刻 t,RNN接收当前输入 x_t 和前一个时刻的隐藏状态 h_{t-1}。 通过一个共享的权重参数(W, U, b)计算当前时刻的隐藏状态 h_t: h_t = tanh(W * x_t + U * …...
抗辐照MCU在卫星载荷电机控制器中的实践探索
摘要:在航天领域,卫星系统的可靠运行对电子元件的抗辐照性能提出了严苛要求。微控制单元(MCU)作为卫星载荷电机控制器的核心部件,其稳定性与可靠性直接关系到卫星任务的成败。本文聚焦抗辐照MCU在卫星载荷电机控制器中的应用实践&…...

如何使用Jmeter进行压力测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…...