容器概述
什么是容器(以 Docker 为例)
Docker 架构
Docker 使用 C/S (客户端/服务器)体系的架构,Docker 客户端与 Docker 守护进程(Dockerd)通信,Docker 守护进程负责构建,运行和分发 Docker 容器。Docker 客户端和守护进程可以在同一个系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护进程。Docker 客户端和守护进程使用 REST API 通过 UNIX 套接字或网络接口进行通信。
CoreDNS 概述及运维实践
概述
什么是 DNS ?
域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。
Etcd 概述及运维实践
Etcd 概述
什么是 Etcd ?
Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft
协议作为一致性算法,Etcd基于 Go 语言实现。
名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istribute system)的D,组合在一起表示etcd是用于存储分布式配置的信息存储服务。
6 张图带你深入了解 kube-scheduler
本文目录:
- kube-scheduler 用途
- Scheduler Pod 调度流程
- 源码调用链路
- Scheduler Framework
- 如何扩展
kube-scheduler 用途
顾名思义:负责将 Pod 调度到 Node 上。
Kubernetes 概述
什么是 kubernetes
容器编排、调度平台,是一个完备的分布式系统支撑平台。
kubernetes 架构
- etcd 兼具一致性和高可用性的键值数据库,只有API Server能与其通信;
- apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
- controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
- scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
- kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
- container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
从0开始装一套 KubeVirt 1.2.1
KubeVirt 架构
架构
- virt-api : 负责提供一些 KubeVirt 特有的 api,像是 console, vnc, startvm, stopvm 等。
- virt-controller : 管理和监控 VMI 对象及其关联的 Pod,对其状态进行更新。
- virt-hander : 以 DaemonSet 运行在每一个节点上,监听 VMI 的状态向上汇报,管理 VMI 的生命周期。
- virt-launcher : 以 Pod 方式运行,每个 VMI Object 都会对应一个 virt-launcher Pod,容器内有单独的 libvirtd,用于启动和管理虚拟机。
将 oVirt 虚拟机迁移到 KubeVirt
上篇,我们 从0开始装一套 KubeVirt 1.2.1
故障排查 之 单点登录跳转失败(Ingress 相关)
故障现象
单点登录失败,但是其他接口正常
根因分析
问题要点是:单点登录失败,看代码是 request 和 response 的 RedirectUri 不一样导致的。
目前的南北流量架构为:
K8s 负载感知调度实践(koordinator & crane)
上篇 “深入了解 kube-scheduler” ,已经知道 kube-scheduler 的工作流程,以及如何实现自定义插件。koordinator 和 crane 都是基于Scheduler Framework 进行实现的 负载感知插件。本文不再赘述,感兴趣可以看上篇文章。
背景
原生 Kubernetes 调度器仅基于资源的 Request 进行调度,在生产环境资源的真实使用率和申请率往往相差巨大,造成资源浪费的同时也会造成节点的负载不均衡。