我的专题Docker容器Awesome Docker

Kubernetes—简介以及部署方案

2017-09-09  本文已影响188人  Johnnian

本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/30,欢迎留言。

谈到容器化管理解决方案,Kubernetes 目前应该是比较成熟的,有比较多的落地实施案例。

一、Kubernetes 简介

Kubernetes 是容器自动部署、扩展与管理的开源平台,具体的介绍,可以参考链接: What is Kubernetes?

目前,Kubernetes有比较多的落地实施案例,例如 京东、SAE、网宿科技、时速云、灵雀云、网易蜂巢等等。

参考链接:

二、Kubernetes基本概念

Kubernetes 集群的节点,按照功能,可以划分为 Master Node(控制集群),Worker Node(实际工作)。

Master Node上运行的组件: Master Components + Node components
Worker Node上运行的组件: Node components

2.1 Components(组件)

Master Components

Node Components

Master node 组件结构

master-node

Worker node 组件结构

worker-node

参考链接:

2.2 API Objects(API 对象)

Kubernetes使用 持久化的Objects对象来展现集群的状态,这些对象存储在 Kubernetes的 Etcd KeyValue存储中。

使用 kubectl命令行客户端来操作 API 对象。

API Object的文档说明,请看这里

通过创建 .yaml格式的文件,使用kubectl命令行创建 API对象, .yaml文件的格式大致是:


apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

可以分为:

对于API对象的类型,划分:

2.3 Controller(控制器)

不同类型的控制器,管理Pod的策略是不同的,Controller主要分为下面几种类型:

参考链接:

2.4 Service(服务)

Service 可以说是连接 Pods 与外界的桥梁,Service可以建立起 内部 Pod 容器的端口 <--> 外部端口 的映射关系,通过Visual IP,客户端直接连接Service的IP、端口,而无需关注后端的Pods IP地址的变化,这个概念有点儿像微服务。

Service 有下面几种类型:

每个Node 都会运行 kube-proxy 组件,kube-proxy 组件为Service创建虚拟IP(Visual IP),下面是整个网络代理的拓扑图:

Kubernetes V1.2版本前,网络代理的拓扑图:


qq20170905-152148 2x

Kubernetes V1.2版本后,网络代理的拓扑图:


qq20170905-152210 2x

详细说明,参考:Service

2.5 网络拓扑

Kubernetes 高可用集群拓扑图

default

三、常见的部署方案以及示例

目前市面上有很多部署和实施Kubernete的解决方案,点击这里查看, 总的来说,大致分为下面的几种:

3.1、本地部署-minikube

minikube安装倒是挺简单的,就是下载镜像的时候会有问题,可以考虑:使用阿里云镜像,或者用Docker Hub 作为中转。

部署示例

操作说明

3.2 集群部署-kubeadm

参考链接

上一篇 下一篇

猜你喜欢

热点阅读