docker和k8s的学习介绍

docker: 出现是因为相比于虚拟机,资源复用更加灵活,虚拟机是一个完整的操作系统,占用空间大,启动慢;docker容器技术可以根据也无需求,配置不同的环境,不会互相影响。镜像操作方便迁移,实现build once run everywhere

docker主要就是隔离和标准化。核心技术是namespace技术和cgroup技术。
namespace是让不同容器看起来没有关联,防止不同空间命名冲突,比如pid,用户Id,ip地址等。
每一个容器有自己的ns, 就和多进程一样,一个进程的1234地址和另一个进程的1234地址不是一个物理地址(虚拟地址)。不同ns中相同的命名也不是真正相同的资源。
可以通过proc/pid/ns文件夹查看进程所属的ns,然后想要修改的话可以用nsenter进入指定的别的ns空间。

cgroup是用起来隔离的技术。树状结构组织,若干个进程组成cgroup,若干个cgroup树状排列,同时有很多树,代表不同的系统资源,CPU,内存,网络,设备等
可以进行一些资源的监控限制等操作,比如限制mysql一组进程核绑定,占用多大CPU时间,内存和带宽,可以访问哪些设备等等。

常用操作,
先拉取镜像 docker pull ubuntu
然后启动一个容器 docker run -i -t -name 名字 cmd
如果是交互式的话就是/bin/bash

docker image查看镜像
docker ps 查看容器 docker inspect c_id查看具体容器信息
docker top 容器id 查看其中的进程

编译dockfile还可以post发布镜像到docker_hub库里面,没试过。

我用它主要在两个方面,一个是计算机系统实验中,每次实验要装不同的环境,而且是不兼容的,所以为了方便,就用了docker加载镜像。不然的话就要卸载。

还有一个就是在docker部署网站。(静态)
步骤是,1.端口映射一下,docker run -p 80指定80端口。
2、下载nginx和vim. 写一个简单的html文件,修改nginx配置为那个文件,启动nginx。然后ctrl+Q退出,保证容器还是在运行的。然后docker port web查看一下映射情况,通过宿主机地址127.0.0.1加映射端口访问

k8s
要知道k8s出现的原因,其实就是数据中心的操作系统,为了管理很多机器的软硬件资源的。
主要组成和操作系统类似。
调度器controller 进程线程进程组(docker pod service) 网络(每个pod有ip地址)存储(文件存储,对象存储,块存储,有自己的接口管理)和包管理工具helm
关注一下Kubernetes 会将 Service DNS的名字作为域名解析成为一个虚拟的 Cluster IP,然后通过负载均衡,转发到后端的 Pod。虽然 Pod 可能漂移,IP 会变,但是 Service 会一直不变。(Service就相当于一组pod,也就是实现某种功能的一个进程集合,比如mysql的一组进程,也就是说,在进行service作为虚拟ip的时候,真正到的pod会变飘逸的,但是service不会变的,有点类似于NAT,可以实现负载均衡了。)

k8s解决的核心问题是?

服务发现和负载均衡
也就是说给你一个程序,你需要决定在哪个机器的pod上运行。k8s的容器本身就可以指定资源大小CPU,内存等。它有自己的DNS和ip地址公开开容器,流量大的时候还可以负载均衡。

还有存储编排(可选择对象,文件,块存储)

自我修复,高可用。

架构:传统的客户端服务端架构
服务端由一组master节点(存储状态,调度分配资源)和一系列worker节点组成。

主节点结构:
它主要负责接收客户端的请求,安排容器的执行并且运行控制循环,将集群的状态向目标状态进行迁移。(主要有API和客户端交互接口,etcd键值数据库存储状态,调度器主要负责的是让pod在特定空闲节点运行,调度的策略包括资源的需求,亲和性(一组进程最好在一台主机进行,通信方便)还有一个controler控制器,负责故障的通知转移,以及副本,令牌控制等)

其他的 Worker 节点实现就相对比较简单了,它主要由 kubelet 和 kube-proxy 两部分以及运行时(docker)组成。
kubelet: 是工作节点执行操作的 agent,负责具体的容器生命周期管理,根据从数据库中获取的信息来管理容器,并上报 pod 运行状态等。
kube-proxy: 是一个简单的网络访问代理,同时也是一个 Load Balancer。它负责将访问到某个服务的请求具体分配给工作节点上同一类标签的 Pod。
kube-proxy 实质就是通过操作防火墙规则(iptables,service ip到pod ip的映射)来实现 Pod 的映射。(客户端通过services的cluster ip来访问,这个代理会根据iptable规则重定向到其中的pod,流量大的时候还可以负载均衡)service就是一组pod,保证健壮性。

Pod、Service、Volume 和 Namespace 是 Kubernetes 集群中四大基本对象,它们能够表示系统中部署的应用、工作负载、网络和磁盘资源,共同定义了集群的状态。Kubernetes 中很多其他的资源其实只对这些基本的对象进行了组合。

配置文件用yaml写,kubectl 是 Kubernetes 自带的客户端,可以用它来直接操作 Kubernetes 集群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一套完全开源,支持多租户,界面配置单点的后端框架JVS

JVS的多租户体系统 在IT系统中,“租户”(tenant)通常用于指代一种多租户架构(multi-tenancy),它是一种软件架构模式,允许多个用户或组织共享相同的应用程序或系统实例,但彼此之间的…

7.5 SpringBoot 拦截器Interceptor实战 统一角色权限校验

文章目录 前言一、定义注解annotation二、拦截角色注解1. 在拦截器哪里拦截?2. 如何拦截角色注解?3. 角色如何读取?4. 最后做角色校验 三、应用:给管理员操作接口加注解四、PostMan测试最后 前言 在【7.1】管理员图书录入和修改API&#xf…

