×

【2022争霸赛*干货满满】容器技术Docker&K8s知识以及案例分享
  

山东_朱文鑫 209389人觉得有帮助

{{ttag.title}}
本帖最后由 山东_朱文鑫 于 2022-10-20 21:27 编辑

大家好,我是大白,最可怕的敌人,就是没有坚强的信念。优质的帖子也在尽力中提供,也希望各位道友多多支持,让我引劫渡劫成功哈哈哈。

大白队口号就是:砸锅卖铁我最行,拼死拼活就要赢!!!!!!!!!!!!

今天不分享配置方案案例,今天分享的是容器技术知识以及案例分享,在如今越来越火的“Docker”技术,很多人在听见过或者听说过别人谈论这个技术,但是还是有些小伙伴并不清楚这到底是个什么东西,为什么应用的越来越多,今天我就应各位小伙伴的私信结合案例分享一下容器技术。

容器的背景:

       2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker

       2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。

       不开则已,一开惊人。越来越多的IT工程师发现了Docker的优点,然后蜂拥而至,加入Docker开源社区。

       在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。

什么是容器:

       容器技术是英文单词Linux Container的汉译。Linux Container两个单词,第一个Linux表明了容器技术一般是应用在Linux操作系统上面;Container意思有:容器,集装箱,货柜的意思,为了方便理解,这里采用集装箱的汉译介绍容器的概念。


Docker技术的三大核心概念:

       镜像(Image):Docker镜像,是一个特殊的文件系统。它除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(例如环境变量)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

       容器(Container):用镜像搭建好的系统就是容器

       仓库(Repository):负责对Docker镜像进行管理的

       镜像(Image):Docker镜像里包含了已打包的应用程序及其所依赖的环境。它包含应用程序可用的文件系统和其他元数据,如镜像运行时的可执行文件路径。

       容器(Container):Docker容器通常是一个Linux容器,它基于Docker镜像被创建。一个运行中的容器是一个运行在Docker主机上的进程,但它和主机,以及所有运行在主机上的其他进程都是隔离的。这个进程也是资源受限的,意味着它只能访问和使用分配给它的资源(CPU、内存等)。仓库(Repository):Docker镜像仓库用于存放Docker镜像,以及促进不同人和不同电脑之间共享这些镜像。当编译镜像时,要么可以在编译它的电脑上运行,要么可以先上传镜像到一个镜像仓库,然后下载到另外一台电脑上并运行它。某些仓库是公开的,允许所有人从中拉取镜像,同时也有一些是私有的,仅部分人和机器可接入。

容器与虚拟机的对比:




Docker的技术优势:



       1:更高效的利用系统资源
       2:更快速的启动时间
       3:一致的运行环境
       4:更轻松的迁移
       5:更轻松的维护和扩展

Docker的使用流程:



       但是如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。就在这个时候,K8S出现了。


K8S定义:

       K8S,就是基于容器的集群管理平台,它的全称,是kubernetes,K8S是2014年6月由Google公司正式公布出来并宣布开源的。

K8S组件:

       一个K8S系统,通常称为一个K8S集群(Cluster)。这个集群主要包括两个部分:

       一个Master节点(主节点)
       一群Node节点(计算节点)



K8S之Masrer:


       Master节点包括API Server、Scheduler、Controller manager、etcd。

       API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。

       Scheduler负责对集群内部的资源进行调度,相当于“调度室”。

       Controller manager负责管理控制器,相当于“大总管”。



K8S之Node:



       Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

       Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个         server的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口。

       Docker,不用说了,创建容器的。

       Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。

       Kube-proxy,主要负责为Pod对象提供代理。

       Fluentd,主要负责日志收集、存储与查询。



K8S创建一个Pod的流程:



1)、用户提交创建Pod的请求,可以通过API Server的REST API,也可用Kubectl命令行工具。

2)、API Server处理用户请求,存储Pod数据到etcd。

3)、Schedule通过和API Server的watch机制,查看到新的Pod,尝试为Pod绑定Node。

4)、过滤主机:调度器用一组规则过滤掉不符合要求的主机,比如Pod指定了所需要的资源,那么就要过滤掉资源不够的主机。

5)、主机打分:对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等。

6)、选择主机:选择打分最高的主机,进行binding操作,结果存储到etcd中。

7)、Kubelet根据调度结果执行Pod创建操作: 绑定成功后,会启动container,Scheduler会调用API在数据库etcd中创建一个bound pod对象,描述在一个工作节点上绑定运行的所有Pod信息。运行在每个工作节点上的Kubelet也会定期与etcd同步bound pod信息,一旦发现应该在该工作节点上运行的bound pod对象没有更新,则调用Docker API创建并启动Pod内的容器。

