docker安装
容器在计算形态上是一种轻量级的虚拟化技术,不同于传统虚拟化的内核级的Guest OS封装,容器服务是进程级的虚拟化形态封装,容器的启动与部署迅速,能够在应用层面根据资源需求快速的部署与调度,生命周期变化速度快。总的来说,云容器技术具有以下优点:简化部署、轻量级、多环境支持、成本低、快速启动、服务编排、易于迁移等。
明白了容器技术之后,大家可以把容器云理解为云上的容器技术服务。因为容器具备轻量化、低成本、灵活性、可靠性、可跨云平台支持的能力,各大云服务厂商也纷纷推出了自己的容器产品。比如,西部数码就是其中一员。西部数码容器云利用docker技术部署容器服务实现,可用于建站、运行应用程序、配置负载均衡、搭建集群等。用户能按需选配,可由小及大秒变为虚拟主机、云服务器、集群服务器等。
Docker介绍
Docker - Build, Ship, and Run Any App, Anywhere
Docker是一种Linux容器工具集,它是为“构建(Build)、交付(Ship)和运行(Run)”分布式应用而设计的。
Docker相当于把应用以及应用所依赖的环境完完整整地打成了一个包,这个包拿到哪里都能原生运行。因此可以在开发、测试、运维中保证环境的一致性。
Docker的本质:Docker=LXC(Namespace+CGroups)+Docker Images,即在Linux内核的Namespace[资源隔离]和CGroups[资源控制]技术的基础上通过镜像管理机制来实现轻量化设计。
Docker的基本概念
镜像
Docker 镜像就是一个只读的模板,可以把镜像理解成一个模子(模具),由模子(镜像)制作的成品(容器)都是一样的(除非在生成时加额外参数),修改成品(容器)本身并不会对模子(镜像)产生影响(除非将成品提交成一个模子),容器重建时,即由模子(镜像)重新制作成一个成品(容器),与其他由该模子制作成的成品并无区别。
容器
Docker 利用容器来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
Docker的优势
容器的快速轻量
容器的启动,停止和销毁都是以秒或毫秒为单位的,并且相比传统的虚拟化技术,使用容器在CPU、内存,网络IO等资源上的性能损耗都有同样水平甚至更优的表现。
一次构建,到处运行
当将容器固化成镜像后,就可以非常快速地加载到任何环境中部署运行。而构建出来的镜像打包了应用运行所需的程序、依赖和运行环境, 这是一个完整可用的应用集装箱,在任何环境下都能保证环境一致性
完整的生态链
容器技术并不是Docker首创,但是以往的容器实现只关注于如何运行,而Docker站在巨人的肩膀上进行整合和创新,特别是Docker镜像的设计,完美地解决了容器从构建、交付到运行,提供了完整的生态链支持。
Kubernetes介绍
Kubernetes是Google开源的容器集群管理系统。它构建Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的Micro-PaaS平台,即第三代PaaS的代表性项目。
Kubernetes的基本概念
Pod是若干个相关容器的组合,是一个逻辑概念,Pod包含的容器运行在同一个宿主机上,这些容器使用相同的网络命名空间、IP地址和端口,相互之间能通过localhost来发现和通信,共享一块存储卷空间。在Kubernetes中创建、调度和管理的最小单位是Pod。一个Pod一般只放一个业务容器和一个用于统一网络管理的网络容器。
Replication Controller是用来控制管理Pod副本(Replica,或者称实例),Replication Controller确保任何时候Kubernetes集群中有指定数量的Pod副本在运行,如果少于指定数量的Pod副本,Replication Controller会启动新的Pod副本,反之会杀死多余的以保证数量不变。另外Replication Controller是弹性伸缩、滚动升级的实现核心。
Service是真实应用服务的抽象,定义了Pod的逻辑集合和访问这个Pod集合的策略,Service将代理Pod对外表现为一个单一访问接口,外部不需要了解后端Pod如何运行,这给扩展或维护带来很大的好处,提供了一套简化的服务代理和发现机制。
Label是用于区分Pod、Service、Replication Controller的Key/Value键值对,实际上Kubernetes中的任意API对象都可以通过Label进行标识。每个API对象可以有多个Label,但是每个Label的Key只能对应一个Value。Label是Service和Replication Controller运行的基础,它们都通过Label来关联Pod,相比于强绑定模型,这是一种非常好的松耦合关系。
Node
Kubernets属于主从的分布式集群架构,Kubernets Node(简称为Node,早期版本叫做Minion)运行并管理容器。Node作为Kubernetes的操作单元,将用来分配给Pod(或者说容器)进行绑定,Pod最终运行在Node上,Node可以认为是Pod的宿主机。
kube-proxy:kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。
Docker:docker用于运行容器。
RKT:rkt运行容器,作为docker工具的替代方案。
supervisord:supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行。
fluentd:fluentd是一个守护进程,可提供cluster-level logging。
IPVS是基于TCP四层(IP+端口)的负载均衡软件。
IPVS会从TCPSYNC包开始为一个TCP连接所有的数据包,建立状态跟踪机制,保证一个TCP连接中所有的数据包能到同一个后端。所以IPVS是基于TCP状态机进行控制管理,只感知TCP头而不对TCP的payload进行查看。因此,对IPVS后端服务器集群还有一个假定,那就是所有后端都具有同样的应用层的服务功能,但是由于IPVS可以给后端设定权重,所以每个后端的服务的能力可以不同。
一个合理的负载均衡软件,应该能够尽量提高服务接入能力(ReqPS,Request Per Second),而将服务处理能力(ResPS,Response Per second)通过合理分配后端来达到最佳。
根据处理请求和响应数据包的模式的不同,IPVS具有如下4种工作模式:
①NAT模式
②DR(Direct Routing)模式
③TUN(IP Tunneling)模式
④FULLNAT模式
而根据响应数据包返回路径的不同,可以分为如下2种模式:
①双臂模式:请求、转发和返回在同一路径上,client和IPVS director、IPVS director和后端real server都是由请求和返回2个路径连接。
②三角模式:请求、转发和返回3个路径连接client、IPVS director和后端real server成为一个三角形。
一、Docker引擎的安装
(1)了解Docker引擎和系统架构。
(2)了解Docker引擎的部署和基本配置。
(3)掌握Docker引擎的基本使用。
节点规划
IP |
主机名 |
节点 |
172.16.51.35 |
master |
Docker节点 |
所有节点安装CentOS7.5_1804系统,并配置主机名和网卡
1.基础环境配置
将提供的压缩包Docker.tar.gz上传至/root目录并解压。
# tar -zxvf Docker.tar.gz
配置本地YUM源。
# cat /etc/yum.repod.s/local.repo
[kubernetes]
name=kubernetes
baseurl=file:///root/Docker
gpgcheck=0
enabled=1
Docker CE支持64位版本CentOS 7,并且要求内核版本不低于3.10。CentOS7.5_1804满足最低内核的要求,但由于内核版本比较低,部分功能(如overlay2存储层驱动)无法使用,并且部分功能可能不太稳定,建议升级内核。
# yum upgrade -y
配置防火墙及SELinux
# systemctl stop firewalld && systemctl disable firewalld
# iptables -t filter -F
# iptables -t filter -X
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# reboot
开启路由转发
[root@master ~]# cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@master ~]# modprobe br_netfilter
[root@master ~]# sysctl -p
2.Docker引擎安装
安装依赖包
yum-utils提供了yum-config-manager的依赖包,device-mapper-persistent-data和lvm2are需要devicemapper存储驱动。
[root@master ~]# yum install -y yum-utils device-mapper-persistent-data
安装docker-ce
随着Docker的不断流行与发展,Docker组织也开启了商业化之路,Docker从17.03版本之后分为CE(CommunityEdition)和EE(EnterpriseEdition)两个版本。
Docker EE专为企业的发展和IT团队建立,为企业提供最安全的容器平台,以应用为中心的平台,有专门的团队支持,可在经过认证的操作系统和云提供商中使用,并可运行来自DockerStore的经过认证的容器和插件。
Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
[root@master ~]# yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io -y
启动Docker并设置开机自启。
查看Docker的系统信息。