网站突然打不开了,怎么做一个赚钱得网站,天津建网站的公司,凯里专注网站建设报价前言
有些时候的巧合让人匪夷所思#xff0c;前两周刚刚尝试了一遍Docker操作#xff0c;紧接着就收到好朋友说要学习k8s容器部署的建议#xff0c;最近两周抽空看了一些关于k8s的知识#xff0c;相关概念真的是太多了#xff0c;概念本身是枯燥的#xff0c;但是当概念…前言
有些时候的巧合让人匪夷所思前两周刚刚尝试了一遍Docker操作紧接着就收到好朋友说要学习k8s容器部署的建议最近两周抽空看了一些关于k8s的知识相关概念真的是太多了概念本身是枯燥的但是当概念运行起来就有意思多了这时候取出费曼学习大法尝试着用自己的话来描述这些概念看看自己是不是真的学会了。本文k8s相关概念均来自个人理解后续随着学习深入可能会有改正勿喷。
学习资料
找到一些官方文档和一些写的比较通俗的教程再有疑问直接去官网查吧
学习 Kubernetes 基础知识什么是 RancherKubernetesK8S简介K8S学习教程
学到了什么
我就尝试用直白的语言来描述一下不一定准确听听看
ks8是Kubernetes的简称Rancher是一个管理k8s的工具可以操作k8s定义 Deployment 在 Node 上创建一系列包含若干 Container 的 Pod也可以操作k8定义 Service 在指定 Pod 上建立统一对外的服务Deployment、Service、Node、Pod 这些在k8s中被称为资源为了便于管理可以划分到不同的 Namespace 中。
单单就这两句话包含了7、8个名词概念要是把他们的定义列出来保准得晕晕乎乎的并且有些名词在不同的语境下有不同的含义比如Docker是一个工具、是一个运行时、是一个平台等等所以有些概念不结合具体的情景还真是说不清楚我们还是来想想为什么出现这些东西吧。
当项目规模还小的时候我们把程序放到服务器上运行起来就行了简单方便后来随着规模的扩大部署的机器越来越多发现机器资源分配不好控制可能机器的大部分资源被某个应用占用导致其他应用无法正常运行无法做到应用隔离。
后来引入了虚拟机虽然解决了资源控制问题但在单个物理机上运行多个虚拟机每个虚拟机都是完整独立的系统性能损耗大还有一个之前遗留的问题就是运行环境的差异引发的问题常常使人焦头烂额所以容器部署应运而生。
将运行程序和所依赖的环境打包成镜像放到容器运行时上运行可以保证所有程序的运行环境都一样容器相比虚拟机性能损耗小可实现资源隔离CPU和内存可按需分配所有容器共享主机的系统最有名的要数Docker了
从这个角度来看docker或者容器运行时很像JVM当年Java号称一次编写处处运行靠的就是Java虚拟机所有的Java源码会被编译成字节码在不同平台上的JVM中被翻译中对应平台的指令而Docker的身份和地位很像这个JVM容器运行时可以在运行之前打包好的镜像并且在不同的系统平台上模拟出目标平台的环境来保证“一次打包处处运行”
现在知道了我把应用程序和它依赖的运行环境打包成镜像就可以在任何安装了Docker的机器上运行不管这台机器是什么系统这样就可以快速扩展程序规模了但是新的问题还是会出现的
因为程序员太懒了让他部署几个服务器还没啥问题要是成百上千台服务器每次扩展或更新都需要逐个拉取镜像、版本回滚、逐个启动简直痛不欲生在半夜被薅起来更新维护时还容易出错所以这时候 Kubernetes 就诞生了因其K和s中间有8个字母简称为k8s它可以让你管理让你轻松管理成千上万台机器的集群这些机器上的容器都归它管一个命令就可以搞定版本升级、版本回滚等操作还可以不停机的灰度更新确保高可用、高性能、高扩展。
我的天k8s都这么牛了那 Rancher 又是啥难道他比 k8s 还厉害人类的懒惰是无极限的k8s 虽然一个命令可以完成很多需求但有些人就是一个命令也不想输啊哈哈
尽管 k8s 是一个强大的容器编排平台可以同时管理集群中数以万计的机器但人们为了方便还是开发了Rancher吗它提供了用户友好的图形用户界面、RBAC基于角色的访问控制、日志和监控、多集群管理等同时它还提供了一个集成的应用商店其中包含了许多常用的容器化应用程序和工具如数据库、监控、日志、CI/CD 等通过 Rancher 的界面轻松部署这些应用程序并与 Kubernetes 集群集成。
有些人用k8s为了方便部署和管理容器而有些人只想更方便选择了 Rancher 来管理看 k8s之后会不会有人开发的新东西来管理 Rancher 呢这有什么不可能的呢
概念白话文
前面提到了很多概念也讲了一些有关这些东西的来历接下来让我用自己的理解来说说这些名词到底指什么。
镜像最早听说这个词是系统镜像将后缀为 .iso 的系统镜像文件刻录成光盘或者烧制成U盘启动盘来安装系统容器化中的镜像含义和系统镜像类似就是用过用程序以及用于运行应用程序所需的所有依赖项打个包称为镜像它可以放到容器运行时中运行相同的镜像可以重现相同的环境就像相同的ISO文件会安装出相同的系统一样
Docker往大点说这是指一个容器化平台当然也可以是一个软件或者是一项技术规范用它可以开发、打包、部署和运行应用程序。通过使用 Docker开发人员可以将应用程序及其依赖项如库、运行时环境等打包成一个轻量级的容器然后在任何支持 Docker 的环境中运行这个容器而不用担心环境的差异性。简单点说它是一个工具可以打包一个镜像也可以运行一个镜像
Dockerfile用来说明怎么打包镜像的使用特定的描述性语言告诉Docker怎么打包出一个镜像
容器化将引用程序和运行环境打包成镜像并批量运行到其他容器运行时上的过程
镜像和容器的关系镜像是 Docker 中用于打包应用程序及其依赖项的静态文件是只读的一旦构建完成就不能修改容器是镜像的一个运行时实例它可以被启动、停止、暂停、删除等操作。可以简单类比下 class 和 object 的关系
k8s为了管理和编排大量的容器而开发出来的工具可以批量自动化的完成一些容器的操作由他又引出了大量新的概念
k3s一个轻量级的 Kubernetes 发行版体积小、资源消耗低采用了更少的组件和依赖项并且对 Kubernetes 的安装和配置进行了简化使得部署和管理更加容易
Podk8s调度、管理的最小单位它包含一个或多个紧密关联的容器
Node是集群中的计算节点有master主节点和worker工作节点之分负责提供计算资源、网络和存储服务可以是真实的物理机也可以是运行在物理机上的虚拟机。
Deployment: 是 k8s 中用于声明式管理 Pod 和 ReplicaSet 的控制器可以认为是一个描述怎样使用 Pod 资源的规则应用一个Deployment就是按照它的描述来组织和使用Pod
Service是 k8s 中用于提供对一组 Pod 的网络访问的抽象可以将一组 Pod 绑定统一对外提供服务
Namespacek8s 中用于将资源分类的一个逻辑概念类似于编程语言中的命名空间
Docker Compose与k8s同类也是用于管理容器化应用程序的工具但规模较小适用于小型项目和开发环境
Rancher一个开源的容器管理平台拥有统一的可视化界面可以同时管理多个k8s括本地、云端或混合部署的集群
Rancher Desktop是一款用于本地开发的工具基于K3s构建旨在提供轻量级的开发环境使开发人员能够轻松地在自己的计算机上进行容器化应用的开发和测试
Workloads工作负载有哪些类型的活包括Deployment部署无状态PodStatefulSet部署有状态PodDaemonSet节点监控和日志收集Job一次性任务CronJob定时重复任务
组件每个角色要干指定活所以需要配备的一些功能模块比如每个 Node 都有Kubelet组件会与k8s控制平面进行通信接收指令来管理此Node 上的 Pod
控制平面运行在主节点上的集群的核心组件之一负责管理集群的各种操作、监控集群状态并确保集群的稳定运行通常包含 kube-apiserver、etcd、kube-controller-manager、kube-scheduler、cloud-controller-manager 等
一些疑问 容器化是不是只能用Docker? 不是的Docker只是实现容器化的一种可选的途径只要实现了容器化标准的工具都可以实现容器化作为容器运行时比如 k8s 为了提高效率减少不必要的开销已经将默认的容器运行时从 Docker 改成了 containerd其他类似于Docker的运行时还有 Podman、rktRocket、LXCLinux Containers、CRI-O等 k8s 是唯一的容器编排工具吗 不是的就像前文提到的 Docker Compose 也能管理容器的使用只是适用规模较小除此之外类似的工具还有 Docker Swarm、Apache Mesos、Nomad、OpenShift等
总结
Docker 生成和运行镜像k8s 管理这些被Pod包装并运行在Node上的容器Rancher 管理 k8s 集群部署无状态Pod使用 Deployment部署有状态Pod使用 StatefulSetStatefulSet 会固定每个 Pod 的名字k8s不会为你处理数据的存储我们可以为运行数据库的Pod挂载一个磁盘来确保数据的安全云存储、本地磁盘、NFS都是可以选择的对象kubectl get all 可用于查看常用资源包括Pod、Service、Deployment、ReplicaSet等也可以单独查询某项信息 kubectl get namespace、kubectl get pod、kubectl get node、kubectl get deployment 反爬链接请勿点击原地爆炸概不负责 惟愿吾儿愚且鲁无灾无难到公卿可能不是东坡的心里话吧但一定是受到刺激以后才有的感想~