Kubernetes介绍微服务框架的流行使得服务越来越精细化,服务越来越多,对发布和管理提出了巨大的挑战,而Docker的诞生带来了用微服务进行资源治理和控制提供了一个很好的基础。容器化可以解决不同语言环境的部署、高移植性、跨平台部署等问题,但是Docker对于容器服务的编排就没那么方便了。由于Docker在这方面的不足,Kubernetes诞生了。Kubernetes是一个可移植和可扩展的开源平台,用于管理容器化的工作负载和服务,可以促进声明式配置。和自动化。使用Kubernetes带来这些便利和应用程序的快速部署。很容易实现水平缩放或垂直缩放。无缝发布新的应用程序版本。最大限度地利用资源。应用程序停止并自动重新启动。Kubernetes特性可移植:支持公有云、私有云、混合云、多云(multi-cloud)可扩展:模块化、可插拔、可挂载、可组合自动化:自动部署、自动重启、自动复制、自动伸缩/扩展需要Kubernetes,它能做什么?容器是打包和运行应用程序的好方法。在生产环境中,您需要在不停机的情况下管理运行应用程序的容器。例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理了这种行为,会不会更容易?这就是Kubernetes的救星!Kubernetes为您提供了一个弹性运行分布式系统的框架。Kubernetes会处理您的扩展需求、故障转移、部署模式等。Kubernetes为您提供:服务发现和负载均衡:Kubernetes可以使用DNS名称或自己的IP地址暴露容器,如果容器的流量很大,Kubernetes可以负载均衡和分配网络流量,使部署稳定。存储编排:Kubernetes允许您自动挂载您选择的存储系统,例如本地存储、公共云提供商等。自动部署和回滚:您可以使用Kubernetes描述已部署容器的期望状态,这可以改变以受控速率将实际状态转换为所需状态。例如,您可以自动化Kubernetes为您的部署创建新容器,删除现有容器并将其所有资源用于新容器。容器资源配额:Kubernetes允许您指定每个容器需要多少CPU和内存(RAM)。当容器指定资源请求时,Kubernetes可以就管理容器的资源做出更好的决策。自我修复:Kubernetes重启失败的容器,替换容器,杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不通知客户端。密钥和配置管理:Kubernetes允许您存储和管理敏感信息,例如密码、OAuth令牌和ssh密钥。您可以部署和更新机密和应用程序配置,而无需重建容器映像,或在堆栈配置中公开机密。配置文件:Kubernetes可以通过ConfigMap存储配置。Kubernetes基础资源定义和理解,万物皆资源,万物可描述,万物可管。Namespaces命名空间,在一个Kubernetes集群中,可以使用命名空间创建多个“虚拟集群”,这些命名空间可以完全隔离,或者通过某种方式,一个命名空间中的服务可以访问其他命名空间中的服务。DeploymentDeployment为Pod和ReplicaSet提供了一个声明式的方法,用来替代之前的ReplicationController来方便的管理应用。典型的应用场景包括:定义一个Deployment来创建Pod和ReplicaSets滚动升级和回滚应用扩展和收缩PauseandcontinueDeploymentServiceKubernetesService定义了这样一个抽象:Pod的逻辑分组,一个可以访问它们的策略——通常被称为微服务。Service可以访问这组Pod,通常是通过LabelSelector。IngressIngress是Kubernetes集群外访问集群内服务的入口。比如官方维护的IngressNginx。ingresstraefik、ingresshaproxy等。PodPod是您可以在kubernetes中创建和部署的最小和最简单的单元。Pod代表在集群中运行的进程。Pod封装了应用程序的容器(在某些情况下是几个容器)、存储、独立的网络IP以及管理容器如何运行的策略选项。Pod代表一个部署单元:Kubernetes中一个应用程序的实例,它可能由一个或多个容器组成,共享资源。ConfigMapConfigMapAPI资源用于存储可在Pod中使用的键值对配置数据,或用于存储控制器等系统组件的配置数据。ConfigMap虽然类似于Secrets,但是ConfigMap在处理没有敏感信息的字符串时更加方便。注意:ConfigMaps不能替代属性配置文件。ConfigMaps只是对多个属性文件的引用。可以理解为Linux系统中的/etc目录,专门用来存放配置文件的目录。SecretSecret解决了配置敏感数据(如密码、令牌和密钥)的问题,而不会将这些敏感数据暴露给图像或Pod规范。Secret可以用作Volume或环境变量。Secret分为三种:ServiceAccount:用于访问KubernetesAPI,由Kubernetes自动创建,自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录;Opaque:Secret,base64编码格式,用于存储密码、密钥等;kubernetes.io/dockerconfigjson:用于存储私有docker注册表的身份验证信息。PV和PVC用于持久化数据存储。在Pod中,当容器被销毁时,所有的数据都会被销毁。如果需要保留数据,这里需要声明PV存储量和PVC存储量。PVC常用于Deployment中,用于持久化数据存储。实现持久存储还需要理解卷的概念。卷容器磁盘上文件的生命周期很短,这使得在容器中运行重要应用程序时会出现一些问题。首先,当容器崩溃时,kubelet会重启它,但是容器中的文件会丢失——容器以干净的状态(镜像的原始状态)重启。其次,当多个容器在Pod中并发运行时,通常需要在这些容器之间共享文件。Kubernetes中的Volume抽象很好地解决了这些问题。标签和选择器标签和选择器。作用是给每个容器打上标签,然后每个controller通过Selector匹配容器并进行管理。比如一个Deployment或者Service就是这样匹配对应的Pod的。上面的readme只是介绍了几个常用的Kubernetes资源的概念和作用。具体介绍可以参考Kubernetes官方文档。参考链接https://kubernetes.io/docs/home/https://jimmysong.io/kubernet...https://www.jianshu.com/p/b5b...本文由YP小站发表!
