前言 

团队成员有DBA、运维、Python开发,由于需要跨部门向公司私有云团队申请虚拟机, 此时我在思考能否在现有已申请的虚拟机之上,再进行更加细粒度的资源隔离和划分,让本团队的成员使用, 也就是在私有云上构建docker容器云,于是研究下Kubernetes,看一下能否找到一些突破点?Kubernetes (库伯耐踢死),省略了Kubernetes中间8个字母,简称K8S;

 

什么是Kubernets?

kubernets是一种容器编排的解决方案;(The solution to do container orchestrate)

什么是容器技术?(what's the container technology?)

很久以前app上线流程是:

选择1台物理机(First you should choice a phycisal server)然后在这个物理机上部署您的app(second intalling your application in the phycisal server);

缺点:

部署慢

效率低

很难迁移

基于Kubernetes构建企业容器云

 

 虚拟化技术出现之后(virtualization)

 基于Kubernetes构建企业容器云

优势 The advantage of Virtualization 

Resourse pool like CPU Memory(CPU、内存资源可以动态分配)

Easy to extension: Add more VMs or phycial mechine (便于扩展)

 

缺点 The disadvantage of virtualization

每个虚拟机都需要安装自己的操作系统 Each pyhsical server requires one OS

 

Container Technology

如果我开发了一个非常成熟的运维平台,我想把源码买给个世界各地的运维团队;

我的要求:1次打包后能运行在世界各地;

打包(build/packet)

运输(ship)

让它运行在世界各地(run)

 基于Kubernetes构建企业容器云

容器就像装满了各种杂物的集装箱,方便各种运输工具运输到世界各地 

Lowser:熟练使用各种工具并可以解决领导提出的问题

Senior:深谙各种工具的设计理念

First rate: 各种理念模型在大脑中形成,在某时某地 创造出更好的工具; 

 

2.容器技术和虚拟化技术的区别?

虚拟化技术隔离了操作系统层,而容器技术更加彻底它隔离了应用层;

基于Kubernetes构建企业容器云

 

3.容器技术和虚拟化技术的联系?

通常情况下我们线上docker环境是这样的

在虚拟机上搭建docker进行

基于Kubernetes构建企业容器云

4.什么是容器编排技术?container orchestration

容器编排就是在docker容器之上再封装1层(Container Orchestration layer 横跨了 docker层 和 全部主机节点);

这层的功能是把我们的货物(app)智能调度到1个最佳的集装箱上(docker),并集中管理这些集装箱(docker)(动态创建和销毁)

 基于Kubernetes构建企业容器云基于Kubernetes构建企业容器云

 

5.编排技术实现工具

Docker Swarm

Mesos

Kubernetes(最火)

Kubernetes诞生于谷歌公司的1个Brog项目

在2015年7月 released 1.0版本之后把它贡献给了 Cloud Native Computing Foundtion(CFCF)基金会

简称 K8S

 

Kuberbetes的架构

Kubernetes是一款容器编排工具/容器管理(不仅仅支持docker)管理平台;

Kubernetes的设计采用了传统的分布式架构:由于Master节点和Node节点共同组成了Kubernetes集群;

我们可以通过调用其API or CLI(Comand Iine Interface)命令行kubect的方式和Kubernetes的Master节点进行交互;

基于Kubernetes构建企业容器云

 

1.Kubernetes Master节点

Master节点相当于K8S的大脑

Kubectl:控制Kubernetes的命令行工具

API Server:基于REST api的对外管理接口

Scheduler:调度任务(创建1组容器)到指定Node上执行

Controler Manager:控制管理器Controler-manager里面有1个复制控制器(如果客户端要创建3个容器,我会检查node中创建的是不是3个?)

etcd:etcd集群存储Kubernetes集群中所有的数据 

基于Kubernetes构建企业容器云

 

2.Node节点组件

node节点就是干活,一般来说我们需要部署1个APP,用户发起创建容器操作之后master节点会智能调度到node节点上

Kubelet:相当于master装在各个Node节点上的1个agent(管理Pod以及容器、镜像、Volum等,实现对节点进行管理)

Kube-porxy:为容器中的web服务,提供网络代理和负载均衡功能,支持Iptables和LVS 

Docker Engin:负责节点容器的真正创建、管理

 

3.Kubernetes工作流程

假设我现在要使用Kubectl命令行创建1组容器出来,大致都会经历那些流程呢?

A.Kubectl把命令提交到API Server

B.Secheduler获取任务,算出最佳的node

C.API Server通知最佳node上的代理(Kublet)

D.Kublet调用docker-engin进行实际的容器创建工作

 

实验环境准备

本文主要介绍使用Centos7 安装 Kubernetes 1.10.1版本

 基于Kubernetes构建企业容器云

 

1.设置VMware Workstation的为NAT模式

基于Kubernetes构建企业容器云

基于Kubernetes构建企业容器云

 

 2.修改网卡名称并设置静态IP地址

[root@remote network-scripts]# cd /etc/sysconfig/network-scripts/
[root@remote network-scripts]# mv ifcfg-ems33 ifcfg-eth0
重命名该ifcfg配置文件

相关文章: