城口自助建站,查询建设工程规范的网站,建设一个网站项目预算,响应式网站建设哪里有1. Kubernetes简介
作为一个目前在生产环境已经广泛使用的开源项目 Kubernetes 被定义成一个用于自动化部署、扩容和管理容器应用的开源系统#xff1b;它将一个分布式软件的一组容器打包成一个个更容易管理和发现的逻辑单元。
Kubernetes 是希腊语『舵手』的意思#xff0…1. Kubernetes简介
作为一个目前在生产环境已经广泛使用的开源项目 Kubernetes 被定义成一个用于自动化部署、扩容和管理容器应用的开源系统它将一个分布式软件的一组容器打包成一个个更容易管理和发现的逻辑单元。
Kubernetes 是希腊语『舵手』的意思它最开始由 Google 的几位软件工程师创立深受公司内部 Borg 和 Omega 项目的影响很多设计都是从 Borg 中借鉴的同时也对 Borg 的缺陷进行了改进Kubernetes 目前是 Cloud Native Computing Foundation (CNCF) 的项目并且是很多公司管理分布式系统的解决方案。
在 Kubernetes 统治了容器编排这一领域之前其实也有很多容器编排方案例如 compose 和 Swarm但是在运维大规模、复杂的集群时这些方案基本已经都被 Kubernetes 替代了。
2. Node
Node 可以是一台物理机也可以是虚拟机。
2.1 Node状态
当我们拿到这台服务器后首先我们登录服务器查看下服务器的基本配置和信息。其实对于一个新加入 K8S 集群的 Node 也是一样需要先检查它的状态并将状态上报至集群的 master 。
2.1.1 IP地址
首先我们所关心的是我们服务器的 IP 地址包括内网 IP 和外网 IP。对应于 K8S 集群的话这个概念是类似的内部 IP 可在 K8S 集群内访问外部 IP 可在集群外访问。
2.1.2 信息
我们需要看下服务器的基本信息比如看看系统版本信息 cat /etc/issue 或者 cat /etc/os-release 等方法均可查看。对于 K8S 集群会将每个 Node 的这些基础信息都记录下来。 2.1.3 容量
我们通常也都会关注下我们有几个核心的 CPU 可通过 cat /proc/cpuinfo 查看有多大的内存 通过 cat /proc/meminfo 或 free 等查看。对于 K8S 集群会默认统计这些信息并计算在此 Node 上可调度的 Pod 数量。 2.1.4 条件
对于我们拿到的服务器我们根据上述的一些基本信息进行判断这台机器是否能满足我们的需要。对 K8S 集群也同样当判断上述信息均满足要求时候便将集群内记录的该 Node 信息标记为 Ready Ready True这样我们的服务器便正式的完成交付。
3. Deployment 和 Pod
3.1 Pod
作为 Kubernetes 集群中的基本单元Pod 就是最小并且最简单的 Kubernetes 对象这个简单的对象其实就能够独立启动一个后端进程并在集群的内部为调用方提供服务。
3.2 Deployment
提供了一种对 Pod 和 ReplicaSet 的管理方式每一个 Deployment 都对应集群中的一次部署是非常常见的 Kubernetes 对象。
3.3 例如
在使用一台服务器时我们通常需要编写一个主页index.html以及将其部署在web服务器上对于 K8S 而言我们想要的能提供对 index.html 访问的服务便可理解为 Deployment 的概念表明一种我们预期的目标状态。 而对于 web服务器 和 index.html 这个组合可以理解为其中的 Pod 概念作为最小的调度单元。
4. Container Runtime
Docker 已经是容器技术的事实标准了它让开发者将自己的应用以及依赖打包到一个可移植的容器中让应用程序的运行可以实现环境无关。
如果我们想要将当前主页部署在多台服务器上我们可以在服务器上安装docker此时我们需要做的事情也便只是将我们的服务构建成一个镜像需要编写一个 Dockerfile构建一个镜像并部署到每台服务器上便可。
我们能够通过 Docker 实现进程、网络以及挂载点和文件系统隔离的环境并且能够对宿主机的资源进行分配这能够让我们在同一个机器上运行多个不同的 Docker 容器任意一个 Docker 的进程都不需要关心宿主机的依赖都各自在镜像构建时完成依赖的安装和编译等工作这也是为什么 Docker 是 Kubernetes 项目的一个重要依赖。
而 Docker 如果对应于 K8S 集群中的概念便是 Container Runtime这里还有其他的选择比如 rktrunc 和其他实现了 OCI 规范的运行时。
参考资料
《Kubernetes 从上手到实践》