Kubernetes 平台的生态系统介绍

Posted 梯度科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes 平台的生态系统介绍相关的知识,希望对你有一定的参考价值。

Kubernetes作为一个容器云管理平台,与底层的基础架构、企业周边的公共服务形成了一个完备的生态系统。如图1所示,一个完备的Kubernetes系统在设计和实现时,需要考虑多层面的高可用性问题。

图1  Kubernetes 平台的生态系统

 

因此,解决系统性的高可用问题,需从下到上立足各个层面,找出每层的最优解决方案,最终串联组成最优的整体解决方案。

1.基础架构管理

数据中心规划,为了支持高可用的生产应用,需要在多地部署多个数据中心。每个数据中心需要划分成具有独立供电、制冷、网络设备的高可用区。每个可用区管理独立的硬件资产,包括机架、计算节点、存储、防火墙等硬件设备。

2.主机管理

在主机参数的规划时应该考虑不同版本的系统内核、安装工具集、主机网络规划等,这些参数会极大影响服务的稳定性。

3.集群管理

在集群设计时,应思考和规划如何设定单个集群规模、如何根据地域划分集群、如何规划集群的网络、如何自动化搭建集群等问题,以保证主机通过控制平面向用户提供高可用的云服务。

4.企业公共服务

将企业的各类应用整合到Kubernetes的生态系统中。

5.Kubernetes公共服务

Kubernetes 是平台,是微服务的集大成者。简单的部署和使用方案可帮助用户提升应用的高可用性和用户体验。

6.集群运维

集群运维的核心内容是对平台的各个组件和服务进行监控、故障排除和版本升级等,确保业务所需的所有组件能够按照预期工作。

7.应用开发

集群运维是辅助,应用开发才是输出。Kubernetes作为微服务平台,其价值及核心竞争力就是为开发人员提供了统一的应用接入规范。

Kubernetes生态系统中涵盖的服务、技术、工具的多样化和易用性,很大程度上支持了Kubernetes容器云平台在政企业务的落地。

01-集群环境及组件介绍

介绍

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用
  • 我们的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。

Kubernetes 特点

  • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。

集群环境及组件介绍

集群组件和版本

  • Kubernetes 1.6.2
  • Docker 1.12.6
  • Etcd 3.1.5
  • Flanneld 0.7.1 vxlan 网络
  • TLS 认证通信 (所有组件,如 etcd、kubernetes master 和 node)
  • RBAC 授权
  • kubelet TLS BootStrapping
  • kubedns、dashboard、heapster (influxdb、grafana)、EFK (elasticsearch、fluentd、kibana) 插件
  • 私有 docker registry,使用 ceph rgw 后端存储,TLS + HTTP Basic 认证

集群机器

  • 192.168.1.121(etcd/kube-apiserver/kube-controller/kube-scheduler/flanneld)
  • 192.168.1.122(etcd/kubelet/kebe-proxy/flanneld)
  • 192.168.1.123(etcd/kubelet/kebe-proxy/flanneld)

  • etcd集群、kubernetes master 集群使用192.168.1.121
  • kubernetes node 使用192.168.1.122/192.168.1.123

集群环境变量

后续的部署步骤将使用下面定义的变量值,根据自己的机器、网络情况设定:

# TLS Bootstrapping 使用的 Token,可以使用命令 
head -c 16 /dev/urandom | od -An -t x | tr -d ‘ ‘ 生成
BOOTSTRAP_TOKEN="41f7e4ba8b7be874fcff18bf5cf41a7c"

# 建议用 未用的网段 来定义服务网段和 Pod 网段

# 服务网段 (Service CIDR),部署前路由不可达,部署后集群内使用 IP:Port 可达
SERVICE_CIDR="10.254.0.0/16"

# POD 网段 (Cluster CIDR),部署前路由不可达,**部署后**路由可达 (flanneld 保证)
CLUSTER_CIDR="172.30.0.0/16"

# 服务端口范围 (NodePort Range)
NODE_PORT_RANGE="8400-9000"

# etcd 集群服务地址列表
ETCD_ENDPOINTS="https://192.168.1.121:2379,https://192.168.1.122:2379,https://192.168.1.121:2379"

# flanneld 网络配置前缀
FLANNEL_ETCD_PREFIX="/kubernetes/network"

# kubernetes 服务 IP (预分配,一般是 SERVICE_CIDR 中第一个IP)
CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
CLUSTER_DNS_SVC_IP="10.254.0.2"

# 集群 DNS 域名
CLUSTER_DNS_DOMAIN="cluster.local."

以上是关于Kubernetes 平台的生态系统介绍的主要内容,如果未能解决你的问题,请参考以下文章

kubernetes(k8s)介绍

K8S专栏什么是Kubernetes

01-集群环境及组件介绍

云原生之kubernetes实战在k8s环境下部署KubeGems云管理平台

云原生之kubernetes实战在k8s环境下部署KubeGems云管理平台

云原生DevOps:Kubernetes编排工具