当前位置: 首页 > news >正文

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;

常用命令

官方
简版

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt之QSS的介绍以及加载QSS
  • 阿里云私有镜像仓库配置及使用
  • 双重映射+逆向并查集+恢复
  • Spring Cloud Eureka与Kubernetes的集成:服务发现的混合方案
  • 开放式耳机哪个品牌实用?南卡、漫步者、小米 三款爆火单品横评
  • 自动化运维:Ansible、Puppet、Chef工具对比与实战
  • 正确申报化妆品数量技巧 | 国际物流服务贸易 | 箱讯科技
  • 电路笔记(PCB): KICAD 导入 JLC嘉立创项目
  • 【js】箭头函数和普通函数在this指向的区别
  • Docker快速上手
  • Linux的log日志排查
  • 51单片机-LED闪烁
  • git rebase 合并
  • 【python】关于判断空值None、判断len()=0,和 if not 的区别
  • 模块化沙箱有几种类型?各类模块化沙箱的功能是什么?
  • cookie和session
  • CSS3 变换
  • Java IO学习笔记一
  • Java反射-动态类加载和重新加载
  • Linux后台研发超实用命令总结
  • python docx文档转html页面
  • Spring Boot快速入门(一):Hello Spring Boot
  • win10下安装mysql5.7
  • Zepto.js源码学习之二
  • 好的网址,关于.net 4.0 ,vs 2010
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 异常机制详解
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • # .NET Framework中使用命名管道进行进程间通信
  • ###C语言程序设计-----C语言学习(6)#
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (C语言)fread与fwrite详解
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)正点原子I.MX6ULL u-boot移植
  • (五)IO流之ByteArrayInput/OutputStream
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)创业的注意事项
  • (转载)Linux 多线程条件变量同步
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core 连接数据库,通过数据库生成Modell
  • .net 调用海康SDK以及常见的坑解释
  • .Net 知识杂记
  • .NetCore 如何动态路由
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .net专家(高海东的专栏)
  • .stream().map与.stream().flatMap的使用
  • /bin/bash^M: bad interpreter: No such file or directory
  • /run/containerd/containerd.sock connect: connection refused
  • ??myeclipse+tomcat
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)