当前位置: 首页 > news >正文

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

  1. cent7 2g2core
  2. interact network between two nodes(download flannel.yum file connect network)
  3. forbid swap areas ,firework
  4. xshell 查看—>撰写–>send cmd at the same time
  5. 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

  1. 打jar/war包

  2. 写Dockerfile生成镜像

  3. kubectl create deployment nginx --image=镜像名,暴露端口

  4. 镜像运行在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种端口

  1. nodePort向外暴露的端口
    // 优点 :type:NodePort可以暴露端口,yaml有写不用写语句 nodeport指定端口
    //不足: 1.一个服务一个端口使用2.只能使用30000-32767端口 3.如果虚拟机ip变化,需要人工处理(ip被写进配置了)
  1. targetPort 容器的端
  2. 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能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…...

node.js 基础高并发案例

什么是高并发 高并发是指系统在同一时间段内需要处理大量的并发请求或同时进行大量的操作。在计算机领域中&#xff0c;高并发通常指的是在短时间内有大量的用户或客户端同时访问系统或进行操作&#xff0c;对系统的并发处理能力提出了较高的要求。 高并发的特点包括 大量的…...

OpenCV实例(八)车牌字符识别技术(二)字符识别

车牌字符识别技术&#xff08;二&#xff09;字符识别 1.字符识别原理及其发展阶段2.字符识别方法3.英文、数字识别4.车牌定位实例 1.字符识别原理及其发展阶段 匹配判别是字符识别的基本思想&#xff0c;与其他模式识别的应用非常类似。字符识别的基本原理就是对字符图像进行…...

svn文章五:问题排查与修复 - 出了问题怎么办?SVN故障排除与修复指南

文章五&#xff1a;问题排查与修复 - “出了问题怎么办&#xff1f;SVN故障排除与修复指南” 概述&#xff1a;在使用SVN时&#xff0c;难免会遇到一些问题和错误。在这篇文章中&#xff0c;我们将教您如何进行故障排查和修复&#xff0c;保护您的SVN仓库和数据安全。 1. 引言…...

国产开源ambari之DataSophon部署

介绍 DataSophon致力于快速实现部署、管理、监控以及自动化运维大数据云原生平台,帮助您快速构建起稳定、高效、可弹性伸缩的大数据云原生平台。 主要特性有: 快速部署,可快速完成300个节点的大数据集群部署兼容复杂环境,极少的依赖使其很容易适配各种复杂环境监控指标全面丰…...

面试之快速学习STL- vector

1. vector底层实现机制刨析&#xff1a; 简述&#xff1a;使用三个迭代器表示的&#xff1a; &#xfffc; 这也就解释了&#xff0c;为什么 vector 容器在进行扩容后&#xff0c;与其相关的指针、引用以及迭代器可能会失效的原因。 insert 整体向后移 erase 整体向前移…...

LeetCode_03Java_1572. 矩阵对角线元素的和

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

系统架构设计师---职责及与其他角色的关系区别

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

【Visual Studio Code】--- Win11 C盘爆满 修改 Code 插件数据和缓存的保存路径

Win11 C盘爆满 修改 Code 插件数据和缓存的保存路径 一、概述二、修改 Code 插件数据和缓存的保存路径 一、概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶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仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&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&#xff0c;集成电路总线&#xff0c;是一种同步&#xff0c;串行&#xff0c;半双工通信总线。 IIC总线协议——总线就是传输数据通道&#xff0c;协议就是传输数据的规则&#xff0c;有以下特点&#xff1a; 由时钟线SCL和数据线S…...

你永远想象不到有多折磨的 Android 开发 react-native gradle*!¥%#

很难过&#xff0c;拿到项目运行不起来&#xff0c;错误报告研究几天没研究明白&#xff0c;改代码&#xff0c;装gradle&#xff0c;忙和好久还是一个样&#xff0c;也不知道是码的问题还是什么&#xff0c;一开始 后面装完gradle&#xff0c;不报错了&#xff0c;但是也跑不起…...

关于STM32 hal printf重定向 “FILE“ is undefined

> 关于STM32 hal printf重定向&#xff0c;及报错。“FILE” is undefined 增加以下内容&#xff1a; #include "string.h" #include "stdio.h" #pragma import(__use_no_semihosting) 标准库需要的支持函数 struct __…...

“深入剖析JVM内部机制:理解Java虚拟机的工作原理“

标题&#xff1a;深入剖析JVM内部机制&#xff1a;理解Java虚拟机的工作原理 介绍&#xff1a; Java虚拟机&#xff08;JVM&#xff09;是Java语言的核心组件&#xff0c;负责将Java源代码转换为可以在计算机上运行的机器码。了解JVM的内部机制对于开发人员来说非常重要&#…...

939. 最小面积矩形;2166. 设计位集;2400. 恰好移动 k 步到达某一位置的方法数目

