目录
前言
OpenStack是管理虚拟机的,底层依靠虚拟化技术;kubernetes是管理容器的,底层也是依靠虚拟化技术,原理其实差不多,可以理解容器就是虚拟化的升级。
一、Kubernetes架构
一个基础的Kubernetes集群包含一个master节点和多个node节点。每个节点可以是一台物理机,也可以是一台虚拟机。
- Master节点提供的集群控制,对集群做出全局性决策,例如调度等。通常在master节点上不运行用户容器
- 节点组件运行在每一个node节点上,维护运行的pod并提供Kubernetes运行时环境
1.1Master节点
-
Kube-apierver:Kube-apierver对外暴露了Kubernetes API。它是Kubernetes的前端控制层。它被设计为水平扩展,即可通过更多实例来缩放。
-
etcd:etcd用于 Kubernetes的后端存储。所有集群数据都存储在此处,始终为 Kubernetes集群的etcd数据提供备份计划
-
kube-controller-manager:运行控制器,他们是处理集群中常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,他们都被编译成独立的可执行文件,并在单个进程中运行。
-
kube-scheduler:监视没有分配节点的新创建的POD,选择一个节点供他们运行
1.2 Node节点
- kube-proxy:kube-proxy用于管理service的访问入口,包括集群内pod到service的访问和集群外访问service
- kubelet:kubelet是在集群内每一个节点中运行的一个代理,用于保证pod的运行
- 容器引擎:通常使用docker来运行容器,也可以使用rkt等作为替代方案
1.3 Add-ons
除了上述组件外,Kubernetes使用中通常需要一些额外的组件实现特定的功能,常用的Add-ons包括:
- Core-dns:为整个集群提供DNS服务
- Ingress Controller:为server提供外网访问入口
- Dashboard:提供图形化管理界面
- Heapster:提供集群资源监控
- Flannel:为Kubernetes提供方木an的网络规划服务
注意:考试的时候Ingress Controller可能没装,需要自己安装
1.3 Kubeadm
Kubeadm是社区主推的快速创建Kubernetes集群工具。
kubeadm通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群,而不是之前的节点准备工作。同样的,诸如安装各种各样值得拥有的插件,例如Kubernetes Dashboard、监控解决方案以及特定云提供商的插件,这些都不在它负责的范围。
Master节点:Kubeadm init,快速初始化安装主节点组件
Node节点:Kubeadm join,将从节点加入集群
二、相关命令
2.1 查看组件运行状态
使用systemctl status命令查看组件运行状态
- Docker
- Kubelet
2.2 kubeadm容器化组件
kubeadm为了实现部署的便携性,将一些组件封装到了Pod中
- Master节点
Master节点的相关组件都存放在kube-system这个命名空间中,这么做的优点就是哪个组件坏了可以自修复。
- Node节点
查看node节点所包含的系统pod
三、总结
Kubernetes的架构原理性内容我在这篇博客K8S架构中已经写过,这边就只简单介绍一些相关组件,大家可以给专栏点个专注,后面将持续更新CKA的考试大纲相关内容。
写过,这边就只简单介绍一些相关组件,大家可以给专栏点个专注,后面将持续更新CKA的考试大纲相关内容。