k8s是什么

本文介绍了Kubernetes(k8s)作为开源的容器编排系统,它自动化部署、扩展和管理容器化应用,解决了单机Docker的局限,提供高可用、弹性伸缩和集中化管理等功能。重点讨论了其核心组件、服务发现、负载均衡等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生么是k8s:

Kubernetes:8个字母省略,就是k8s

自动部署,自动扩展和管理容器化部署的应用程序的一个开源系统、

k8s是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。

分布式和集群化的分布式进行容器管理。

1.15   1.18    1.20  1.28   现在普遍用的是1.20

k8s是Google的borg系统作原型,后期经由go语言编写的开源软件。

Docker微服务,可以满足微服务使用,那么为什么还要使用k8s呢。

  1. 传统的部署方式:一般意义上的二进制部署,安装-运行-运行维护,需要专业的人员,如果出现故障还需要人工重新拉起来,而且如果业务量增大,只能水平的拓展,再部署一个。
  2. 容器化,可以用dockerfile编写好自定义的容器,随时基于镜像都可以运行,数量少,还能管的过来,数量一旦太多管理起来太复杂。而且。Docker一般是单机运行,没有高可用。

k8s的作用:简单,高效的部署容器化的应用。

  1. 解决了docker的单机部署和无法集群化的特点
  2. 解决了随着容器数量的增加,对应增加的管理成本。
  3. 容器的高可用,提供了一种容器的自愈机制。
  4. 解决了容器没有预设模版,以及无法快速,大规模部署,以及大规模的容器调度。
  5. ks8提供了集中化配置管理的中心。
  6. 解决了容器的生命周期的管理工具。
  7. 提供了图形化工具,可以用图形化工具对容器进行管理。

k8s是基于开源的容器集群管理系统,在docker容器技术的基础之上。为容器化的应用提供部署。运行,资源调度。服务发现,动态伸缩等一系列完整的功能。

大规模容器管理:作用

  1. 对docker容器技术从应用的包----部署----运行----停止----销毁,全部生命周期管理。
  2. 集群方式运行,跨机器的容器管理
  3. 解决docker的跨机器运行的网络问题
  4. k8s可以自动修复,使得整个容器集群可以在用户期待的状态下运行。

k8s的特性:

  1. 弹性伸缩:基于命令,或者图形化界面基于CPU的使用情况,自动的对部署的程序进行扩容和伸缩。以最小的成本运行服务。
  2. 自我修复:节点故障时,重启启动失败的容器,替换和重新部署。
  3. 服务发现和负载均衡:k8s为多个容器提供一个统一的访问入口(内部地址和一个内部的DNS名称),自动负载均衡关联所有的容器。
  4. 自动发布和回滚:k8s采用滚动的策略更新应用。如果更新过程中出现故障,可以根据回滚点来进行回滚。
  5. 集群化的配置管理和密钥管理。 k8s集群内的各个组件都是要进行秘钥对验证的。但是k8s的安全性不够。核心的组件不建议部署,自定义应用。

     6,存储编排:                 

                1,可以自动化的吧容器部署在节点上。

                2,可以通过命令行或者yml文件(自定义pod)实现指定节点部署

                3,可以通过网络存储,NFS g fs

     7,任务进行批次处理:

        提供一次性的任务, 定时任务,满足需要批量处理和分析的场景。   

k8s的核心组件:

  1. kube-apiserver:k8s集群之中每个组件都是要靠密钥对来进行验证,组件之间的通信apiserver.API是应用接口服务,k8s的所有资源请求和调用操作都是kube-apiserver来完成。

       所有对象资源的增,删,改。查和监听的操作都是kube-apiserver处理完成之后交给etcd来进行。

Api-server是k8s所有请求的入口服务,api-server接受k8s的所有请求(命令行和图像化界面)

然后根据用户的具体请求,通知对应的组件展示或者运行命令。

