读《Kubernetes in Action》(一)------k8s介绍

    简单的了解docker后,又跟着老师做了k8s集群的部署,之后想深入了解一下k8s,在学习《Kubernetes in Action》这本书的过程中,把一些书里面的我觉得有助于我再次深入了解k8s的内容摘取出来,记录下来,方便日后理解。

一、初始

初始:
部署微服务时,部署者需要正确地配置所有服务来使其作为一个单一系统能正确工作;
部署应用往往需要具备 对数据中心底层设备和硬件架构的理解
而K8s:
为应用程序提供一个一致的环境

二、初始到现在的变化

变化是由两方面导致的, 一方面是大型单体应用被拆解为更多的 小型微服务,另一方面是应用运行所依赖的基础架构的变化

三、k8s化解开发者和运维之间的矛盾

运维人员:程序运行环境的差异性。
K8s的出现:很好的化解了开发者与运维之间会产生分歧

四、生产环境和开发环境

两个概念:生产环境与开发环境

五、一个应用开发的变化历史

在过去:开发团队的任务是创建应用并交付给运维团队,然后运维团队部署应用并使它运行。
但是现在,公司都意识到,让同一个团队参与应用的开发、部署、运维的整个生命 周期更好。 这意味着开发者、 QA(质量保证) 和运维团队彼此之间的合作需要贯穿整个流程。 这种实践被称为 DevOps。

六、K8s原理

K8s原理:
Kubernetes通过对实际硬件做 抽象, 然后将自身暴露成一个平台, 用于部署和运行应用程序。 它允许开发者自己 配置和部署应用程序, 而不需要系统管理员的任何帮助, 让系统管理员聚焦于保持 底层基础设施运转正常的同时, 不需要关注实际运行在平台上的应用程序。

七、容器与虚拟机

容器与虚拟机:
用 Linux容器技术隔离组件 ,容器允许你在同一台机器上运行多个服务, 不仅提供 不同的环境给每个服务, 而且将它们互相隔离。 容器类似虚拟机, 但开销小很多

八、使用容器与使用虚拟机的区别

使用虚拟机:
裸机-宿主机操作系统-管理程序-多个虚拟机(多个应用程序使用一个虚拟机)
使用容器:
裸机-宿主机操作系统-容器(用容器代替了虚拟机,不需要管理系统了)(一个应用程序一个容器,互相隔离)

九、到底选择虚拟机还是容器???

虚拟机与容器之间的选择依据:
使用虚拟机还是容器不是绝对的,虚拟机的主要好处是它们提供完全隔离的环境, 因为每个虚拟机运行在它自己 的 Linux内核上, 而容器都是调用同一个内核, 会存在安全隐患。如果你的硬 件资源有限, 那当你有少量进程需要隔离的时候, 虚拟机就可以成为一个选项。 为 了在同一台机器上运行大量被隔离的进程, 容器因它的低消耗而成为一个更好的选 择。

十、容器实现隔离的两种机制原理

容器实现隔离机制的两种方法:
第一个是 Linux命名空间, 它使每个进程只看到它自 己的系统视图(文件、进程、网络接口、主机名等);
第二个是Linux 控制组 (cgroups), 它限制了进程能使用的资源量 (CPU、内存、 网络带宽等)。

十一、Docker

docker:
Docker是一个容器平台,容器隔离基于linux内核;
docker 是第一个使容器能在不同机器之间移植的系统. 它不仅简化了打包应用的流 程, 也简化了打包应用的库和依赖, 甚至整个操作系统的文件系统能被打包成一个 简单的可移植的包, 这个包可以被用来在任何其他运行Docker的机器上使用

十二、虚拟机镜像和容器镜像

虚拟机镜像和容器镜像:
基于 Docker 容器的镜像和虚拟机镜像的一个很大的不同是 容器镜像是由多层构成, 它能在多个镜像之间共享和征用。 如果某个已经被下载的容器镜像已经包含了 后面下载镜像的某些层, 那么后面下载的镜像就无须再下载这些层

