kubernetes (k8s)的使用
一、kubernetes 简介
谷歌2014年开源的管理工具项目,简化微服务的开发和部署。
提供功能:自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics监控、日志监控、弹性和容错、API管理、服务安全等。
官网:https://kubernetes.io/zh-cn/
GitHub地址:https://github.com/kubernetes/kubernetes
1.1、Kubernetes 主要功能
1.自我修复:当某个容器崩溃时,能够在1秒左右迅速启动新的容器2.弹性伸缩:根据需要,自动对集群中正在运行的容器数量进行调整3.服务发现:服务可以通过自动发现的形式找到它所依赖的服务4.负载均衡:当一个服务起动了多个容器,能够自动实现请求的负载均衡5.版本回退:当发现新发布的程序版本有问题,可以立即回退到原来的版本6.存储编排:根据容器自身的需求自动创建存储卷,Pod中容器之间共享数据
1.2、Kunbernetes 主要概念
1.Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控2.Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行3.Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器4.Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等5.Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod6.Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签7.NameSpace:命名空间,用来隔离pod的运行环境
1.3、组件
一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
1.Master:负责集群的决策管理2.ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制3.Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上4.ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等5.Etcd:负责存储集群中各种资源对象的信息6.Node:负责为容器提供运行环境7.Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器8.KubeProxy : 负责提供集群内部的服务发现和负载均衡9.Docker : 负责节点上容器的各种操作
1.3.1、节点组成
1.master 主节点
Etcd:整个集群的数据库,存储集群的状态数据、配置、节点等,采用 Raft 协议。
API-server:连其它组件、Etcd,提供各类 api 处理,和 Node节点 通信等。对外提供操作和获取 k8s 集群资源的 API。
Scheduler:在 k8s 集群中做调动决策,负责资源的调度、打分、分配资源。
Controller-Manager:控制各类 Controller,观察、维护集群的状态,故障检测、自动扩展、滚动更新等,协调让实际状态和预期状态达到一致。
2.work 从节点
Docker:负责容器创建和管理。
Kubelet:管理容器的生命周期,与 master 节点交互(汇报自身情况)。
Kube-proxy:网络代理,Pod 寻址、负载均衡等。
1.4、工作流程
1.当kubernetes启动后,master和node将自身的信息存储到etcd数据库中;2.一个服务的安装请求会首先被发送到master节点的apiServer组件;3.apiServer调用scheduler组件来决定服务安应该装到哪个node节点上;从etcd中读取各个node节点的信息;4.apiServer调用controller-manager去调度Node节点安装服务;5.kubelet接收到指令后,会通知docker,由docker来启动一个服务pod;6.访问服务要通过kube-proxy来对pod产生访问的代理,如此就可以访问集群中的服务了。
二、使用
2.1、常用命令
# 查看命令
kubectl --help# 查询k8s集群节点
kubectl get nodes# 查看所有的pod
kubectl get pod# 查看pod详细内容
kubectl describe pod nginx-6867cdf567-ht2bz# 查看k8s 集群的信息
kubectl cluster-info# 查看当前k8s 集群的版本
kubectl version #命令形式创建一个namespace
kubectl create namespace udiannet-dev# 查询所有的namespace
kubectl get ns# 在udiannet-dev的namespace 下运行一个pod
kubectl run pod --image=nginx -n udiannet-dev# 查看udiannet-dev下的pod
kubectl get pod -n udiannet-dev# 查看该pod的详细信息(要制定namespace)
kubectl describe pod pod-864f9875b9-492tz -n udiannet-dev# 删除该pod(要指定namespace)
kubectl delete pods pod-864f9875b9-492tz -n udiannet-dev# 创建一容器镜像为 nginx 名称为 nginx-test 的 Pod 并在 8080 端口将其暴露为与Pod 同名的 Service
kubectl run nginx-test --image=nginx --port=8080 --expose
NameSpace的创建
# 创建一个namespace
[k8s@administrator root]$ kubectl create namespace test
namespace/test created# 查看namespace
[k8s@administrator root]$ kubectl get ns
NAME STATUS AGE
default Active 3d3h
kube-node-lease Active 3d3h
kube-public Active 3d3h
kube-system Active 3d3h
test Active 8s# 创建并运行一个nginx的Pod资源
[k8s@administrator root]$ kubectl run nginx-pod --image=nginx -n test
pod/nginx-pod created# 查看test命名空间下新创建的pod
[k8s@administrator root]$ kubectl get pod -n test
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 8s# 查看默认namespace中的资源
[k8s@administrator root]$ kubectl get pods
No resources found in default namespace.# 删除指定的pod
[k8s@administrator root]$ kubectl delete pod nginx-pod -n test
pod "nginx-pod" deleted# 删除命名空间
[k8s@administrator root]$ kubectl delete ns test
namespace "test" deleted# 查看命名空间
[k8s@administrator root]$ kubectl get ns
NAME STATUS AGE
default Active 3d3h
kube-node-lease Active 3d3h
kube-public Active 3d3h
kube-system Active 3d3h# 查看某个NS,同时指定输出格式,常用格式:wide、json、yaml
[k8s@administrator ~]$ kubectl get ns default -o json
{"apiVersion": "v1","kind": "Namespace","metadata": {"creationTimestamp": "2022-03-21T09:00:52Z","labels": {"kubernetes.io/metadata.name": "default"},"name": "default","resourceVersion": "212","uid": "2c41f796-922b-426c-a5f4-78627e008e6b"},"spec": {"finalizers": ["kubernetes"]},"status": {"phase": "Active"}
}# 查看ns详情
[k8s@administrator ~]$ kubectl describe ns default
Name: default
Labels: kubernetes.io/metadata.name=default
Annotations: <none>
Status: ActiveNo resource quota.No LimitRange resource.
2.2、部署
2.3、项目应用
相关文章:

