K8s基本
容器运用比较广泛,微服务、CI。
常见概念理解:容器(软件包)、Docker(容器管理平台)、K8s(容器集群管理、分布式容器管理平台)、Ingress
1. 组件
1.0 k8s网络
1.0.1 k8s网络通讯问题
名称 | 通讯 |
---|---|
容器间通信 | 即同一个Pod内多个容器间通信,通常使用loopback来实现。 |
Pod间通信 | K8s要求,Pod和Pod之间通信必须使用Pod-IP直接访问另一个Pod-IP, 它们关联在同一个Docker0网桥。 |
Pod与Service通信 | 即PodIP去访问ClusterIP,当然,clusterIP实际上是IPVS 或 iptables规则的虚拟IP, 是没有TCP/IP协议栈支持的。但不影响Pod访问它 |
Service与集群外部 Client的通信 |
K8s中Pod提供的服务必须能被互联网上的用户所访问到 |
:K8s中提供的一种通用网络标准规范,因为k8s本身不提供网络解决方案。(kube-router、flannel、Calico、Docker原生的Overlay)
flannel:为Pod配置网络的(如:添加网络,配置网络,激活网络等 守护进程。
1.0.2 Pod
// K8s Pod的网络创建流程
/*
1.每个Pod除了创建时指定的容器外,都有一个kubelet启动时指定的基础容器
2.kubelet创建基础容器,生成network namespace
3.kubelet调用网络CNI driver,由它根据配置调用具体的CNI 插件(eg:calico,flannel)
4.CNI插件给基础容器配置网络
5.Pod中其他的容器共享使用基础容器的网络
*/
1.1 K8s 优势
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
1.2 K8s特点
> Kubernetes 特点:
- 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
- 可扩展: 模块化, 插件化, 可挂载, 可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。
1.3 K8s 组件介绍
名称 | 功能 | 所属 |
---|---|---|
kubelet | kubelet是主要的节点代理, 它会监视已分配给节点的pod 安装Pod所需的volume、 下载Pod所需的Secret 运行docker 定时执行容器健康检查 |
Master |
apiserver | 暴露Kubernetes API 任何资源请求/调用都是通过apiserver来的 |
Master |
scheduler | 监视新创建没有分配到Node的Pod, 为Pod选择一个Node。 |
Master |
controller-manager | 运行管理控制器,它们是 集群中处理常规任务的后台线程 Node、Replication、Endpoint、 Service Account、Token 控制器。 |
Master |
DNS | 群集 DNS是一个DNS服务器, 能够为 Kubernetes services提供 DNS记录 |
Basic |
ETCD | Kubernetes提供默认的存储系统, 保存所有集群数据(配置中心) 使用时需要为etcd数据提供备份计划 |
Basic |
Dashboard | 容器资源监控提供一个UI浏览监控数据 | Basic |
kube-proxy | 通过在主机上维护网络规则 并执行连接转发来实现Kubernetes服务抽象 |
Basic |
Ingress | 路由转发 | Basic |