APIserver相当于整个集群的大脑。

    2,kube-controller-manager:运行管理控制器。是k8s集群中处理常规任务的后台线程。是集群中所有资源对象的自动化控制中心。一个资源对应一个控制器,controller-manager负责管理这些控制器。

  1. node controller(节点控制器):负责节点的发现以及节点故障时的发现和响应。
  2. Replication controller(副本控制器):控制关联pod的副本数。可以随时扩容。
  3. Endpoints controller(端点控制器):监听service和对应pod的福本变化。端点就是服务暴漏出的访问点。要访问这个服务,必须要知道他的endpoints。就是内部每个服务的IP地址+ 端口。
  4. Service account 和roken controllers(服务账户和令牌控制)      为命名空间创建,默认账户和API访问令牌。Namespace,访问不同的命令空间。
  5. resourcequota controller(资源控制器):可以对命名空间的资源使用进行控制。   也可以对pod的资源进行控制。
  6. namespace controller(命名空间的控制器):管理命名空间的生命周期。
  7. Server controller(服务器节点控制):k8s集群和外部的主机之间的接口控制器。

     

    3.kube-scheduler:资源调度组件,根据调度算法为新创建的pod选择一个合适的node节点。         可以理解为k8s的所有node节点的调度器,部署和调度node

       预先策略:人工定制,指定的node节点上部署

       预先策略:限制条件。

      根据调度算法选择一个合适的node,node的节点的资源情况,node的资源控制的情况等等,          选一个资源最富裕,负载最小的node来部署。

    4,ETCD:k8s的存储服务,etcd分布式键值存储系统(key:value)k8s的关键配置和用户配  置,     先通过APIserver调用etcd当中的存储信息。然后在实施。(这个集群当中,能对etcd存储进行    读写权限的,只有API-server)  主节点上

node组件:

  1. kubelet:node 节点的监视器,以及于MASTER节点的通讯器,可以理解为master在node节点上的眼线。

   Kubelet会定向时向API server汇报自己的node上的运行服务的状态,APl-server会把节点状态保存etcd存储当中。

   接受来自master节点的调度命令。 如果发现自己的状态和master状态不一致,会调用docker的接口,同步数据。

   对节点上容器的生命周期进行管理,保证节点上的镜像不会占满磁盘空间,退出的容器的资源,进行回收。

      2.kube-porxy:

   实现每个node节点上的pod网络代理。负责节点上的网络规划核四层负载工作。负责写入iptables(快淘汰)ipvs实现服务映射。

 Pod不是容器

Kube-prxoxy:本身不直接给pod提供网络代理,proxy是service资源的载体。

Kube-porxy:实际上代理的是pod的集群网络(虚拟网络)

k8s的每个node节点上都有一个kube-proxy组件。

       3,docker:容器引擎,运行容器。负责本机的容器创建和管理。

   k8s要创建pod时,kube-sheduler调度到节点上(node节点)。节点上的kubelet只是docker启动特点的溶气。

   Kubelet把容器的信息收集,发送给主节点。需要在主节点发布指令,节点上kubelet就会指示docker拉去镜像,启动或者停止容器。

      

      4,pod运行在节点上的。是k8s当中创建或者部署的最小最简单的一个基本单位,一个pod代表集群上正在运行的一个进程。

   同一个pod内的每个容器就是一颗豌豆。

Pod是由一个或者多个容器组成,pod中的容器共享网络,存储和计算资源,可以部署在不同的docker主机上。

   一个pod里面可以运行多个容器或者具有关联的多个容器组成一个pod

Deployment:无状态应用部署,作用就是管理和控制pod,以及replicaset(运行几个 容器)管控他的运行状态。

Replicaset:保证pod的副本数量,受控于deploment。

在k8s中,部署服务,实际上就是pod,deployment部署的服务就是pod,rereplicaset的就是来定义pod的容器数量。可以保证pod的不可重复性。在当前命名空间不能重复。不同命名空间名称可以重复。

官方推荐使用deploment进行服务部署。

Daemonset:确保所有节点运行同一类的pod

Statefulset:有状态应用部署。

Job:可以在pod中设置一次性任务,运行完即退出。

Cronjob:一直在运行的周期性任务。

Service的作用:

在k8s集群当中,创建一个pod之后,都会其中运行的容器分配一个集群内的IP地址。由于业务的变更,容器可能会发生变化,IP地址也会发生变化,service的作用就是提供整个pod对外统一的IP地址。

Service就是一个网管(路由器)通过访问service就可以访问pod内部的容器集群。

Service能实现负载均衡和代理-----kube-proxy-----来实现负载均衡

Service是k8s微服务的核心,屏蔽了服务的细节,统一的对外暴漏的端口,真正实现了“微服务”。

Service的流量调度:userspace(用户空间,废弃)iptablees(即将废弃),IPVS(目前1.20都用IPVS)

 Label:标签:

k8s的特色管理方式,分类管理资源对象。

Label标签可以用户自定义

Label选择器:等于 不等于 使用定义的标签名。

Ingress:的作用:

 k8s集群对外暴漏提供访问的接口。属于应用层,七层代理,转发的是http请求 http/https   service是四层转发,转发的是流量。