十三、镜像、镜像仓库与容器

三个概念:
镜像:包含了打包的应用程序及其所依赖的环境。
镜像仓库:存放Docker镜像。
容器:Docker容器通常是一个Linux容器,它基于Docker镜像被创建。 一 个运行中的容器是一个运行在Docker主机上的进程。

十四、镜像、镜像仓库、容器三者之间的关系

镜像仓库、镜像、容器之间的关系:
1 开发者橾作Docker 构建和推送镜像 ;
2 docker构建镜像;
3 docker推送镜像到镜像仓库;
4 开发者操作生产机器上的docker去运行镜像;
5 docker从镜像仓库拉取镜像;
6 docker基于镜像运行容器。

十五、容器中文件实现共享的机理

容器的镜像层是只读的,容器运行时, 一个新的可写层在镜像层之上被创建。 容器中进程写入位于底层的一个文件时, 此文件的一个 拷贝在顶层被创建, 进程写的是此拷贝。 从某个角度来说,也就是容器之间是互相隔离的

十六、容器的短板:内核和硬件架构

容器有内核和硬件架构两个短板:
1 运行在一个操作系统上的所有容器共用一个内核, 如 果一台机器上运行了一个不匹配的Linux内核版本, 或者没有相同内核模块可用, 那么此应用就不能在其上运行。
2 一个在特定硬件架构之上编译的容器化应用, 只能在有 相同硬件架构的机器上运行。 不能将一个x86架构编译的应用容器化后, 又期望它 能运行在A阳J架构的机器上。 你仍然需要一台虚拟机来做这件事情。

十七、kubernetes

kubernetes:
1 Kubernetes 暴露整个数据中心作为单个开发平台;
2 Kubernetes 是一个软件系统,它允许你在其上很容易地部署和管理容器化的应用 ;
3 kubernetes相当于一个盒子里,存放着很多的拼图块,用户可以使用任意一个拼图块来拼出自己想要的东西,然后把他打包到容器中去????
4 kubernets上的工作节点???????
5 Kubemetes 可以被 当作集群的一个操作系统来看待。它降低了开发者不得 不在他们的应用里实现一些和基础设施相关服务的心智负担。他们现在依赖于 Kubemetes 来提供这些服务,包括服务发现、扩容、负载均衡、自恢复,甚至领导 者的选举。应用程序开发者因此能集中精力实现应用本身的功能而不用浪费时间思 索怎样集成应用与基础设施。

十八、kubernetes集群

Kubernetes 集群:
由很多节点组成。主节点和工作节点。

十九、节点

节点:
1 主节点:承载着kubernetes控制和管理整个集群系统的控制面板(控制面板master:etc、API服务器、scheduler、controller manger)
2 工作节点:运行用户实际部署的应用(工作节点:kuberlet、kube-proxy)

二十、kubernetes中的组件

Kubernetes API 服务器,你和其他控制面板组件都要和它通信
Scheculer,它调度你的应用(为应用的每个可部署组件分配一个工作节点〕
Controller Manager,它执行集群级别的功能,如复制组件、持续跟踪工作节点、 处理节点失败等
etcd,一个可靠的分布式数据存储,它能持久化存储集群配置
Kubelet,它与 API 服务器通信,并管理它所在节点的容器
Kubernetes Service Proxy (kube气proxy),它负责组件之间的负载均衡网络流量

二十一、如何使用K8s

使用k8s:
开发者需要把应用程序用容器打包起来,然后去k8s上去部署,
为了在 Kubernetes 中运行应用,首先需要将应用打包进一个或多个容器镜像, 再将那些镜像推送到镜像仓库,然后将应用的描述发布到 Kubemetes API 服务器。

二十二、集合pod

集合pod

二十三、扩展副本数量

扩展副本数量:需要并行运行的每个 pod 的副本数量???


未完……待续

发布了26 篇原创文章 · 获赞 2 · 访问量 788

猜你喜欢

转载自blog.csdn.net/id__39/article/details/104344599