kubernetes (k8s)的使用
一、kubernetes 简介 谷歌2014年开源的管理工具项目,简化微服务的开发和部署。 提供功能:自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics监控、日志监控、弹性和容错、API管理、服务安全等。官网:https://kubernetes.io/zh-cn…...

RK3568平台开发系列讲解(音视频篇)RTMP 推流
🚀返回专栏总目录 文章目录 一、RTMP 的工作原理二、RTMP 流媒体服务框架2.1、Nginx 流媒体服务器2.2、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、 WebRTC流媒体传输协议等。 R…...

掌握这几个技巧,才敢称为Jenkins大神!
01、Performance插件兼容性问题 自由风格项目中,有使用 Performance 插件收集构建产物,但是截至到目前最新版本(Jenkins v2.298,Performance:v3.19),此插件和Jenkins都存在有兼容性问题…...

帷幄内容管理系统:从立人设、做内容到定向投流,品牌 KOS 体系打造「百万导购」
随着公域流量越来越贵,获客成本越来越高,品牌们已经越来越不满足于高曝光,而是更多地关注起销售转化率。继 KOL、KOC(关键意见消费者) 之后,KOS(关键意见销售)营销模式走入品牌的视野…...
5.vue3项目(五):实现顶部导航栏功能:导航栏静态搭建,菜单折叠功能实现,面包屑动态展示路径,刷新页面功能,全屏功能
目录 一、左侧菜单栏刷新,不要合并菜单 二、顶部tabbar静态搭建 1.新建文件 2.编辑页面 3.结果测试...

unittest 统计测试执行case总数,成功数量,失败数量,输出至文件,生成一个简易的html报告带饼图
这是一个Python的单元测试框架的示例代码,主要用于执行测试用例并生成测试报告。其中,通过unittest模块创建主测试类MainTestCase,并加载其他文件中的测试用例,统计用例的执行结果并将结果写入文件,最后生成一个简单的…...

推荐一款功能强大的在线文件预览工具-kkFileView
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…...

【Linux】磁盘阵列,了解不同raid的特点
一、raid和阵列卡介绍 1、什么是磁盘阵列: 磁盘阵列是利用虚拟化存储技术把很多块独立的磁盘组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放…...