案例分享:

客户当前平台网络:





上传镜像:

把压缩包上传到华为镜像仓库,在镜像仓库,上传镜像文件;



创建rbac的yaml文件:

配置rbac文件,登录master后台进行修改,先创建一个ad-cdlr-rbac.yaml文件

       touch ad-cdlr-rbac.yaml

       Vim ad-cdlr-rbac.yaml

执行此文件:kubectl apply -f ad-ctlr-rbac.yaml



创建screct的yaml文件:

创建Screct用于记录敏感数据

       Touch  ad-cdlr-rbac.yaml

       Vim ad-cdlr-rbac.yaml

执行此文件:kubectl apply -f ad-cdlr-rbac.yaml



Url 是AD的业务地址,和华为容器平台master通信地址,https://x.x.x.x

Username:AD的管理员账号

Password:AD的管理员密码  

以上的字段都是要通过base64码放进去

创建deplayment的yaml文件:


通过deployment部署开始上传的镜像

       Touch  ad-ctlr-deployment.yaml

       Vim  ad-ctlr-deployment.yaml


执行此文件:kubectl apply -f ad-ctlr-deployment.yaml



修改image的路径,该路径是开始上传镜像的目录,在deployment的yaml文件中



修改default-ingress-ip:配置默认的ingress ip对应AD虚拟服务

容器常见报错:


执行以上步骤后,在华为k8s上有生成的一个容器,查看容器的状态是已运行还是未就绪,已就绪是正常,未就绪需要查看报错日志,查看报错日志的内容





容器没有问题后,查看AD是否可以和该容器之间做配置下发,在master上查看对应日志



k8S和AD的网络配置:


先创建一个ad-ctlr-calico.yaml

     Touch ad-ctlr-calico.yaml

     Vim ad-ctlr-calico.yaml




Ipv4Address:字段是和容器之间通信的地址,修改完成后在master上传一个calicoctl的一个文件,然后给执行权限,之后执行  ./calicoctl apply -f ad-ctlr-calico.yaml

配置BGPpeer文件:

先创建一个ad-ctlr-bgppeer.yaml

     Touch ad-ctlr-bgppeer.yaml

     Vim ad-ctlr-bgppeer.yaml



执行./calicoctl apply -f ad-ctlr-bgppeer.yaml

四层负载创建:



在资源管理-网络管理添加service即可,关联刚开始的工作负载:



创建配置项,可以在界面配置,也可以在后台创建一个文件:



创建文件Touch ad-ctlr--testtomcat

       Vim ad-ctlr--testtomcat

       kubectl apply -f ad-ctlr--testservice.yaml







配置完成后,在界面可以看到新建的配置项配置项



完成后在AD上可以看到自动下发的虚拟服务配:





以上就是本次的容器技术Docker&K8s知识以及案例分享,感谢大佬们的参阅,此贴先到这里后续会带上更加实用的帖子,感谢大家!

励志分享超清壁纸语句~~:




衡量一个人是高贵还是低贱,要看他具有什么样的品质,而不是看他拥有多少,财富。——比彻


好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!

打赏鼓励作者,期待更多好文!

打赏
48人已打赏

339015 发表于 2022-10-22 03:51
  
感谢楼主分享,文章介绍了docker相关原理与常用基础配置,图文并茂,内容详实,期待更多分享
牵网线的 发表于 2022-11-2 15:21
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖,顶一个!
dhf 发表于 2022-11-5 10:00
  
感谢楼主的精彩分享,有助工作!!!
小鱼儿 发表于 2022-11-7 09:13
  
每天学习一点,每天进步一点!!!
水若善 发表于 2022-11-7 09:15
  
坚持每日学习打卡
日出 发表于 2022-11-7 09:20
  
感谢楼主的精彩分享,有助工作!!!
唐三平 发表于 2022-11-7 09:30
  
感谢楼主的精彩分享,有助工作!!!
朱墩2 发表于 2022-11-7 09:34
  

感谢楼主的精彩分享,有助工作!!!
新手081074 发表于 2022-11-7 09:46
  
感谢楼主分享,学习一下
发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
安全效果
【 社区to talk】
技术笔记
干货满满
每日一问
信服课堂视频
GIF动图学习
新版本体验
技术咨询
2023技术争霸赛专题
功能体验
产品连连看
安装部署配置
通用技术
秒懂零信任
技术晨报
自助服务平台操作指引
原创分享
标准化排查
排障笔记本
玩转零信任
排障那些事
SDP百科
深信服技术支持平台
POC测试案例
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
升级&主动服务
高频问题集锦
社区新周刊
全能先锋系列
云化安全能力

本版版主

12
185
6

发帖

粉丝

关注

121
315
351

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人