K8s 概念知识梳理

一、K8s 小知识

Pod:

1.最小的部署单元

2.一组容器的集合

3.一个Pod中的容器共享网络命名空间

4.Pod是短暂的

Controllers:

1.Deployment: 无状态应用部署

2.StatefulSet: 有状态应用部署

3.DaemonSet: 确保所有Node运行同一个Pod

4.Job: 一次性任务

5.Cronjob: 定时任务

更高级层次对象,部署和管理Pod

Service:

1.防止Pod失联

2.定义一组Pod访问策略

小概念:

Label: 标签,附加到某个资源上,用于关联对象,查询和筛选

Namespaces: 命名空间,将对象逻辑上隔离。属于K8s的命名空间做一定的隔离,而非操作系统上的命名空间。

二、k8s 核心组件说明

Master 组件

kube-API Server:

集群的统一入口,各个组件的协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听等操作都会通过APIServer进行处理,并将信息交给ETCD 数据库存储。

kube-Scheduler:

根据调度算法为新创建的Pod 选择一个Node 节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

kube-controller-manager:

它处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。

Node 组件

kubelet:

它是Master 在 Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作,kubelet将每个Pod转换成一组容器。

kube-proxy:

它是Node 节点上 Pod 的网络代理,维护网络规则和四层负载均衡工作。

docker:

它用于容器运行时,因为1.24版本后不再支持,需要安装运行时插件[cri-dockerd是docker容器的接口]。可以安装cri-dockerd 插件。

数据库组件

ETCD:

它的功能包括基本的key-value存储、监听机制、key的过期及续约机制,用于监控和服务发现、原子CAS和CAD,用于分布式锁和leader选举。

二、网络说明

CNI 容器网络接口 container network inface

CNI的问题,它解决的是跨主机网络通信。

CNI网络插件实现:路由方案、隧道方案。

条件:

1.一个 pod 分配一个唯一IP

2.node 可以访问任何pod

Flannel 网络方案,属于路由方案。由vxlan(隧道)、host-gw(路由),upd实现模式。主要采用vxlan、host-gw。 公网的VPC网络可以供Flannel方式对接。aws-vpc,aliyun-vpc

Calico 网络方案,ipip(隧道),bgp(路由),属于纯三层的虚拟化网络解决方案。

1.Linux 内核支持BGP(边界网关协议),它可以在K8s中,Calico 组件利用其在每个K8s的Node节点上创建虚拟路由器,

并把每个节点上的Pod当作是节点路由器后的一个终端设备并为其分配一个IP地址。各节点路由器通过BGP协议生成路由规则,从而实现不同节点上Pod间的通信。

2.BGP 路由模型要求所有节点位于同一个二层网络中,所以Calico还支持基于IPIP和VXLAN的OverLay网络模型。

3.Calico 支持混合使用路由和Overlay网络模型,BGP路由模型用于二层网络的高性能通信,IPIP或VXLAN用于跨二层网络节点间Pod报文的转发。

BGP用于同一个二层网络间的通信,IPIP或VXLAN用于跨不同二层网络间的通信实现。

4.Calico 是一套开源的网络和网络安全解决方案,用于容器、虚拟机、宿主机之前的网络连接、它是一个纯三层的虚拟化网络解决方案,

它把每个节点都作为一个虚拟路由器,并把每个节点上的Pod当作是节点路由器后的一个终端设备并为其分配一个IP地址。

5.flannel 是一套网络解决docker集群跨主机通信的覆盖网络(overlay network)。

6.flannel 支持VXLAN, Host-GW、udp模式(一般性能较差)

相关推荐
nathan052911 小时前
Kubernetes 实战练习指南
云原生·容器·kubernetes
無名之輩11 小时前
Nvidia Device Plugin入门二之envvar策略
kubernetes
云和数据.ChenGuang13 小时前
微服务技术栈
微服务·云原生·架构
syty202013 小时前
K8s是什么
容器·kubernetes·dubbo
江团1io014 小时前
微服务雪崩问题与系统性防御方案
微服务·云原生·架构
Evan Wang15 小时前
使用Terraform管理阿里云基础设施
阿里云·云原生·terraform
向上的车轮15 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang
灵犀物润16 小时前
Kubernetes 配置检查与发布安全清单
安全·容器·kubernetes
360智汇云17 小时前
k8s交互桥梁:走进Client-Go
golang·kubernetes·交互
xy_recording17 小时前
Day20 K8S学习
学习·容器·kubernetes