Kubernetes进阶实践

第三天 Kubernetes进阶实践 本章介绍Kubernetes的进阶内容,包含Kubernetes集群调度、CNI插件、认证授权安全体系、分布式存储的对接、Helm的使用等,让学员可以更加深入的学习Kubernetes的核心内容。 ETCD数据的访问 kube-scheduler调度策略实践 预选与优选流程 生产中常用的调度配置实践 k8s集群网络模型 CNI介绍及集群网络选型 Flannel网络模型的实现 vxlan Backend hostgw Backend 集群认证与授权 APIServer安全控制模型 Kubectl的认证授权 RBAC kubelet的认证授权 Service Account 使用Helm管理复杂应用的部署 Helm工作原理详解 Helm的模板开发 实战:使用Helm部署Harbor仓库 kubernetes对接分部式存储 pv、pvc介绍 k8s集群如何使用cephfs作为分布式存储后端 利用storageClass实现动态存储卷的管理 实战:使用分部署存储实现有状态应用的部署 本章知识梳理及回顾 ETCD常用操作 拷贝etcdctl命令行工具: $ docker exec -ti etcd_container which etcdctl $ docker cp etcd_container:/usr/local/bin/etcdctl /usr/bin/etcdctl 查看etcd集群的成员节点: $ export ETCDCTL_API=3 $ etcdctl --endpoints=https://[127....

2022-01-05 · 28 分钟

Kubernetes落地实践之旅

第二天 Kubernetes落地实践之旅 本章学习kubernetes的架构及工作流程,重点介绍如何使用Workload管理业务应用的生命周期,实现服务不中断的滚动更新,通过服务发现和集群内负载均衡来实现集群内部的服务间访问,并通过ingress实现外部使用域名访问集群内部的服务。 学习过程中会逐步对Django项目做k8s改造,从零开始编写所需的资源文件。通过本章的学习,学员会掌握高可用k8s集群的搭建,同时Django demo项目已经可以利用k8s的控制器、服务发现、负载均衡、配置管理等特性来实现生命周期的管理。 纯容器模式的问题 业务容器数量庞大,哪些容器部署在哪些节点,使用了哪些端口,如何记录、管理,需要登录到每台机器去管理? 跨主机通信,多个机器中的容器之间相互调用如何做,iptables规则手动维护? 跨主机容器间互相调用,配置如何写?写死固定IP+端口? 如何实现业务高可用?多个容器对外提供服务如何实现负载均衡? 容器的业务中断了,如何可以感知到,感知到以后,如何自动启动新的容器? 如何实现滚动升级保证业务的连续性? …… 容器调度管理平台 Docker Swarm Mesos Google Kubernetes 2017年开始Kubernetes凭借强大的容器集群管理功能, 逐步占据市场,目前在容器编排领域一枝独秀 https://kubernetes.io/ 架构图 分布式系统,两类角色:管理节点和工作节点 核心组件 ETCD:分布式高性能键值数据库,存储整个集群的所有元数据 ApiServer: API服务器,集群资源访问控制入口,提供restAPI及安全访问控制 Scheduler:调度器,负责把业务容器调度到最合适的Node节点 Controller Manager:控制器管理,确保集群资源按照期望的方式运行 Replication Controller Node controller ResourceQuota Controller Namespace Controller ServiceAccount Controller Token Controller Service Controller Endpoints Controller kubelet:运行在每个节点上的主要的“节点代理”,脏活累活 pod 管理:kubelet 定期从所监听的数据源获取节点上 pod/container 的期望状态(运行什么容器、运行的副本数量、网络或者存储如何配置等等),并调用对应的容器平台接口达到这个状态。 容器健康检查:kubelet 创建了容器之后还要查看容器是否正常运行,如果容器运行出错,就要根据 pod 设置的重启策略进行处理....

2022-01-04 · 18 分钟

走进Docker的世界

第一天 走进Docker的世界 介绍docker的前世今生,了解docker的实现原理,以Django项目为例,带大家如何编写最佳的Dockerfile构建镜像。通过本章的学习,大家会知道docker的概念及基本操作,并学会构建自己的业务镜像,并通过抓包的方式掌握Docker最常用的bridge网络模式的通信。 认识docker why what how 为什么出现docker 需要一种轻量、高效的虚拟化能力 Docker 公司位于旧金山,原名dotCloud,底层利用了Linux容器技术(LXC)(在操作系统中实现资源隔离与限制)。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。Docker就是这样诞生的。 Hypervisor: 一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件 。常见的VMware的 Workstation 、ESXi、微软的Hyper-V或者思杰的XenServer。 Container Runtime:通过Linux内核虚拟化能力管理多个容器,多个容器共享一套操作系统内核。因此摘掉了内核占用的空间及运行所需要的耗时,使得容器极其轻量与快速。 什么是docker 基于操作系统内核,提供轻量级虚拟化功能的CS架构的软件产品。 基于轻量的特性,解决软件交付过程中的环境依赖 docker能做什么 可以把应用程序代码及运行依赖环境打包成镜像,作为交付介质,在各环境部署 可以将镜像(image)启动成为容器(container),并且提供多容器的生命周期进行管理(启、停、删) container容器之间相互隔离,且每个容器可以设置资源限额 提供轻量级虚拟化功能,容器就是在宿主机中的一个个的虚拟的空间,彼此相互隔离,完全独立 版本管理 Docker 引擎主要有两个版本:企业版(EE)和社区版(CE) 每个季度(1-3,4-6,7-9,10-12),企业版和社区版都会发布一个稳定版本(Stable)。社区版本会提供 4 个月的支持,而企业版本会提供 12 个月的支持 每个月社区版还会通过 Edge 方式发布月度版 从 2017 年第一季度开始,Docker 版本号遵循 YY.MM-xx 格式,类似于 Ubuntu 等项目。例如,2018 年 6 月第一次发布的社区版本为 18.06.0-ce 发展史 13年成立,15年开始,迎来了飞速发展。 Docker 1.8之前,使用LXC,Docker在上层做了封装, 把LXC复杂的容器创建与使用方式简化为自己的一套命令体系。 之后,为了实现跨平台等复杂的场景,Docker抽出了libcontainer项目,把对namespace、cgroup的操作封装在libcontainer项目里,支持不同的平台类型。 2015年6月,Docker牵头成立了 OCI(Open Container Initiative开放容器计划)组织,这个组织的目的是建立起一个围绕容器的通用标准 。 容器格式标准是一种不受上层结构绑定的协议,即不限于某种特定操作系统、硬件、CPU架构、公有云等 , 允许任何人在遵循该标准的情况下开发应用容器技术,这使得容器技术有了一个更广阔的发展空间。...

2021-12-30 · 13 分钟

Docker 常用命令大全

本文包括容器生命周期管理命令、容器操作命令、容器rootfs命令、镜像仓库命令、本地镜像管理命令和基础版本信息命令。 容器生命周期管理命令 run 创建一个新的容器。 # 使用docker镜像nginx:latest以后台模式启动一个容器, # 并将容器命名为mynginx。 docker run --name mynginx -d nginx:latest # 使用镜像 nginx:latest,以后台模式启动一个容器, # 将容器的 80 端口映射到主机的 80 端口, # 主机的目录 /data 映射到容器的 /data。 docker run -p 80:80 -v /data:/data -d nginx:latest # 使用镜像nginx:latest以交互模式启动一个容器, # 在容器内执行/bin/bash命令。 docker run -it nginx:latest /bin/bash start/stop/restart docker start : 启动一个或多个已经被停止的容器。 docker stop : 停止一个运行中的容器。 docker restart : 重启容器。 # 启动已被停止的容器mynginx docker start mynginx # 停止运行中的容器mynginx docker stop mynginx # 重启容器mynginx docker restart mynginx kill 杀掉一个运行中的容器。可选参数:...

2021-12-11 · 4 分钟