kubernetes简介-这是一篇学习k8s必看的文章

简介: kubernetes简介-这是一篇学习k8s必看的文章

你想要学习k8s吗?如果想要学习k8s就需要了解什么是k8s,这篇文章通过图文形式很好的解释了k8s到底是什么,正所谓众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。只有读到通俗易懂的文章你才不会迷路,下面开始跟着笔者进入到k8s学习之旅吧。

kubernetes基本介绍


一、kubernetes是什么?  

   Kubernetes是一个开源的容器管理平台,简称k8s,用于管理多个主机上的容器化应用程序,提供应用程序的快速部署,扩缩容,升级,维护和扩展等机制,利用service可以实现服务注册、发现以及四层负载均衡,通过ingress可以实现七层负载均衡等功能,Kubernetes这个名字源于希腊语,意思是舵手或飞行员,谷歌在2014年开放了Kubernetes项目,Kubernetes建立在谷歌拥有大量运行生产工作量的十五年经验的基础上,结合了社区中的最佳创意和实践,社区活跃度极高,幕后拥有大量技术人员在维护和支持。


二、kubernetes容器编排工具的优势

   

    1.用户体验效果好,可以快速上手操作:

    拥有良好的web ui界面,可以实现应用程序的快速部署,升级,扩容,缩容,回滚等。

        2.根据节点资源的使用情况对pod进行合理的调度:

      可以按照用户需要调度pod,例如保证Pod只在资源足够的节点上运行,会尝试把同一功能的pod分散在不同的节点上,还会尝试平衡不同节点的资源使用率等。

          3.灵活部署:

        支持多种平台,如公有云、私有云、混合云,VMware vSphere、VMware Workstation、虚拟机

         4.完善的认证授权机制,自带审计功能:

          可以对多用户做细化的授权管理,达到相互之间的操作完全隔离,互不影响,而且自身带有审计功能,可以对操作过程进行实时的日志记录,出现问题可以方便排查。

             5.可扩展性强:

            拥有强大的集群扩展能力,可以根据业务规模自动增加和缩减主机节点的数量,确保服务可以承受大量并发带来的压力,保证业务稳定运行。

               6.拥有完善的灾备预警解决方案:

              拥有多种灾备解决方案,支持备份和容灾,出现故障可以达到秒级切换,保证线上业务不受影响。

                 7.支持windows节点:

                kubernetes支持将windows节点添加为工作节点并部署windows容器,确保不再受到具体的操作系统类型的影响,提升整体部署的效率。


                三、应用场景实践

                  1.kubernetes在日志管理系统中的应用

                在生产环境中,日志对于排查问题至关重要,我们需要有一个日志管理系统,如efk,kubernetes可以实现efk的快速部署,通过采用daemonset控制器部署fluentd组件,来收集节点和k8s集群的日志,通过kubernetes部署efk日志管理系统可实现如下功能:

                (1)如果集群扩容,那么daemonset控制器会自动检测到新增加的node节点,就会在新的node节点上部署fluentd,完成日志收集,这就可以减少人为干预,提高工作效率,确保日志可以被正常收集;(2)如果es数据量大,kubernetes可以实现集群中pod应用的水平扩展,完成应用的弹性扩容和收缩等操作。

                  2.kubernetes在DevOps场景下的应用:

                   DevOps是一套完整的运维开发流程,可以实现快速的构建、测试和发布软件,整个流程包括敏捷开发->持续集成->持续交付->持续部署->DevOps,通过 Kubernetes,我们可以实现容器在多个计算节点上的统一调度,可以将容器对接到持久存储、虚拟网络,还可以实现弹性伸缩等,提高了产品的迭代速度,在DevOps体系下加入k8s可以实现如下功能:

                  (1)多集群管理:可以根据客户需求对开发,测试,生产环境部署多套kubernetes集群,每个环境使用独立的物理资源,相互之间避免影响;
                  (2)多环境一致性:Kubernetes是基于docker的容器编排工具,因为容器的镜像是不可变的,所以镜像把 OS、业务代码、运行环境、程序库、目录结构都包含在内,镜像保存在我们的私有仓库,只要用户从我们提供的私有仓库拉取镜像,就能保证环境的一致性;
                  (3)持续集成,持续部署,持续交付:可以让产品快速迭代,自动部署,根据客户的要求达到持续交付的能力。

                    3.kubernetes在微服务中的应用

                  service Mesh可以很好地保证未拆分的应用与已经拆分出来的微服务之间的互通和统一治理,不将业务代码与任何框架,平台或者服务绑定,管理微服务时,我们需要对这些微服务和它们的调用关系进行注册、为其分配资源、创建一定数量的节点副本、并发布到集群中去;同时还要为其配置好网络和负载均衡,使这些微服务能够被外部访问,在这些微服务的运行过程中,需要始终保持其可用性,一旦有节点出现问题,需要立即创建新的节点将其替换掉,运行过程中需要对这些微服务进行监控和日志收集;在负载发生变化的时候,还要能够迅速调整资源分配,kubernetes在微服务中可实现如下功能:


                    (1)服务发现:通过service可以实现服务发现,负载均衡,自修复,自动关联;
                    (2)提供统一的配置管理中心:对于配置中心,K8S提供了configMap,可以在容器启动的时候,将配置注入到环境变量或者Volume里面;
                    (3)弹性伸缩:通过控制器创建指定数量的pod副本,通过hpa可以实现pod应用的水平扩容和回收;
                    (4)通过jenkins实现持续集成/持续部署
                    (5)自动扩展:当Kubernetes集群的资源严重不足而导致Job排队等待时,可以很容易的添加一个Kub

                    四、kubernetes特点

                      1. 可移植:

                      支持公有云,私有云,混合云,多重云(multi-cloud)

                        2. 可扩展:

                        模块化, 插件化, 可挂载, 可组合

                          3. 自愈:

                          自动布置,自动重启,自动复制,自动扩展。

                          五、kubernetes功能详细介绍

                            1. 多租户的网络隔离:

                            Kubernetes支持多种网络插件,如flannel,calico,canel等,每个插件都有独特的性能,可以分别适用于多种场景,
                            我们可以利用calico的network policy(网络策略)解决k8s中的网络隔离,对于多租户场景,可以每一个用户一个名称空间,然后对这个名称空间设置网络隔离。

                               2. 高可用:

                              kubernetes中支持多种高可用解决方案,如keepalive+nginx,keepalived+haproxy等,
                              可以使访问流量分发到不同的主机节点,减轻节点压力,如果某个节点出现故障,可以实现妙级切换,达到高可用,保证业务不中断;

                                3. 用户数据的持久化存储:

                               kubernetes支持多种持久化存储解决方案,保证数据可以得到很好的备份,降低用户数据丢失的风险,kubernetes中可使用的存储方案如下:

                                (1)本地存储emptyDir,hostPath
                                (2)网络连接类存储SAN/网络附加存储:iSCSINAS/存储局域网络:nfs,cifs
                                (3)分布式存储glusterfs,ceph/块级别的存储,cephfs/文件系统级别的存储
                                (4)云存储:Azure Disk等

                                4. 拥有多种更新回滚策略

                                  通过管理kubernetes的控制器和service等,可以实现灰度发布,蓝绿部署,
                                  金丝雀发布等,达到业务的快速和回滚等操作,用以满足不同客户的不同升级需求。

                                   5. 弹性伸缩

                                    根据访问的流量压力,可以实现pod的水平扩容和缩减,达到秒级扩容,让pod始终处于满足业务正常运行时所需的数量即可,避免了资源的浪费。

                                      6. Kubernetes可以满足很多运行环境中应用的需求,如下:

                                      进程协同,利用复合应用保证应用和容器一对一的模型
                                      存储系统挂载
                                      分发密钥
                                      应用健康检测
                                      应用实例复制
                                      水平自动扩展
                                      命名和发现
                                      负载均衡
                                      滚动更新
                                      资源监控
                                      日志访问
                                      自检和调试
                                      识别和认证
                                      这为PaaS提供了IaaS层的便利,提供了基础设施提供者间的可移植性。

                                      六、kubernetes架构

                                           kubernetes的物理架构是master/node模式,master一般是三个节点或者五个节点做高可用,根据集群规模来定,master高可用指的是对apiserver做高可用或者对master的物理节点做高可用,node可以有多个节点,专门用来部署应用的,架构图如下所示:



                                      七、kubernetes核心组件

                                         1.master节点组件

                                        apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制,负责接收、解析、处理请求。

                                         scheduler:调度器,负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上。

                                         kube-controller-manager:控制器,负责维护集群的状态,检查pod的健康状态,比如故障检测、自动扩展、滚动更新等一些操作。

                                         docker:是一个容器引擎,用于运行容器。

                                         etcd:etcd是一个key/value形式的键值存储,保存了整个kubernetes集群的状态,在kubernetes中使用etcd时,需要对etcd做备份,保证高可用,整个kubernetes系统中一共有两个服务需要用到etcd用来协同和存储配置,分别是:

                                      (1)网络插件calico、对于其它网络插件也需要用到etcd存储网络的配置信息;
                                      (2)kubernetes本身,包括各种对象的状态和元信息配置。

                                       注:关于etcd API版本的说明

                                        网络插件操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API,所以在下面我们执行etcdctl的时候需要设置ETCDCTL_API环境变量,该变量默认值为2,表示使用v2版本的api,v3表示使用v3版本的api。


                                         2.node节点(工作节点)组件

                                          kubelet:负责与master节点的apiserver进行通信的,接收到客户的请求,进行创建Pod,管理Pod,启动pod等相关操作。
                                         kube-proxy:k8s代理,是在群集中的每个节点上运行的网络代理,kube-proxy负责请求转发,一旦发现了某一个Service关联的Pod信息发生了改变(如IP、Port等),由Kube-Proxy就会把变化后的service转换成IPVS或IPtables规则中,完成对后端pod的负载均衡。
                                         docker:是一个容器引擎,用于运行容器。


                                         3.附加组件

                                          coredns:k8s1.11之前使用的是kubedns,1.11之后才有coredns,coredns是一个DNS服务器,能够为 Kubernetes services提供 DNS记录

                                          dashboard:k8s的web界面,通过这个界面可以对k8s资源进行操作

                                          Ingress Controller :七层负载均衡控制器,可以创建nginx或者traefik这种七层负载应用,实现域名和https访问

                                          prometheus+alertmanager+grafana:监控组件

                                          efk:日志采集组件


                                        看到这就要恭喜你了,说明你已经耐心的看完了整篇文章,对k8s有了基本了解,请继续关注后续文章,带你真正走进k8s的世界,没有人能随随便便成功,90%努力+10%天赋=100%成功!!

                                        相关实践学习
                                        深入解析Docker容器化技术
                                        Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
                                        相关文章
                                        |
                                        6月前
                                        |
                                        存储 Kubernetes 网络安全
                                        关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
                                        本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
                                        734 2
                                        |
                                        存储 Kubernetes 监控
                                        K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
                                        总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
                                        1084 33
                                        |
                                        存储 人工智能 Kubernetes
                                        ACK Gateway with AI Extension:面向Kubernetes大模型推理的智能路由实践
                                        本文介绍了如何利用阿里云容器服务ACK推出的ACK Gateway with AI Extension组件,在Kubernetes环境中为大语言模型(LLM)推理服务提供智能路由和负载均衡能力。文章以部署和优化QwQ-32B模型为例,详细展示了从环境准备到性能测试的完整实践过程。
                                        |
                                        弹性计算 人工智能 资源调度
                                        DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
                                        智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
                                        |
                                        监控 Kubernetes Cloud Native
                                        基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
                                        本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
                                        |
                                        12月前
                                        |
                                        存储 运维 Kubernetes
                                        容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
                                        阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
                                        |
                                        Kubernetes 容器
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
                                        273 0
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
                                        |
                                        Kubernetes 容器
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
                                        239 0
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
                                        |
                                        Kubernetes 应用服务中间件 API
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
                                        253 0
                                        KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(二)
                                        |
                                        5月前
                                        |
                                        人工智能 算法 调度
                                        阿里云ACK托管集群Pro版共享GPU调度操作指南
                                        本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
                                        541 2

                                        推荐镜像

                                        更多