---
title: 介绍
description: "- Kubernetes"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Docker/kunpengcontainer_04_0001.html
sourcePath: /source/zh/kunpengcpfs/ecosystemEnable/Docker/kunpengcontainer_04_0001.html
indexId: 4366b41db43085d8fb03468624d82acc9f32e7b0568b0494682c68e753d4cec475
---
# 介绍

#### 简要介绍

- 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和鲲鹏下的混合部署，支持混部的功能点包括容器镜像创建、容器网络管理、容器存储管理。


考虑到用户实际使用方式，可以划分为两大场景：

- 扩容场景
  客户已有基于x86服务器组成的K8s+Docker集群，要求将新购入的鲲鹏服务器加入现有集群，通过K8s Master（x86服务器）对鲲鹏节点进行容器发放、网络管理和存储管理。

- 新建场景
  客户基于现有的x86服务器和鲲鹏服务器组建新的K8s集群，并选定了鲲鹏服务器作为K8s集群的Master，通过K8s Master，能够纳管鲲鹏、x86节点，并对其进行容器发放、网络管理和存储管理。


存储管理中存储类型分为Volume类型和PersistentVolume类型。鉴于Ceph的流行度，存储管理将使用K8s集群外部的Ceph存储进行Persistent Volume验证。

本文将描述x86和鲲鹏服务器上进行K8s+Docker混合部署的环境安装部署方法。


#### 建议的版本

建议的版本如下表所示。


**表1 建议的版本**

| 软件名称 | 版本 |
| --- | --- |
| 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
```
