Kubernetes 是一套可以自动部署和管理容器的系统。本文介绍其安装以及基于 Docker 容器的配置。

0. 事前准备

Kubernetes 使用的是主从框架 (master-slave architecture),一个集群需包含至少 1 个master和 1 个slave。本文采取 1 个 master 和 2 个 slave 作为范例。范例操作系统为 Ubuntu 18.04 x64.

他们的 IP 地址如下。

10.0.0.1 master
10.0.0.2 worker1
10.0.0.3 worker2

以下设定步骤在 3 台机上都执行。

0.1. 编辑 /etc/hosts 文件,加入上述地址

0.2. 安装 Docker

此处摘取 Docker 官方安装教程

此时还需要配置一个用于测试的 Docker 镜像,如 Python SimpleHTTPServer,Flask,或 Docker HelloWorld

0.3. 安装 Kubernetes

1. 配置 Master

在 Master 机上执行以下步骤。

1.1. 选取网络模型

Kubenetes 支持多种网络模型。需先根据自己需求选择一种,因为在初始化 Master 的时候需要输入相关参数。

本文选用 Calico,没有特别的原因,只因为它是 Kubenetes 第一个选项。

1.2. 初始化 Master

以上命令执行成功会出现类似下面的提示,需要记录下 join 的参数,以便 slave 加入集群。

1.3. 安装网络模型

同样,这个和 1.1 的选择相关

1.4. 复制配置文件供 kubectl 使用

Kubectl 是用来管理 Kubernetes 集群的命令行软件。

执行以下指令后即可使用。

2. 配置 Slave

在每个 Slave 节点执行以下步骤

2.1. 加入集群

使用步骤 1.2 输出的 join 命令加入集群。

3. 验证集群

在 Master 上执行以下指令验证集群节点

期待输出

4. 部署 Docker 容器以及开启服务

Kubernets 的部署 (Deployment)是用于设定网络模型以及 Docker 容器份数。服务 (Services) 用于暴露容器给外部,如让外部访问容器的网络服务。

Kubernets 的配置文件使用 YAML 格式。

4.1.1. 部署范例

假设该文件名为 urlshortener-deployment.yaml

其中,replicas: 指定部署的份数,containerPort: 指定容器的访问端口。image: 指定 Docker 镜像,如果该 Docker 镜像是自定义,需使用 imagePullPolicy: Never

4.1.2. 应用该配置文件

4.1.3. 验证部署情况

期望输出:

当然也可以在 Slave 节点中执行以下指令来看容器部署情况

4.2.1. 服务范例

假设文件为 urlshortener-service.yaml

范例创建一个负载均衡服务,其中,selector: 选择应用程序,名字需与 4.1.1 保持一致。port: 为外部端口,targetPort: 为容器端口。由于本文没有使用第三方负载均衡器(如aws, azure等),需使用 externalIPs: 指定提供服务的 IP 地址,此处选用 Master 的 IP。

4.2.2. 应用该配置文件

4.2.3. 验证部署情况

期望输出:

此时在外部访问 10.0.0.1:5000 即可访问容器的相应网络服务。

后记

教程到这里就结束了,成功搭建了有 1 个 master 和 2 个 slave 的集群,并且提供了 Deployment 和 Service 的范例,更多内容需要自行发掘。

kubernetes 可以很方便的扩容和管理容器,以下记录一些常用命令。

   

已有 1 條評論

  1. 鹿小草 4 年前 (2020-05-11)
    @

    好的