Docker2容器编排工具k8s
Posted 码农编程录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker2容器编排工具k8s相关的知识,希望对你有一定的参考价值。
文章目录
1.整个流程:node客户端中kubelet进程是直接和api server进行通信,kube-proxy进程是创建虚拟网卡,docker进程在实际调度机器时,机器上必须安装docker才能进行容器调度。
master下发指令是集群之间的语言,用户使用一些输入指令对其操作,api server(进程)
会监听用户的指令进行操作,这个指令分为三种形式:第一种
通过kubectl指令直接下发,第二种
通过htttp接口将指令下发到node上进行容器的调度,第三种
webui图形化界面填写配置或拖拽控件进行容器节点调度。
用户通过如上三种指令方式中任意一种,下发指令或配置文件到api server,api server只是一个传达
作用。还要通过scheduler和controller-manager两个进行协调调度,这两个协调调度还要通过ETCD元数据支持,最后生成一个调度指令交给api server
。api server最终将指令下发传达
到这些节点,这些节点进行相应容器的创建,销毁或扩张等一些操作,状态更新完后实时汇报状态的更新到api server,api server再将状态记录到ETCD里,这就是大概流程。
ETCD进程
:是kv数据库用来存储元数据信息,如各个节点状态,像zookeeper。
controller-manager进程
:各种资源自动化的控制中心。
scheduler进程
:调度实施者。
2.基础概念:3个
pause也是docker容器,k8s中不能直接调度docker容器,需要有一个传达指令的人就是pause,pause和docker一起创建,
如下当前集群下没有任何pod资源,pod创建和直接创建docker是一样的,这种创建方式主要有一个问题:如下很多连接连服务器,服务器承受不了,起了多台机器即容器,有容器挂了就通知运维。
如上方式不智能,k8s用deployment(用kubectl run指令创建)实现自动化运维。如下d1是deployment名字,--image
指定运行的镜像,httpd镜像会启一个apache服务器,指定alpine版本。get查看资源是否启动成功。最终以docker形式在node节点上启动。
现在有个新问题,刚创建好的两个http容器没有做端口映射,如下现在要做对外暴露一个接口,做负载均衡。这就用到service。kube-proxy进程会在整个集群层面抽象出一张大的虚拟的交换机(如下紫色矩形),可创建ip,三个橘色pod统称为一个service。
3.service之间如何互相通信:docker-compose能实现多个dockers之间通信,k8s中不再以docker为单位,以pod为单位
最简单的是通过ip进行通信,但是和docker-compose一样,ip是不可能记住的,也不可能每次都去配置ip,那该如何进行通信呢?在k8s中默认提供一个dns服务,将d1对应ip,所以只需要输入d1就能解析到ip。服务1:d1 httpd镜像
。服务2:d2 nginx镜像
。
如上是在d2容器中,如下d1是dns,解决了服务间相互调用问题。
4.service的虚拟ip到公网ip:ingress代理
以上是关于Docker2容器编排工具k8s的主要内容,如果未能解决你的问题,请参考以下文章