介绍
简要介绍
- Kubernetes
Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(Containerized)应用程序的开源系统。它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。它支持一系列容器工具,包括Docker等。Kubernetes在设计结构上定义了一系列的构建模块,其目的是为了提供一个可以共同提供部署、维护和扩展应用程序的机制。组成Kubernetes的组件设计概念为松耦合和可扩展的,这样可以使之满足多种不同的工作负载。可扩展性在很大程度上由Kubernetes API提供,此API主要被作为扩展的内部组件以及Kubernetes上运行的容器来使用。
- Docker
Docker是一个开源的应用容器引擎,Docker设想交付运行环境如同海运,操作系统如同一个货轮,每一个在操作系统基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的App),这也就是基于Docker的PaaS产品的原型。
开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。
- Ceph
Ceph是一个可靠的、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大部分,分别是对象存储、块设备存储和文件系统服务。Ceph提供统一的横向扩展存储,带有自我修复和智能预测故障的功能,已经成为软件定义存储的事实上的标准之一。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件去定义合适的存储系统。
- 混合部署
混合部署属于鲲鹏芯片生态使能的功能性需求:要求实现K8s+Docker在x86和TaiShan下的混合部署,支持混部的功能点包括容器镜像创建、容器网络管理、容器存储管理。
考虑到用户实际使用方式,可以划分为两大场景:
- 扩容场景
客户已有基于x86服务器组成的K8s+Docker集群,要求将新购入的TaiShan服务器加入现有集群,通过K8s Master(x86服务器)对TaiShan节点进行容器发放、网络管理和存储管理。
- 新建场景
客户基于现有的x86服务器和TaiShan服务器组建新的K8s集群,并选定了TaiShan服务器作为K8s集群的Master,通过K8s Master,能够纳管TaiShan、x86节点,并对其进行容器发放、网络管理和存储管理。
存储管理中存储类型分为Volume类型和PersistentVolume类型。鉴于Ceph的流行度,存储管理将使用K8s集群外部的Ceph存储进行Persistent Volume验证。
本文将描述x86和TaiShan服务器上进行K8s+Docker混合部署的环境安装部署方法。
建议的版本
建议的版本如下表所示。
软件名称 |
版本 |
---|---|
K8s |
v1.15.1 |
Docker |
18.09 |
Ceph |
14.2.1 |
约束和限制
由于业务容器镜像的体系结构兼容性问题(即不是所有容器镜像都同时支持Arm64体系结构和x86体系结构),K8s发放pod时需指定服务器的体系结构。这样可以规避在服务器故障的情况下,pod漂移到其他体系结构的服务器带来的潜在风险。
如下例所示,可利用K8s现有nodeSelector机制进行指定。
apiVersion: v1 kind: ReplicationController metadata: name: webapp spec: replicas: 2 template: metadata: name: webapp labels: app: webapp annotations: cni: "flannel" spec: containers: - name: webapp image: tomcat ports: - containerPort: 8080 nodeSelector: kubernetes.io/arch: arm64