kubernetes培训

基本概念

Node

节点可以是物理机或虚拟机,每个节点上都运行着容器运行时环境;

Pod

在这里插入图片描述

Pod是k8s中的最小调度单元,一个Pod可以包含一个或多个容器,同一Pod内的容器共享存储卷和网络空间。容器则是轻量级、可移植的执行单元,包含了应用及其依赖的文件系统;

Namespace

default:默认创建的命名空间;
kube-node-lease:保存有关心跳信息的节点数,每个节点都有自己的租约对象,决定其可用性;
kube-public:包含对外可公开的数据,里边包含可访问的集群信息、验证信息等;
kube-system:k8s组件自身使用的命名空间;

Clusterip


ClusterIP类型的service创建时,k8s通过etcd从可分配的ip池中分配一个全局唯一、不可修改的虚拟ip地址,只能在集群内部访问。所有访问该ip的请求,都会被iptables转发到后端的endpoints中;

Nodeport类型service

通过service可以为一组具有相同功能的容器应用提供一个统一的、不变的入口地址,并且将请求进行负载分发到后端的各个容器应用上。客户端不需要知道每个单独的提供服务的Pod的地址,这样,这些Pod就可以在集群中随时被创建、调度和移除。service从设计上看是一个虚拟概念,逻辑上代理后端的Pod;
通过每个node上暴露的ip和port路由到ClusterIP服务,所以可从外部访问。在具有ClusterIP服务的前提下,同一个服务在每个worker 节点的同一个端口上公开,用户可以在任何:NodePort 地址上访问服务。

Ingress

LoadBalancer类型service只为提供三四层负载均衡,而Ingress只需要一个公网IP就能为许多服务提供访问(七层)。当客户端向Ingress发送Http请求时,Ingress会根据请求的主机名和路径决定请求转发到哪个服务上;
在这里插入图片描述ingress controller:将新加入的ingress转化成nginx的配置文件并使之生效;
ingress服务:nginx配置文件的抽象,每添加一个新的服务只需写一个新的yaml文件即可;

域名

得益于kube-dns插件,通过修改容器的/etc/resolv.conf配置,可以通过域名的方式访问service;
在这里插入图片描述
k8s将service的名称当做域名注册到kube-dns中,pod查询DNS是通过ServiceName.Namespace子域名来查询的。当service的默认namespace为default时,域名可以通过ServiceName成功查询。

常用资源类型

Deployment

Deployment用来声明式地更新应用的实例,支持滚动更新和回滚,一个 Deployment 可以控制一个ReplicaSet;

Service

Service 定义了一种抽象方法来访问一组Pod,供了一个稳定的入口地址;

ReplicaSet

ReplicaSet确保任何时候都有指定数量的Pod副本在运行,用于横向扩展,一个 ReplicaSet 可以控制多个Pod;

Persistent volume

存储卷为Pod提供持久化的数据存储;

ConfigMap和Secret

ConfigMap用于存储非机密的数据、Secret 用于存储敏感信息,如密码和证书;

StatefulSet

StatefulSet为有状态的应用提供了管理机制,保证每个 Pod 都有一个唯一的网络标识和持久化存储;

DaemonSet

DaemonSet 确保所有或部分节点上都运行着一个 Pod 的副本,常用于运行监控或日志代理等应用;

组件及作用

master节点

在这里插入图片描述

API Server

提供了集群管理的Rest API接口,包括认证授权、数据校验以及集群状态变更,是资源配额控制的入口,是整个系统的数据总线;

Controller Manager

作为集群内部的管理控制中心,负责集群内的Node、Pod副本、endpoint、namespace、service account、资源配额的管理;

Scheduler

根据特定的调度算法把Pod调度到指定的worker上,该过程叫做绑定Bind;

Etcd

key-value分布式存储数据库,主要用途是保存集群状态数据、共享配置、服务发现;

worker节点

在这里插入图片描述

kubelet

Master节点在worke节点上的代理,向master汇报node的状态信息,pod全生命周期管理:在pod中创建容器、创建pv、返回pod的运行状态、执行容器健康检查等;

kube-proxy

在worker节点上实现 Pod网络代理,实现Service通信,维护网络规则、四层负载均衡工作;

通信过程

在这里插入图片描述

k8s通过watch的机制进行每个组件的协作。

1、用户使用kubectl create或apply yaml文件创建pod,请求发送到apiseerver,apiserver将yaml中的属性信息(metadata)写入etcd;
2、apiserver触发watch机制准备创建pod,转发给scheduler,使用调度算法选择worker节点,返回绑定的node信息给apiserver写入etcd;
3、apiserver又通过watch机制调用kubelet,按照pod信息触发docker run命令创建容器;
4、pod创建完成之后经由kubelet将pod的信息发送给apiserver,最后写入etcd(kubectl get pods命令调用etcd的信息);

特性

自动伸缩Auto Scaling

水平自动伸缩 (HPA): 根据CPU使用率、内存使用情况或其他自定义度量指标自动调整Pod的数量;
垂直自动伸缩 (VPA): 自动调整Pod的资源请求和限制,以优化资源使用;

滚动更新Rolling Updates

通过控制更新的速度来最小化对用户的影响,并确保在任何时刻都有足够的应用实例可用;

服务网格Service Mesh

Istio提供服务间的通信管理和监控,包括负载均衡、服务发现、加密、故障注入等;

网络策略Network Policies

控制Pod之间的四层网络流量,提高安全性;

资源配额Resource Quotas

限制命名空间内的资源使用,比如Pod数量、CPU和内存用量等,帮助组织管理集群资源分配;

亲和性和反亲和性Affinity and Anti-Affinity)

控制Pod在节点上的调度,确保Pod按照特定规则运行在同一节点上或者不在同一节点上;

Job 和 CronJob

Job确保一个或多个Pod成功完成至少一次其指定的任务、CronJob创建基于时间周期的Job;

常用命令

官方
简版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值