JMeter 中 3 种参数值的传递

目录 前言: (一) 从 CSV 文件读取要批量输入的变量 (二) 利用 Cookie 进行值的传递 (三) 利用正则匹配提取上一个接口的返回数据作为下个请求的输入 前言: 在JMeter中,参数值的传递是非常重要的,因为它允许你在测试过程中动态…

右键pdf文件没有打印

问题描述 右键点pdf文件,弹出的菜单找不到打印选项。网上找了很多办法,然并卵啊。还是得靠自己慢慢摸索。 原因分析 新安装的win11系统,pdf文件默认可以用windows自带的edge浏览器打开。但是edge浏览器没有能力提供右键打印功能。 解决办法…

详解LeafLet中如何展示GeoServer发布的图层组

目录 前言 一、关于图层组 1、使用图层图组的好处 2、创建图层组 二、在Leaflet中展示图层组 1、新建Html模板框架 2、绑定地图map和底图设置 3、绑定图层组 总结 前言 在之前的博文中,曾经重点介绍如何使用LeafLet叠加Geoserver wms图层到已有底图的方法 ,…

Python应用:什么是爬虫?

文章目录 什么是爬虫虫之初,性本善?出行社交电商搜索引擎政府部门总结 面向监狱编程爬虫的君子协议什么是君子协议君子协议是怎么产生的?君子协议是什么内容?如何查看一个网站的robots协议违反君子协议的案例 参考文献 2022年初的…

x86架构ubuntu22下运行SFC模拟器zsnet

0. 环境 ubuntu22 1. apt安装 sudo apt install zsnes 2. 运行 zsnet 参考:在Ubuntu上用zsnes玩SFC游戏,https://blog.csdn.net/gqwang2005/article/details/3877121

Linux学习之系统默认打开的文件描述符、重定向

系统默认打开的文件描述符 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符,PID需要改成具体的pid,比如可以使用A终端输入vim proctest之后按下回车键。 打开一个vim编辑窗口。 再打…

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09 非常适合小朋友玩的小游戏 功能很齐全完善 项目地址:https://download.csdn.net/download/Highning0007/88050261

使用MFC CAD 的一些使用方式记录【追加ing】

1. 项目调试:由于项目很大,因此,我们调试的时候,不应该编译整个软件而是应该只编译对应的 类去做处理 2. debug 设置断点方面: 以往我们的操作都是在.exe直接执行文件上进行操作,但是,现在&am…

人工智能-神经网络

目录 1 神经元 2 MP模型 3 激活函数 3.1 激活函数 3.2 激活函数作用 3.3 激活函数有多种 4、神经网络模型 5、神经网络应用 6、存在的问题及解决方案 6.1 存在问题 6.2 解决方案-反向传播 1 神经元 神经元是主要由树突、轴突、突出组成,树突是从上面接收很多…

flutter开发实战-实现webview与Javascript通信JSBridge

flutter开发实战-实现webview与H5中Javascript通信JSBridge 在开发中,使用到webview,flutter实现webview是使用原生的插件实现,常用的有webview_flutter与flutter_inappwebview 这里使用的是webview_flutter,在iOS上,…

如何定制自己的应用层协议?|面向字节流|字节流如何解决黏包问题?如何将字节流分成数据报?

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量干货博客汇总https://blog.csdn.net/yu_cblog/c…

Excel中的Ctrl+Shift:功能及其使用方法

通过本教程,你将了解的功能以及如何在Excel中以最佳方式使用Ctrl+Shift。 我们可以在 Excel 中使用许多快捷方式来简化工作。其中一些有趣的使用了键盘上的 Ctrl 和 Shift 按钮。如果我们能够掌握这些快捷方式,我们应该能够在 Excel 中更有效地完成工作。 想知道我们可以在…

怎么把pytorch从CPU版本替换成GPU版本

使用pip命令pip uninstall torch就可以卸载当前的torch版本。(不是cpu版本一般也没有必要重装吧?) 接着找到官网https://pytorch.org/get-started/locally/ 在里面选择 根据你自己的需要选择最新的(我现在是11.8)或者没…

机器学习之随机森林(Random forest)

1 什么是随机森林 随机森林是一种监督式算法,使用由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归,是一种主流的集成学习算法。 1.1 随机森林算法原理 随机森林中有许多的分类树。我们要将一个输…

深入理解Spring AOP注解:@DataScope与@DataSource

在Spring AOP中,注解的使用扮演着重要角色,它们可以帮助我们明确定义切面、切点和增强处理。在本文中,我们将深入探讨RuoYi框架两个自定义注解:DataScope和DataSource。 1. DataScope 定义注解 首先,我们定义一个名为…

怎么使用Netty解码自定义通信协议

网络协议的基本要素 一个完备的网络协议需要具备哪些基本要素 魔数:魔数是通信双方协商的一个暗号,通常采用固定的几个字节表示。魔数的作用是防止任何人随便向服务器的端口上发送数据。协议版本号:随着业务需求的变化,协议可能…

在opencv中,RGB转gray,gray再转RGB,为何色彩不同?

#include <opencv2/opencv.hpp>int main() {// 读取RGB图像cv::Mat rgbImage cv::imread("image.jpg");// 将RGB图像转换为灰度图像cv::Mat grayImage;cv::cvtColor(rgbImage, grayImage, cv::COLOR_RGB2GRAY);// 将灰度图像转换回RGB图像cv::Mat rgbImage2;c…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段&#xff0c;还有一些模糊的概念没有弄懂&#xff0c;请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…