【开源时代】Docker与Kubernetes(K8S)【基础篇】
1、Docker和K8S的来源和定义(如何理解Docker和K8S)2、Docker相关组件3、Docker简单部署4、K8S的组件5、K8S集群部署架构
目录
三、为什么使用Kubernetes?(Kubernetes的优势)
Docker
一、什么是docker
1、docker是一款基于go语言开发的开源容器技术。
二、docker的优势
LXC:Linux容器
1、快速(启动和停止可以在秒级内实现)
2、开源(EE版为企业版、CE版为社区版)
3、轻量化(对系统资源消耗小,一个容器最小可达到几KB大小,一台主机可运行上千台容器)
4、部署灵活、管理高效、迁移方便。
三、虚拟化与docker
传统的虚拟化是在硬件上面部署Host OS,然后再在Host OS上部署VMM,然后才能部署相应的虚拟机,而各自的虚拟机又有独属于自己的Guest OS,这样极大的占用了资源,而docker则是直接在Host os上部署docker,相比于传统的虚拟化,docker没有部署VMM,极大的节约了空间,减少了开销,而且,docker屏蔽了底层操作系统的差距,在运行速度上更胜一筹。
四、虚拟机与docker的区别
容器与虚拟机相比,容器启动速度更快,能达到秒级启动,而虚拟机的话他还要加载配置文件,一般要十几秒到几分钟,还有就是轻量化,一个容器最小可以达到几KB几MB,而虚拟机一般都是几百兆几个G,容器能做到快速迁移,因为他很小,而虚拟机文件一般比较大,所以在迁移过程中比较缓慢,总的来说:docker比虚拟机更轻量化、管理更方便,部署更灵活。
五、Docker入门操作
1、下载(拉取镜像)
#docker pull 镜像名称[tag] ----->如果不指定tag,则默认选择最新的版本
例#docker pull ubuntu:18.08
2、利用该镜像构建一个容器
#docker run -itd --name ceshi centos:centos7 ------>-it:交互式运行一个容器,-d:后台运行,--name:为容器命名,-v:挂载数据卷,-p:映射端口
3、查看镜像信息
#docker image ls #docker images ---->可查看本地已有的镜像
4、查看镜像的详细信息
#docker inspect 镜像id或者镜像名
5、搜寻镜像(搜索远端仓库中的镜像 )
#docker search 镜像名称
6、删除镜像
#docker rmi 镜像名或id 加-f强制删除
7、查看本机上运行的所有容器进程
#docker ps -a 不加-a参数仅显示当前正在运行的进程
8、删除容器
#docker rm 容器名或者id 加-f强制删除
9、基于已有镜像的容器创建
#docker commit 容器名或者id 加-p参数提交时暂停容器运行
10、创建容器
#docker create -it 镜像 -it交互式运行,注意,docker run是创建并运行,而docker create创建的新容器处于停止状态。
dockers run 等价于docker create + docker start
11、终止容器运行
#docker stop 容器名
#docker kill 进程号
12、进入容器
#docker exec 容器名或者id
13、网络模式:
bridge:桥接 docker (默认)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通!
14、自定义网络可以解决 容器之间不能通过name之间访问的问题。
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
--dridge bridge 网络模式为 桥接模式
--subnet 192.168.0.0/16 设置子网
--gateway 192.168.0.1 设置网关
15、查看新建网络:
docker network ls
创建一个带自定义网络的容器:
docker network inspect 网卡名
docker run -d -P --name tomcat-net-01 --net mynet tomcat
docker run -d -P --name tomcat-net-02 --net mynet tomcat
K8S(Kubernetes)
一、什么是Kubernetes?
Kubernetes是一套由谷歌基于GO语言开发的自动化容器运维的开源平台。这些运维操作包括部署、调度和节点集群间的扩容。
二、Kubernetes与docker的区别
我们可以将docker看做是Kubernetes内部的一个组件,而Kubernetes则是管理docker容器的工具。如果把docker的容器比作是飞机,那么Kubernetes就是机场。
三、为什么使用Kubernetes?(Kubernetes的优势)
1、它能够快速、精准的部署应用程序
2、弹性伸缩
3、迁移方便
4、扩展灵活
5、具有自动化修复功能
四、Kubernetes的模块及其组件功能
Kubernetes可分为两大部分,分别为Master部分和Node部分;其中Master部分的组件有K8S API Server、K8S Controller Manager和K8S Scheduler(K8S调度器)
Node部分的组件有etcd、kubelet、kube-poxy、pod和docker引擎等
1、Kubernetes API Server
Kubernetes API服务器提供了各类资源对象的增、删、改、查接口,是整个系统的数据总线和数据中心;同时还提供了集群管理的接口,包括认证授权、
数据校验和集群状态变更,是资源配额控制的入口。
2、Kubernetes controller manager
Kubernetes控制器管理器是集群内的控制管理中心,管理集群内的node节点、pod副本、服务站点、资源配额等,当某个node意外宕机时controller manager
会及时发现并执行自动化修复流程,确保集群始终处于正常工作状态。
3、Kubernetes scheduler
Kubernetes调度器根据特定的算法把pod调度到指定的工作节点node上。
4、etcd
用于保存集群所有的网络配置和对象的状态信息。
5、kubelet
每个node节点上都会启动的进程,用来处理master节点下发的任务,定期向master汇报节点资源的使用情况。
6、kube-proxy
运行在所有node节点上,监听每个节点上Kubernetes API中定义的服务变化情况,并创建路由规则来进行服务负载均衡。
7、pod
pod是容器最基本的操作单元,,一个pod中包含一个或多个紧密相关的容器,每一个pod中运行着一个特殊的pause容器,其它为业务容器,这些业务容器共享
pause容器的网络栈和挂载卷以及IP地址。
8、docker引擎
负责容器的创建和管理
更多推荐
所有评论(0)