Kubernetes中的基本概念(一)

分类: AUTOMATION 发布于:

容器的概念,简单理解就是把操作系统打包到“库”里。

k8s是什么

  • 容器平台

  • 微服务平台

  • 可移植云平台

不是什么?

  • 不是paas

  • 不是交付(CI&&CD)工具

  • 不提供应用级别的服务

  • 不是监控、日志工具

  • 配置过程不强制使用某种语言

  • 不使用机器相关的任何工具。

master上的主要组件

  • kube-apiserver

作为前端工具(api),为使用k8s提供交互工具。

  • etcd

整个平台共享上下文的键值数据库

  • kube-scheduler

集群资源监控和调度器。监视每个node的利用率。

  • kube-controller-manager

控制器管理器, 包括:

Node controller, 添加、移除node

Replication controller, 复制控制器。 维护固定数量的pods

Endpoints controller, 端控制器。 用来映射service和pods之间的关联。

Service account & token controller, 账户和token服务

  • cloud-controller-manager(作为provider)

node 上的组件

  • kubelet(每个node上的“监工”)

运行在每个node上的agent。确保pods正常运行。

  • kube-proxy(网络代理,每个node上的”网关“角色)

负责维护网络规则和链接转发。

插件

  • DNS

为集群中的每个service提供一个DNS Name。

假设存在一个叫bar的命名空间, 里面存在一个foo的service。 在bar空间内的pod可以直接查询foo。

比如, mysql的service名称为db01, 在java application的pod中如果需要链接db的服务,可以直接使用db01作为host name。

在docker-compose中,这种dns查询服务使用本机的/etc/host来做(系统调用)。

在不同的命名空间中,使用service时,需要加上namespace名称。比如 bar.foo. db.mysql 等。

k8s为集群中的每个服务提供了2中形式的域名格式:

A记录

这种形式简单直接: 服务名.命名空间.svc.cluster.local

SRV记录

这种形式的记录比A记录多了端口和协议,一般用作instance domain。

格式为 端口.协议.服务名.svc.cluster.local