Go 语言初探:从基础到实战
1.Go概述 程序是一段计算机指令的有序组合。程序算法数据结构。任何程序都可以将模块通过三种基本的控制结构(顺序、分支、循环)进行组合来实现。 Go(也称为Golang)是一种由Google开发的开源编程语言。设计目标是使编程更简单、…...

Kotlin文件和类为什么不是一对一关系
在Java中,一个类文件的public类名必须和文件名一致,如何不一致就会报异常,但是在kotlin的文件可以和类名一致,也可以不一致。这种特性,就跟c有点像,毕竟c的.h 和 .cpp文件是分开的。只要最终编译的时候对的…...

Kubernetes实战(四)-部署docker harbor私有仓库
1 Docker原生私有仓库Registry 1.1 原生私有仓库Registry概述 Docker的仓库主要分两类: 私有仓库公有仓库 共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有…...

IDEA JAVA项目 导入JAR包,打JAR包 和 JAVA运行JAR命令提示没有主清单属性
一、导入JAR包 1、java项目在没有导入该jar包之前,如图:2、点击 File -> Project Structure(快捷键 Ctrl Alt Shift s),点击Project Structure界面左侧的“Modules”如图:3.在 “Dependencies” 标签…...
c#输入和输出
第一个c#程序 /* c#在编译时首先编译为通用中间语言(IL代码),并且将其存在程序集中 c#的程序集包括扩展名为.exe的可执行文件和扩展名为.dll的可供其他程序调用的库文件c#在执行时首先将程序集加载到CLR中,然后通过即时编译器编译…...

设置区块链节点输出等级为警告级,并把日志存储阈值位100MB并验证;
题目 获取指定区块链节点输出等级为警告级,并设置日志存储阈值位100MB并验证; 操作步骤 1.切换目录 cd nodes/127.0.0.1/node0 2.打开配置文件并修改 vim config.ini warn:警告...

perl列表创建、追加、删除
简介 perl 列表追加元素 主要是通过push和unshift函数来实现。其中,push是追加到列表尾,unshift是追加到列表头。 perl列表删除元素 主要是通过pop和shift函数来实现。其中,pop是从列表尾删除一个元素, shift是从列表头删除一…...

leetcode刷题日记:94. Binary Tree Inorder Traversal(二叉树的中序遍历)
给出二叉树的根结点,返回二叉树的中序遍历序列。 二叉树的中序遍历序列是先遍历左子树再遍历根结点然后再遍历右子树,在遍历左子树是这个结点是左子树的根结点,左子树有左子树和根结点右子树,也就是说在遍历的时候我们要递归遍历。…...

【漏洞复现】Aapache_Tomcat_AJP协议_文件包含漏洞(CVE-2020-1938)
感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2020-1938漏洞名称Aapache_Tomcat_AJP文件包含漏洞漏洞评级高…...
RabbitMQ消息可靠性投递
RabbitMQ消息投递的路径为: 生产者 —> 交换机 —> 队列 —> 消费者 在RabbitMQ工作的过程中,每个环节消息都可能传递失败,那么RabbitMQ是如何监听消息是否成功投递的呢? 确认模式(confirm)可以监…...

汽车网络安全渗透测试概述
目录 1.汽车网络安全法规概述 1.1 国外标准 1.2 国内标准 2.汽车网络安全威胁分析 2.1 汽车网络安全资产定义 2.2 汽车网络安全影响场景及评级示例 3.汽车网络安全渗透测试描述 3.1 参考法规 3.2 渗透测试内容 4.小结 1.汽车网络安全法规概述 近年来,汽车…...
NOIP2023模拟14联测35 charlotte
题目大意 给你一棵有 n n n个节点的树,并用 01 01 01串告诉你哪些节点上有棋子(恰好一棵)。 你可以进行若干次操作,每次操作可以将两颗距离至少为 2 2 2的棋子向彼此移动一步。 问能否通过若干次操作使得所有的棋子都在一个点上…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

uni-app学习笔记三十五--扩展组件的安装和使用
由于内置组件不能满足日常开发需要,uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件,需要安装才能使用。 一、安装扩展插件 安装方法: 1.访问uniapp官方文档组件部分:组件使用的入门教程 | uni-app官网 点击左侧…...

Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...