Namespace:

在k8s上可以通过namesapce来实现资源隔离,项目隔离。

通过namespace可以吧集群划分为多个资源不可共享的虚拟集群组。

不同命名空间里面的资源名称可以重复的。

工作过程

首先认证主节点

k8s管理员访问集群的第一步  auth(权限验证,有权限才能访问),API-server 提供集群的统一访问接口(调用集群内部的各个服务,收集集成信息保存到<etcd>所有集群信息)----->kube-contronller-manager(节点控制器)---> kube-schudel(调度器)主节点认证完成之后。

(kubelet)节点的监控器,管理node节点上的docker资源----> (kube-proxy)代理服务,负责代理pod节点的网络地址.

当客户端来访问节点:  客户端通过防护墙访问kube-proxy(kube-proxy对应pod的server)获取容器内部的资源

调度节点(kube-schudel)形成新的pod,会把pod指定安排到指定的容器上(创建pod的过程)

<think>好的,我需要回答用户关于Kubernetes(K8S)基本概念的问题。首先,我需要回顾一下用户提供的引用内容,确保信息准确。根据引用[1]和[2],K8S的缩写是因为K和S之间有8个字母,全称是Kubernetes。它是一个容器编排平台,用于管理容器化应用,简化部署和维护流程。 接下来,用户可能想知道K8S的核心功能。引用[2]提到,K8S提供了应用部署、规划、更新和维护的机制,目标是让容器化应用的部署更简单高效。引用[5]提到Secret类型,说明K8S还处理敏感信息管理,如密码和密钥,这展示了其安全性方面的功能。 然后,用户可能对K8S的架构感兴趣。引用[3]解释了node的概念,即集群中的工作节点,负责运行容器化的应用。主节点(控制平面)和工作节点(node)共同构成K8S集群,主节点负责调度和监控,工作节点执行实际任务。 此外,用户可能想知道为什么K8S如此重要。引用[4]指出,K8S在近年来变得非常流行,尤其是在云原生和微服务架构中,成为后端开发和运维的重要技能。企业需要高效管理大量容器,K8S提供了自动化、扩展和自我修复的能力,从而提升了运维效率。 最后,我需要确保回答结构清晰,分点说明,并自然地融入引用内容。同时,生成的相关问题要覆盖用户可能进一步关心的方面,如核心组件、Secret的作用、与Docker的关系以及应用场景等。这样用户能有一个全面的理解,并知道从哪里继续深入学习。</think>### Kubernetes (K8S) 的基本概念 **Kubernetes(K8S)** 是一个开源的容器编排平台,用于自动化管理云平台中多个主机上的容器化应用。其名称来源于首字母 `K` 和尾字母 `S` 之间的8个字母(`ubernete`),因此缩写为 **K8S** [^1][^2]。 #### 核心功能与作用 1. **容器编排** K8S 的核心目标是简化容器化应用的部署、扩展和管理。它支持自动化调度容器到集群中的节点(node),并根据资源需求动态调整实例数量,确保应用高效运行[^2][^4]。 2. **服务发现与负载均衡** K8S 自动为容器分配网络地址(IP)和域名(DNS),并通过负载均衡将流量分发到多个实例,提升应用的可用性。 3. **自我修复** 当容器或节点故障时,K8S 会自动重启容器、替换实例或重新调度到健康节点,保障服务连续性[^3]。 4. **存储与配置管理** K8S 提供 `Secret` 和 `ConfigMap` 等资源,用于安全存储敏感信息(如密码、密钥)或配置数据,并动态挂载到容器中[^5]。 5. **滚动更新与回滚** 支持逐步更新应用版本,若更新失败可快速回滚到旧版本,降低部署风险。 #### 核心组件 - **Node(节点)**:集群中的工作机器,负责运行容器化应用。每个节点包含 `kubelet`(代理程序)和容器运行时(如 Docker)[^3]。 - **Control Plane(控制平面)**:负责集群管理,包括调度容器、监控状态、处理用户请求等,组件如 `API Server`、`Scheduler`、`Controller Manager`。 - **Pod**:最小部署单元,包含一个或多个共享资源的容器(如网络和存储)。 #### 为什么需要 K8S? 在微服务与云原生架构中,应用通常由数百个容器组成。手动管理这些容器的部署、扩缩容和故障恢复极其复杂,而 K8S 通过自动化解决了这一难题,成为企业构建高可用、弹性系统的关键工具。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值