939. 最小面积矩形 核心思想&#xff1a;枚举矩形的右边那条边的两个点&#xff0c;并用一个哈希表存储相同纵坐标的最近出现的列的列数,不断更新最近出现的左边那条边。 2166. 设计位集 核心思想&#xff1a;这题主要是时间复杂度的优化&#xff0c;用一个flag来标记当前翻转…...

GPT垂直领域相关模型 现有的开源领域大模型

对于ToC端来说&#xff0c;广大群众的口味已经被ChatGPT给养叼了&#xff0c;市场基本上被ChatGPT吃的干干净净。虽然国内大厂在紧追不舍&#xff0c;但目前绝大多数都还在实行内测机制&#xff0c;大概率是不会广泛开放的&#xff08;毕竟&#xff0c;各大厂还是主盯ToB、ToG市…...

学习Vue:slot使用

在Vue.js中&#xff0c;组件高级特性之一是插槽&#xff08;Slots&#xff09;。插槽允许您在父组件中插入内容到子组件的特定位置&#xff0c;从而实现更灵活的组件复用和布局控制。本文将详细介绍插槽的使用方法和优势。 什么是插槽&#xff1f; 插槽是一种让父组件可以向子…...

别再用土办法改论文了!书匠策AI官网www.shujiangce.com才是2025届毕业生的“通关密码“

你有没有经历过这种崩溃瞬间&#xff1f; 凌晨两点&#xff0c;你对着电脑屏幕&#xff0c;查重率39%&#xff0c;AIGC疑似率67%。导师发来一条消息&#xff1a;"这篇不像你写的&#xff0c;重写。" 那一刻&#xff0c;你是不是特别想问一句&#xff1a;我到底该怎…...

Soundcore Liberty 5 Pro系列耳塞:价格升级功能多样,通话降噪表现超出色!

产品线内差异&#xff1a;耳塞相同&#xff0c;充电盒不同此前&#xff0c;Soundcore价格最高的耳塞&#xff08;不包括睡眠耳塞&#xff09;是售价150美元的Liberty 4 Pro&#xff0c;但Liberty 5 Pro售价170美元&#xff0c;Liberty 5 Pro Max售价230美元&#xff0c;这已经进…...

C++lambda表达式深入解析

Clambda表达式深入解析lambda表达式是C11引入的匿名函数特性&#xff0c;它提供了一种简洁的方式来定义内联函数对象&#xff0c;特别适合用于STL算法和回调函数。lambda表达式的基本语法包括捕获列表、参数列表、返回类型和函数体。#include #include #include #includevoid b…...

别再乱用case了!Verilog里case、casez、casex到底啥区别?一个例子讲透

别再乱用case了&#xff01;Verilog里case、casez、casex到底啥区别&#xff1f;一个例子讲透 第一次在Verilog代码里看到casez和casex时&#xff0c;我下意识以为它们只是case的某种变体语法。直到某次仿真结果出现诡异的不匹配&#xff0c;排查三小时后才发现是casex误用导致…...

ARM NEON中的VMLAL/VMLSL指令详解与优化实践

1. ARM SIMD指令集概述在嵌入式系统和移动计算领域&#xff0c;ARM架构凭借其出色的能效比占据了主导地位。随着多媒体处理、机器学习等计算密集型任务的普及&#xff0c;单指令多数据流(SIMD)技术成为提升处理器性能的关键手段。ARM的Advanced SIMD扩展(通常称为NEON技术)提供…...

FARM问答系统调优终极指南:置信度校准与答案排序策略详解

FARM问答系统调优终极指南&#xff1a;置信度校准与答案排序策略详解 【免费下载链接】FARM :house_with_garden: Fast & easy transfer learning for NLP. Harvesting language models for the industry. Focus on Question Answering. 项目地址: https://gitcode.com/g…...

vue3+python基于Django框架的铁路博物馆展览系统的设计与实现67350649

目录同行可拿货,招校园代理 ,本人源头供货商项目背景技术栈核心功能模块关键技术实现部署方案项目亮点项目技术支持源码获取详细视频演示 &#xff1a;同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 项目背景 …...

Bpmn Process Designer性能优化指南:大型流程图的渲染与交互优化

Bpmn Process Designer性能优化指南&#xff1a;大型流程图的渲染与交互优化 【免费下载链接】bpmn-process-designer bpmn-js 工具库 项目地址: https://gitcode.com/gh_mirrors/bp/bpmn-process-designer Bpmn Process Designer是一款基于bpmn-js的强大流程设计器工具…...

Win11Debloat:3分钟彻底清理Windows 11臃肿系统,恢复纯净体验

Win11Debloat&#xff1a;3分钟彻底清理Windows 11臃肿系统&#xff0c;恢复纯净体验 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes t…...

Unity AI部署核心指南:Barracuda零拷贝推理实战

1. Barracuda不是“另一个推理引擎”&#xff0c;而是Unity原生ML部署的唯一合理解在Unity项目里跑一个训练好的PyTorch模型&#xff0c;你第一反应是不是导出ONNX、写个C# wrapper、再手动管理Tensor内存&#xff1f;我试过——两周时间卡在GPU张量生命周期上&#xff0c;最终…...