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的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes编排工具

Kubernetes编排工具

Kubernetes:K8s介绍

华为云大咖带你玩转云原生基础设施之K8s

华为云大咖带你玩转云原生基础设施之K8s

云原生技术容器编排学习(第四集)