欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > k8s基础

k8s基础

2025/2/9 0:41:30 来源:https://blog.csdn.net/2401_87121330/article/details/145474251  浏览:    关键词:k8s基础

一、概述

1.介绍

        Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。k8s是google基于go语言开发的自动化运维管理容器。

2.k8s弥补了docker的不足

  • docker是单机模式,不能实现跨主机部署,无法实现集群化。
  • docker不能实现高可用和负载均衡。docker没有自愈机制(docker应用一旦报错,就会进入停止状态,不能自动恢复)。
  • 随着容器数量的上升,管理成本也跟着一起攀升。
  • docker没有预设模版,无法实现快速,大规模的容器的调度。
  • docker没有生命周期的管理工具,没有图形化工具。

二、k8s的组件和功能*      

1.架构

架构:主从架构

主节点:所有的操作都在主节点

从节点:工作节点,主节点发出的指令在工作节点完成和实施。

主节点也可以作为工作节点,也可以进行容器应用程序的部署。(一般不用)

2.核心组件*  

(1)master组件

kube-apiserver  

        是集群的核心的核心,所有的操作都是由apiserver调用集群内的其他组件实现,apiserver也是整个集群的入口,通过apiserver来访问集群,apiserver一旦故障,整个集群都将无法使用。  

        所有对象和资源的增删改查和监听都是由apiserver来实现的,所有信息的变更,都是由apiserver处理,处理完之后交给etcd进行保存。

etcd  

        是k8s集群自己的存储服务,类似于数据库,etcd是一个分布式键值存储系统,集群的所有信息都保存在etcd,k8s的配置信息也保存在这里。etcd只能是奇数(生产中一般是3台),只有apiserver可以直接访问etcd,进行读写操作。 其他组件只能通过apiserver的接口才能够获取etcd的数据。

----配置存储中心

kube-scheduler

        根据用户设置的调度算法,为新创建的pod选择一个合适的node节点。

        k8s所有node节点的调度器,用户要部署应用时,scheduler会根据调度算法选择一个最合适的节点部署pod。

        预选策略、优先策略   

kube-controller-manager

        运行管理控制器。在k8s集群中,一个资源对应一个控制器,controller-manager就是来管理这些控制器。

控制器的类型          

node controller

        节点控制器,节点出现故障时,发现和响应

replication controller

        副本控制器,k8s集群中,一个资源对象可以创建多个副本,也就是可以有多个pod。pod的数量定义好之后,副本控制器进行管理(pod的数量可以动态的变化)

endpoints controller

        端点控制器, service和pod之间的对应关系,负责监听service和pod之间的变化关系。

        访问指定的服务,必须要知道对应的endpoint。

service account & token controller

        账户和令牌控制器,为新的命名空间内创建默认账户和api访问的令牌

resourcequota controller

        资源配额控制器,pod可以在配额的情况下使用系统资源

namespace controller

        命名空间控制器,管理namespace的生命周期

service controller

        服务控制器,k8s集群和外部的云平台之间的接口控制器

(2)node组件  

kubelet

        node节点的监视器,以及于master节点的通讯器。node节点上的信息,kubelet会定时向master汇报节点的情况(apiserver),并且接受来自matser节点的指示,采取调整措施。

        在k8s集群中,每个node节点都会有一个kubelet,用来管理从节点的服务状态,信息等等,定时发送给master。

kube-proxy  

        在每个node节点上实现pod的网络代理。是service实现的载体。负责网络的规划和四层负载,ipvs实现流量的分发。  

docker

        容器引擎,拉去镜像,运行容器,都是由docker自己完成的。

3.数据流向

 APIserver里面的可能会同时发生,也可能是按照一定的顺序先后执行

三、核心概念

        Kubernetes 包含多种类型的资源对象:Pod、Label、Service、Replication、Controller 等。 所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。 

1.pod

        pod里面包含有容器,一个pod可以有多个容器,但是k8s集群管理的最小单位就是pod

        pod中的容器共享网络、存储、资源配额,也属于controller-manager的一部分,当定义好模板之后(yaml文件)所有的pod都会按照这一模板创建。

2.pod控制器的类型  

类型说明
deployment无状态应用部署,最常用的方式
replicase确保pod的数量。受控于deployment
daemonset确保所有节点都会运行一个pod
statefulset有状态部署,pod是按照序号排列,可以设定副本数
job一次性任务,根据用户的设置,任务执行完毕,pod就自动退出
cronjobpod会按照定时任务执行,执行完毕退出。
label标签,k8s特有的管理方式,分类管理资源队形。label是一个键值对形式,key和value由用户自行定义

3.k8s对外提供访问的方式

service

        只要创建好了pod,集群一定会为pod分配一个全局独立的ip地址。但是pod的生命周期有限,pod的ip地址可能会发生变化。    

        service可以通过标签匹配pod的标签,就可以直接访问到对象pod的资源,无需再关联。

        每个service都有一个固定的虚拟ip地址。cluster ip,只能局域网访问,自动的而且是动态的绑定后端的pod。

        service有多种类型,都是基于四层的转发,ip+端口

        kube-proxy,来实现网络的转发,转发的形式: iptables,ipvs(主流转发模式,性能最好)

        内网使用。

ingress  

        对外提供访问,可以使用7层代理,可以使用域名。  

4.namespace

        命令空间,k8s集群是一个人为的划分,逻辑上的一种隔离方式,每个项目都在自己的命令空间内部署,互相隔离,互不干扰。  

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com