声明
学习视频来自B站UP主泷羽sec,如涉及侵权立刻删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则结果自负
云计算基础概念
一、云计算的定义
云计算是一种资源交付和使用模式,指通过网络得到应用所需的资源(硬件、平台、软件)。提供资源的网络被称为云。云中的资源在使用者看来是可以无限扩展的,而且可以随时获取,这种特性经常被比喻为像水电一样使用硬件资源,按需购买和使用1。广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式得到所需服务2。
二、云计算的实现
云计算常涉及通过互联网来提供动态易扩展而且经常是捏造化、分布式计算、并行计算、效用计算、网络存储技术、捏造化、负载均衡等传统和网络技术发展融合的产物2。
三、云计算的组件
(一)云端储存
这是云计算的组件之一1。
四、云计算的服务模式
(一)基础办法即服务(IaaS)
消费者通过Internet可以从完善的计算机基础办法得到服务2。
(二)平台即服务(PaaS)
PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度2。
(三)软件即服务(SaaS)
这是最上层面向终端用户应用的服务,软件和数据可存储在数据中心2。
云计算搭建VS传统搭建
一、传统搭建应用步伐的步骤
- 购买硬件装备:根据应用步伐的需求,购买相应的服务器、存储装备和网络装备。
- 安装利用体系:在服务器上安装利用体系,如Windows Server、Linux等。
- 安装数据库管理体系:根据应用步伐的需求,安装相应的数据库管理体系,如MySQL、Oracle等。
- 安装中间件:根据应用步伐的需求,安装相应的中间件,如Web服务器、应用服务器等。
- 开发和部署应用步伐:使用编程语言和开发工具编写应用步伐代码,并将其部署到服务器上。
- 测试和优化:对应用步伐举行全面的测试,确保其性能和稳定性。根据测试结果举行优化,进步应用步伐的效率。
- 维护和更新:定期检查和维护硬件装备和软件体系,及时更新补丁和升级软件,确保体系的安全性和稳定性。
二、传统搭建应用步伐的上风和劣势
上风
- 完全控制:开发者拥有对硬件和软件资源的完全控制权,可以根据必要举行定制和优化。
- 高安全性:由于数据和应用步伐都在当地运行,相对来说更加安全,不容易受到外部攻击。
- 低延迟:由于数据和应用步伐都在当地运行,网络延迟相对较低。
劣势
- 高成本:购买和维护硬件装备和软件体系必要投入大量的资金和人力资源。
- 扩展性差:当应用步伐的用户数量增加时,必要购买更多的硬件装备来扩展容量,这可能会导致资源浪费和成本增加。
- 灵活性差:由于硬件和软件资源都是固定的,难以根据应用步伐的需求举行灵活调解。
三、传统搭建应用步伐与云计算的对比
- 成本:传统搭建应用步伐必要购买和维护硬件装备和软件体系,而云计算则采用按需付费的模式,可以降低初始投资和运营成本。
- 扩展性:云计算可以根据应用步伐的需求举行灵活扩展,而传统搭建应用步伐则必要购买更多的硬件装备来扩展容量。
- 灵活性:云计算可以根据应用步伐的需求举行灵活调解,而传统搭建应用步伐则难以实现这种灵活性。
- 安全性:云计算提供商通常会提供多层次的安全保障措施,而传统搭建应用步伐则必要开发者自行负责安全标题。
- 维护和管理:云计算提供商通常会负责硬件和软件体系的维护和管理,而传统搭建应用步伐则必要开发者自行负责这些标题。
云服务厂家:提供包罗云服务器、云数据库、云存储、云安全等服务
阿里云
| 阿里云-计算,为了无法计算的价值
| 腾讯云
| 腾讯云 产业智变·云启未来 - 腾讯
| 华为云
| 共建智能世界云底座-华为云
| 天翼云
| 中国电信-天翼云,云网融合,安全可信,专享定制
| 金山云
| https://www.kingsoftcloud.com/
| 百度云
| 百度智能云-云智一体深入产业
| 京东云
| 京东云
| UCloud
| UCloud优刻得-首家公有云科创板上市公司
| 青云
| 第一家混合云上市公司 | 青云QingCloud
| 世纪互联
| Bibi & Baba - Coming Soon
|
一,云架构先容
云架构是指利用云计算技术构建的IT基础办法架构。它通过捏造化、分布式计算等技术,将计算资源、存储资源、网络资源等整合在一起,并通过互联网向用户提供服务。云架构具有高度的灵活性、可扩展性和可靠性,可以或许根据业务需求的变革快速调解资源,提供一连的服务保障。
就防御角度而言,了解了底层技术才能构建防御体系;就进攻而言,了解底层技术才能发现漏洞进而开发出漏洞利用方法。
从传统体系构建开始,随着处理的升级迭代,捏造机出现了,其实现了将一台机器的资源拆分成多台机器使用,实现了裸机基础办法到捏造机基础办法的变革;容器技术的出场,实现了服务器,网络和存储的捏造交付。选择这一切基础办法被称为“云”,它是浩繁种技术的集合
二,云服务
云作为一种 IT 基础办法体系,它将资源的创建抽象在容错、地理分布和可扩展的物理基础办法之上。并以服务器的情势按需求交付本领,非常易于使用,可以自动创建服务器、存储、网络等等。云基础架构必须稳定,不能频仍出现中断。地理分布的云基础办法可以或许进步容错本领,而且云必须可以或许快速扩展,以满足各种需求
云计算的部署模型主要包罗以下几种:
- 公有云:由第三方云服务提供商提供,面向全部用户开放。用户可以通过互联网访问这些云服务。
- 私有云:由企业内部或第三方托管,专门为特定构造或用户提供。私有云通常用于处理敏感数据或满足特定的合规要求。
- 混合云:结合了公有云和私有云的优点,通过统一的管理和协调,实现资源的最优设置和利用。
- 社区云:为特定社区或行业提供服务,满足特定行业的合规要求和业务需求。
一、OpenStack的基本概念
- 开源项目:OpenStack是一个开源项目,任何人都可以访问其源代码,并对其举行修改和分发。这种开放性使得OpenStack可以或许吸引全球开发者和企业的参与,共同推动其发展。
- 云计算平台:OpenStack提供了一个云计算平台,用于构建和管理公共云和私有云。它通过捏造化技术将物理硬件资源抽象成共享资源池,并通过互联网按需分配给用户。
- 模块化架构:OpenStack采用了模块化架构,由多个独立的组件组成。这些组件可以相互协作,提供计算、存储、网络等资源的管理。用户可以根据必要选择和组合差别的组件,以满足特定的业务需求。
二、OpenStack的主要组件
- Nova(计算):负责提供计算资源,包罗捏造机的创建、管理和删除。Nova是OpenStack的核心组件之一,提供了丰富的API接口,方便用户对计算资源举行利用。
- Swift(对象存储):提供对象存储服务,允许用户存储和检索对象(如文件)。Swift适用于一次写入、多次读取的场景,具有高可用性和可扩展性。
- Cinder(块存储):提供块存储服务,允许用户创建和管理长期存储卷。Cinder支持多种存储后端,包罗当地存储、网络存储和云存储。
- Neutron(网络):提供网络毗连服务,允许用户创建和管理捏造网络。Neutron支持多种网络技术和协议,包罗VLAN、GRE、 VXLAN等。
- Keystone(身份认证):提供身份认证和授权服务,确保只有授权用户才能访问和使用OpenStack资源。Keystone支持多种身份认证方式,包罗用户名和密码、OAuth、LDAP等。
- Glance(镜像服务):提供捏造机镜像的存储、查询和检索服务。Glance允许用户上传和共享镜像,并为捏造机提供启动镜像。
三、OpenStack的应用场景
- 构建私有云:企业可以使用OpenStack构建自己的私有云,以进步资源利用率和业务灵活性。私有云通常用于处理敏感数据或满足特定的合规要求。
- 构建公共云:云服务提供商可以使用OpenStack构建公共云,向外部用户提供计算、存储和网络资源的租赁服务。公共云通常用于提供弹性的计算资源,满足差别用户的需求。
- 混合云部署:企业可以使用OpenStack构建混合云,将私有云和公共云的上风结合起来。混合云通常用于实现资源的最优设置和利用,满足差别业务场景的需求。
三,云分类
1. 基础办法即服务(IaaS):就像提供修建质料和工具,让你可以自己搭建房子。
2. 平台即服务(PaaS):雷同有了基本框架的房子,你只需举行装修和部署。
3. 软件即服务(SaaS):直接给你一个装修好可以直接入住的房子。
四,责任共享模型概述
责任共享模型是云计算生态体系中的一种协商同等的框架,界定了云服务提供商(CSP)和客户之间的义务。该模型将责任分配为:CSP负责云服务的底层基础办法和安全,而客户负责在其之上部署和管理应用步伐及数据。这种分担有助于优化云计算的效率和成本效益,同时确保数据的安全和隐私受到掩护
云服务在提供容错和扩展的同时,也在差别层面增加了安全性的模糊性。假如是 AWS 步伐漏洞导致大量数据泄露,AWS 不承担责任。但假如 AWS 数据中心物理安全遭到破坏,客户数据被盗取,AWS 就得承担责任。
五、云架构
云架构是指云计算体系的结构和设计,它定义了如何构造和管理计算资源以提供云服务。云架构通常分为几个关键层次,每个层次都有其特定的功能和责任。以下是云架构的主要组成部门:
1. 服务层(SaaS, PaaS, IaaS)
a. 软件即服务(SaaS)
- 定义:SaaS层将应用步伐作为服务提供给用户,通常通过Web浏览器访问。
- 功能:提供现成的应用步伐,用户无需关心底层基础办法。
- 上风:易于使用,无需安装和维护软件,按需付费。
b. 平台即服务(PaaS)
- 定义:PaaS层提供开发和部署应用步伐所需的平台和服务。
- 功能:提供利用体系、中间件、数据库和开发工具。
- 上风:简化了应用步伐的开发和部署过程,用户只需关注应用步伐本身。
c. 基础办法即服务(IaaS)
- 定义:IaaS层提供基础的计算资源,如捏造机、存储和网络。
- 功能:提供捏造化的计算资源,用户可以自由选择和设置这些资源。
- 上风:高度灵活,用户可以根据需求动态调解资源。
2. 管理层
a. 云管理层的功能
- 安全性:确保云环境的安全,包罗数据掩护、身份验证和访问控制。
- 监控和日记:及时监控云资源的使用环境,并记载日记以便审计和故障排除。
- 自动化:通过自动化工具和脚本简化云资源的管理和部署。
- 计费和计量:跟踪资源使用环境并生成账单,确保用户按使用量付费。
b. 云管理层的上风
- 高效管理:通过集中化的管理平台,简化了云资源的管理。
- 进步可靠性:通过监控和自动化,进步了体系的可靠性和可用性。
- 成本优化:通过准确的计费和资源管理,帮助用户优化成本。
3. 物理层
a. 数据中心
- 定义:数据中心是云服务的物理基础,包罗服务器、存储装备和网络装备。
- 功能:提供计算、存储和网络资源,并确保这些资源的高可用性和安全性。
- 上风:通过冗余和备份机制,进步体系的可靠性和灾难规复本领。
b. 网络基础办法
- 定义:网络基础办法包罗路由器、交换机和防火墙等装备。
- 功能:提供网络毗连和数据传输,并确保网络安全。
- 上风:通过高效的网络架构,进步数据传输的速度和可靠性。
4. 安全层
a. 安全计谋和措施
- 定义:安全层包罗全部用于掩护云环境的计谋和措施。
- 功能:防止未经授权的访问、数据泄露和网络攻击。
- 上风:通过多层次的安全措施,确保云环境的安全性和合规性。
六、云架构设计
云架构设计是指在云计算环境中,设计和构建体系架构以满足业务和技术需求。云架构设计的目的是创建一个高效、可靠、安全且可扩展的体系架构。以下是一些关键的云架构设计原则和步骤:
1. 架构设计流程
根据搜索结果1,云架构设计通常包罗以下几个阶段:
a. 需求分析阶段
- 输入:用户需求和痛点。
- 输出:需求分析表。
- 功能:分析用户需求,确定体系必要解决的标题。
b. 架构设计阶段
- 输入:需求分析表。
- 输出:架构设计方案。
- 功能:根据需求分析表,匹配符合的设计模式,形成完整的架构设计方案。
c. 评估改进阶段
- 输入:已完成的架构设计方案。
- 输出:经过评估和改进的架构设计方案。
- 功能:对架构设计方案举行评估,参考良好的架构设计原则举行改进。
d. 交付实施阶段
- 输入:经过评估改进的架构设计方案。
- 输出:在云平台中搭建的环境和部署的业务。
- 功能:根据架构设计方案在云平台中搭建环境、部署业务,提供符合架构设计的云端环境。
e. 一连运营阶段
- 输入:解决方案和当前业务运行状况。
- 输出:改进措施和重构改进的方案。
- 功能:一连巡检、分析、评估,输出改进措施,举行重构改进,并根据新需求提供方案。
2. 架构设计原则
云架构设计必要遵循肯定的原则,这些原则代表了架构设计中必要考虑的差别角度。根据搜索结果1,架构设计的六大原则包罗:
原则
| 描述
| 公道部署
| 确保资源的公道分配和使用,避免过分或不足的资源设置。
| 业务一连
| 确保业务的一连性,纵然在故障或维护期间也能提供服务。
| 弹性扩展
| 体系可以或许根据需求动态扩展或缩减资源,以应对负载变革。
| 性能效率
| 体系必要具备高性能和高效率,以提供快速相应和低延迟。
| 安全合规
| 体系必要符合安全标准和法规,掩护数据和隐私。
| 一连运营
| 体系必要具备一连运营的本领,包罗监控、维护和优化。
| 3. 云原生架构设计
云原生架构是一种利用云计算技术构建和运行应用步伐的方法。根据搜索结果2,阿里巴巴提出了云原生架构设计方法——ACNA(Alibaba Cloud Native Architecting),该方法结合了企业的核心关注点、企业构造与IT文化、工程实施本领等多个方面。
a. ACNA的作用与目的
- 提升研发团队的本领:实现成本、进度计划、功能和质量等目的。
- 指导研发团队控制研发和运维过程:优化IT构造结构并打造更加高效的软件工程流程机制。
- 引导研发团队:在确定云原生架构的成熟度以及定位云原生化方面关键标题的过程中选择改进计谋。
b. ACNA的实现步骤
- 确定企业当前所处的云原生架构成熟度级别。
- 了解会对改进生产质量和优化过程起关键作用的因素。
- 将工作重点集中在有限的几个关键目的上:从而有效到达优化现有研发流程的效果,进而一连改进产物。
4. 云安全架构设计
云安全架构设计是云架构设计的紧张组成部门。根据搜索结果3,云安全架构设计涉及以下几个方面:
- 信息治理:治理云中的数据,确保数据的机密性、完整性和可用性。
- 掩护管理平台和管理结构:包罗Web控制台和API。
- 基础办法安全:包罗网络、负载安全和混合云安全考虑。
- 捏造化及容器技术:确保捏造化管理体系、容器和软件定义的网络的安全性。
- 事件相应、告示和补救:适当的和充实的事件检测、相应、告示和补救。
- 掩护在云上运行或在云中开发的应用软件。
- 数据安全和加密:实施数据的安全和加密控制,并保证可扩展的密钥管理。
- 身份、授权和访问管理:管理身份和利用目录服务来提供访问控制。
七,云服务集成部署
使用一连集成和一连交付(CICD)管道来构建环境,包罗测试、测量和扫描代码更改的自动化测试和部署(GitOps)。要做到有弹性可靠,即任何单点故障都有故障转移或其他机制,让业务能一连提供(这叫冗余)。全球负载均衡(GSLB,比如智能 DNS、GTM)能解决客户单访问的单点故障隐患。还要平衡控制,控制掩护体系免受漏洞和内部攻击的组件,应平衡控制和可用性。
八、云设计模式
云架构设计不必从头开始,采用已查验的设计模式是最佳选择。
1. 微服务架构模式
微服务架构是一种设计模式,其中应用步伐由一组小型、独立的服务组成,每个服务都负责特定的功能,并通过API举行通讯。这种模式可以实现服务之间的独立性,突破紧密耦合的组件。
2. Serverless架构模式
Serverless架构允许开发职员专注于编写业务逻辑,而不必担心服务器管理和运维。在这种模式下,计算资源是按需分配的,开发者只必要为实际使用的资源付费。
3. 计算存储分离模式
在这种模式下,计算和存储被分别举行管理和扩展,以进步体系的弹性和效率。
4. 可观测性架构模式
为了有效地监控和调试复杂的分布式体系,必要实施日记记载、度量指标和分布式跟踪等可观测性工具。
5. 事件驱动架构模式
事件驱动架构通过异步消息转达来解耦服务之间的交互,使得体系更加灵活和相应迅速。
6. 网关架构模式
网关作为体系对外的单一入口点,可以处理身份验证、路由哀求、限流、安全计谋等职责。
7. 混沌工程模式
混沌工程通过对生产环境引入可控的故障,以评估体系在压力条件下的举动和可靠性。
8. 边车/副车模式
边车/副车模式用于将主要应用步伐的一些外围功能或附加功能抽象为独立的微服务。这种模式可以实现服务之间的独立性,突破紧密耦合的组件。
9. 大使模式
大使模式经常用于扩展现有服务的网络功能,特殊是对于那些过于古老或复杂且无法修改的服务。大使服务可以被视为与客户端共存的一个进程外署理。
10. 散点/聚集模式
这种模式用于并行处理大规模数据集,要点是有一个聚合器,汇总来自差别服务的相应并提供报价。
九、安全控制
1网络控制:传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WAN。SDN 可以对差别的接口(如 API 或 GUI)设置网络规则。通过 mTLS 不仅能加密流量,还能对客户端举行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提升,甚至破坏整个基础办法。现代访问管理体系多使用令牌举行访问控制,提供对服务的短时访问权。JWT 通常用于访问云端资源,伪造和破解密码是常见攻击手段。另一种类型的权限控制机制是强制访问控制 MAC。
身份管理:企业通常用 AD、LDAP 举行身份管理。AWS IAM 是身份和访问管理的公共云服务。Google 联盟认证 OIDC 经常用于 2FA。云身份提供者(IdP)作为真实身份泉源,是更安全的解决方案,比如 Azure AD。
1. 身份认证与授权
身份认证与授权是云计算安全控制的关键要素。通过使用强大的身份验证机制,如多因素身份验证和单一登录(SSO),可以限定用户访问权限,并确保只有经过身份认证的用户才能访问敏感数据和资源。
2. 数据加密
数据加密是掩护云计算中数据安全性的紧张措施。云服务提供商通常会使用加密算法来加密数据,使其在传输和存储过程中得到掩护。同时,对于敏感数据,还可以实施端到端加密,确保只有授权的用户可以或许解密和访问数据。
3. 网络安全防护
云计算服务必须接纳有效的网络安全防护措施来防止入侵和恶意攻击。这包罗防火墙、入侵检测体系(IDS)、入侵防御体系(IPS)等。通过监控和过滤网络流量,可以防止恶意攻击者访问和侵害云环境。
4. 监控与相应机制
云计算环境应建立有效的监控体系来检测潜在的恶意活动,并实施相应的相应机制。这包罗及时监控网络流量、日记记载、异常检测等,以及建立紧急相应计划,及时应对安全事件和恶意攻击。
5. 捏造化安全
捏造化技术是云计算的核心技术之一,它可以让多台物理服务器共享同一硬件资源。为了防范捏造化安全风险,云服务提供商应该采用专门的捏造化安全产物,例如捏造机隔离、捏造机监控等工具。
6. 合规性和监管
由于云计算涉及到跨国数据传输和存储,因此必须遵守差别的法律法规和行业标准。同时,也必要对云计算平台举行严酷的监管以确保其安全性。
十、容器与云
捏造化中每个 VM 必要运行自己的利用体系,大大增加了总体开销。容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。容器是对捏造化的补充,而非取代。容器的体系开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。容器使用映像作为模板生成,映像相称于计算机硬盘。容器使用差别发行版文件加载内核,运行容器。
容器是什么?
容器是一种轻量级的捏造化技术,它允许开发者将应用步伐及其全部依赖项打包在一起,形成一个独立的单元。这个单元可以在任何支持容器运行的环境中部署和运行。容器的优点在于其高效性、可移植性和灵活性。
云计算是什么?
云计算是一种通过互联网提供的计算服务,包罗服务器、存储、数据库、网络、软件等。用户可以按需使用这些资源,而无需购买和维护自己的硬件装备。云计算的主要优点在于其弹性和成本效益。
容器在云计算中的应用
容器技术在云计算中的应用非常广泛。以下是一些主要的应用场景:
- 微服务架构:容器非常得当用于实现微服务架构,每个微服务可以打包成一个独立的容器,便于管理和部署。
- DevOps和CI/CD:容器与一连集成/一连交付(CI/CD)管道结合,可以实现自动化测试和部署,进步开发效率。
- 弹性伸缩:云计算平台可以根据需求自动调解容器的数量,实现资源的弹性伸缩。
- 跨云兼容性:容器的可移植性使得应用步伐可以在差别的云平台之间迁徙,增加了灵活性和冗余性。
容器编排工具
在云计算环境中,管理大量的容器可能会变得复杂。为此,容器编排工具如Kubernetes、Docker Swarm和Apache Mesos被广泛应用。这些工具可以帮助自动化容器的部署、扩展和管理,简化了云计算环境中的利用
实验一:docker
Docker是一种开源的容器化平台,它可以让开发者将应用步伐及其依赖项打包到一个可移植的容器中,然后发布到任何盛行的Linux或Windows利用体系的机器上。Docker容器是完全使用沙箱机制的,相互之间不会有任何接口。Docker技术在云计算中的应用非常广泛,它可以简化应用部署和管理,进步开发效率,降低运维成本,并进步体系的可扩展性和弹性。此外,Docker还支持基于微服务架构的应用开发,使得开发者可以更容易地对各个微服务举行独立开发、测试和部署。
1,在 Ubuntu 上生成 CentOS 7 容器,可以使用 Docker 这个盛行的容器化工具。步骤如下:
更新软件源 apt-get update
安装Docker apt-get install docker.io
2,首先就要做加快器
国内能用的Docker镜像源【2024最新一连更新】-CSDN博客
修改docker的设置文件
重启docker服务使设置见效
systemctl daemon-reload
sudo systemctl restart docker
可以看到设置见效
3,拉取 CentOS 7 的官方 Docker 镜像:docker pull centos:7
4,运行一个基于CentOS7镜像的容器
docker run -it --name zzz centos:7 /bin/bash
5,使用docker搭建http+Apache服务
首先下载httpd的镜像
创建 Apache 容器后台运行:
docker container run -d --rm -p 8080:80 httpd
通过访问192.168.23.137:8080证明搭建服务成功
7,docker常用下令演示
1,查看全部容器 docker container ls
2,进入特定容器 docker exec -it <container_id> /bin/bash
docker exec 是 Docker 下令,用于在运行的容器中执行下令。
-it 选项表现以交互模式运行下令,并分配一个伪终端。
<container_id> 是容器的 ID 或名称,可以通过 docker ps 下令查看。
/bin/bash 是要在容器中执行的下令,这里是指启动一个 Bash shell。
下令exit用于退出这个容器bash shell
3,停止容器 dochker container stop <container_id>
4,挂载宿主机目录运行容器
docker container run -d --rm -p 8080:80 -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
- -d: 以分离模式(后台运行)启动容器。
- --rm: 容器退出后自动删除容器。
- -p 8080:80: 将主机的8080端口映射到容器的80端口。
- -v /home/user/webroot/:/usr/local/apache2/htdocs/: 将主机的/home/user/webroot/目录挂载到容器的/usr/local/apache2/htdocs/目录。
- httpd: 使用httpd镜像来创建容器。
功能描述
该下令的作用是启动一个Apache HTTP服务器容器,并将主机的/home/user/webroot/目录挂载到容器的/usr/local/apache2/htdocs/目录,这样容器内的Apache服务器将从这个目录提供网页内容。同时,主机的8080端口会被映射到容器的80端口,使得用户可以通过访问主机的8080端口来访问Apache服务器。容器在退出后会自动删除。
5,侦听宿主机 80 端口运行容器
docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
--network host: 使用主机的网络定名空间,容器将共享主机的网络接口。
6,列出全部正在运行的容器 docker ps
7,查看特定容器的进程信息 docker top <container_name_or_id>
实验二,Podman
Podman是一种开源的容器管理工具,它提供了与Docker雷同的功能,但有一些关键的区别和上风。Podman由Red Hat主导开发,不必要守护进程(daemon),而且可以在没有root权限的环境下运行。这些特性使得Podman在某些场景下比Docker更加安全和轻量。
主要特点
- 无守护进程: Podman不必要守护进程,这镌汰了潜在的安全漏洞。
- Rootless模式: Podman可以在没有root权限的环境下运行,进一步进步了安全性。
- 与Docker兼容: Podman使用与Docker雷同的镜像格式,而且其下令行工具与Docker非常相似,使得从Docker迁徙到Podman相对容易。
- 集成Kubernetes: Podman可以直接运行Kubernetes Pods,而不仅仅是单个容器。
使用场景
Podman适用于各种容器管理场景,包罗但不限于:
- 开发环境: 开发职员可以使用Podman快速搭建和管理开发环境。
- 生产环境: 在生产环境中,Podman可以用于部署和运行应用步伐,提供良好的隔离性和资源管理本领。
- CI/CD管道: Podman可以集成到CI/CD管道中,用于构建、测试和部署容器化应用。
基本利用
以下是一些常见的Podman下令,它们与Docker下令非常相似:
- podman run: 创建并启动一个容器。
- podman start: 启动一个已停止的容器。
- podman stop: 停止一个正在运行的容器。
- podman ps: 列出全部正在运行的容器。
- podman rm: 删除一个或多个容器。
- podman pull: 从镜像堆栈拉取镜像。
- podman push: 将镜像推送到镜像堆栈。
高级特性
- 构建镜像: 使用Podmanfile(雷同于Dockerfile)来构建自定义镜像。
- 管理网络: 创建和管理容器网络。
- 数据卷: 管理长期化数据卷,以便在容器之间共享数据。
安全与性能
由于Podman不必要守护进程,而且支持Rootless模式,它在安全性方面有显著的上风。此外,Podman的轻量级设计也有助于进步性能和镌汰资源消耗。
1,在ubuntu-24.0.1上安装设置podman
Podman入门全指南:安装、设置与运行容器-CSDN博客
更新软件包 apt-get updata
安装软件包 apt-get -y install podman
验证安装成功 podman --version
设置存储
Podman 使用存储设置文件来管理容器和镜像的存储设置。存储设置文件通常位于 /etc/containers/storage.conf。
修改存储驱动:
Podman 默认使用 overlay 存储驱动,但您可以根据必要更改其他存储驱动,例如 vfs,尤其是在不支持 overlay 的旧内核上。
编辑/etc/containers/storage.conf 文件,并找到 [storage] 部门,修改 driver 选项;
设置镜像大小限定:
设置新建容器的最大存储空间。在 storage.conf 文件中,添加或修改 size 选项
设置网络
编辑一个podman-network.conflist 的文件,并设置一个桥接网络:
vim /etc/cni/net.d/podman-network.conflist
{
"cniVersion": "0.4.0",
"name": "podman",
"plugins": [
{
"type": "bridge",
"bridge": "cni-podman0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"ranges": [
[{"subnet": "10.88.0.0/16"}]
],
"routes": [{"dst": "0.0.0.0/0"}]
}
},
{
"type": "portmap",
"capabilities": {"portMappings": true}
}
]
}
重启podman以应用网络设置 systrmctl restart podman
管理镜像堆栈设置
Podman 的镜像堆栈设置位于 /etc/containers/registries.conf。
设置镜像堆栈:
在此文件中指定和修改镜像堆栈,包罗镜像的搜索序次和镜像拉取计谋。
打开 registries.conf 并设置:
registries.search 定义搜索镜像时查询的堆栈列表。
registries.insecure 列出了允许通过非 HTTPS 毗连访问的堆栈(通常不保举)。
registries.block 可以制止访问特定的堆栈。
这个时间再查看服务运行状态 systemctl status podman.service
解决方法就是selinux设置为disabled,这个服务会制止podman的一些服务
podman常用下令演示
运行容器sudo podman run -d --r-m --network host httpd
创建空 pod podman pod create --name wha
在 pod 中运行容器 podman run -d --pod wha httpd
在 pod 中运行可找东西的工具并互动
podman run -pod wha -it alpine/curl /bin/asho
十一,容器的真相
Linux 没有单一被称为“容器”的特性。实际上,“容器”是制止进程访问其他进程和资源的特性组合,发生在内核级别,可以控制其限定级别。
容器的汗青:
- 197x 年代引入 chroot,可以指示进程的新根目录,但不完美。定名空间可实现每个进程分离网络、进程和其他定名空间。
- 1999 年 FreeBSD 发布 Jails,在 chroot 之上提供更多限定(Linux 不支持)。
- 2002 年引入定名空间,分离内核资源。
- 2006 年谷歌引入进程容器,后被称为 cgroup,可限定特定进程的内存和 CPU 资源。结合 cgroup 和定名空间发布了 Linux 容器(LXC)项目。
Linux 中有八种用户定名空间:挂载、进程 ID、网络、进程间通讯、UTS、用户 ID、控制组、时间、syslog。
容器技术在现代软件开发和运维中饰演着至关紧张的脚色。为了深入理解容器的真相,我们必要从多个角度来探讨这一主题。
容器的基本概念
容器是一种轻量级的捏造化技术,它允许开发者将应用步伐及其依赖项打包在一起,形成一个独立的单元。这个单元可以在差别的环境中运行,而不必担心环境差异带来的标题。
容器与捏造机的区别
容器与传统的捏造机(VM)有一些关键的区别:
- 资源效率: 容器共享主机的利用体系内核,因此比捏造机更加轻量和高效。
- 启动速度: 容器启动速度通常比捏造机快得多,由于它们不必要引导完整的利用体系。
- 隔离性: 容器提供了进程级别的隔离,而捏造机则提供了完整的利用体系级别的隔离。
容器的主要用途
容器技术广泛应用于以下几个领域:
- 一连集成和一连交付(CI/CD): 容器使得应用步伐的构建、测试和部署过程更加自动化和高效。
- 微服务架构: 容器非常得当用于实现微服务架构,每个服务可以独立开发、部署和扩展。
- 跨平台部署: 容器确保应用步伐可以在差别的环境中同等运行,从而简化了跨平台部署的复杂性。
容器技术的挑战
尽管容器技术带来了许多长处,但也面对一些挑战:
- 安全性: 容器共享主机的利用体系内核,这意味着假如主机被攻破,全部容器都可能受到影响。
- 存储管理: 容器通常是短暂的,如何有效地管理和长期化数据是一个必要解决的标题。
- 网络复杂性: 在大规模的容器集群中,管理网络通讯和确保网络安全是一项复杂的使命。
容器技术的未来展望
随着云计算和边沿计算的快速发展,容器技术将继承演进。未来,我们可以预见以下几个趋势:
- 更高的自动化水平: 容器编排工具(如Kubernetes)将进一步发展,提供更高水平的自动化和智能化管理。
- 增强的安全性: 新的安全技术和计谋将被引入,以进步容器的安全性和隔离性。
- 更广泛的生态体系: 容器技术将与更多的开发工具、监控体系和部署平台集成,形成一个更加完善的生态体系。
十二,Capabilities
在Linux利用体系中,Capabilities机制被引入以实现对root权限的细粒度控制。这种机制将原本与root用户(UID=0)关联的特权细分为多个独立的功能组,每个功能组都可以独立启用或禁用。Capabilities作为线程(在Linux中,进程和线程并没有本质区别)的属性存在,其目的是为了在执行特权利用时,可以或许根据线程的Effective集合来决定是否允许执行这些利用。
Docker 默认不使用用户定名空间。为防止特权内核调用,它使用内核 capabilities 和 seccomp 设置文件限定访问。Linux 有特权或非特权进程。非特权进程有正确权限可写入体系文件,特权进程几乎无所不能。当非特权用户只必要特殊权限时,可使用 Capabilities。Linux 将一些体系级使命分组为 40 多个类别,称为 Capabilities。
常见 Capabilities:
- CAP_CHOWN:允许进程修改文件全部者。
- CAP_NET_ADMIN:对网络设置执行管理使命。
- CAP_NET_BIND_SERVICE:允许绑定低于 1024 的端口。
- CAP_NET_RAW:允许使用 RAW 套接字。
- CAP_SYS_ADMIN:“根”权限(伤害),启用过多功能集。
- CAP_SYS_BOOT:允许重新启动主机。
- CAP_SYS_MODULE:允许加载和卸载内核模块。
- CAP_SYS_TIME:允许进程设置体系时钟。
- CAP_SYS_CHROOT:允许使用 chroot。
- CAP_AUDIT_WRITE:允许写入内核审计日记。
提升工具权限有隐患,可能被恶意用户利用,破坏体系、窃取敏感信息或完全控制整个体系
十三、Kubernetes(k8s)
Kubernetes 通常简称为 K8s,是一个开源的容器编排平台,最初由Google开发,现在由云原生计算基金会(CNCF)维护。
它可以自动化部署、扩展和管理容器化应用步伐,在多个服务器上高效运行容器,确保应用的高可用性和可扩展性。Kubernetes已经成为现代云计算和DevOps实践中不可或缺的一部门。
十四、Kubernetes 的核心概念
核心概念
- Pods:
- Kubernetes中最小的可部署单元。
- 包罗一个或多个紧密相干的容器,共享网络定名空间和存储卷。
- Nodes:
- Kubernetes集群中的工作节点,负责运行Pods。
- Deployments:
- 用于定义Pods和副本数量的高级控制器。
- 支持滚动更新和回滚。
- Services:
- ReplicaSets:
- Namespaces:
- Labels和Selectors:
- ConfigMaps和Secrets:
资源管理
- YAML设置文件:
- 使用YAML格式定义Kubernetes资源,如Deployments和Services。
- 包罗apiVersion、kind、metadata和spec等字段。
- kubectl下令:
- Kubernetes的下令行工具,用于与集群交互。
- 常用下令包罗kubectl get、kubectl create、kubectl delete等。
高级特性
- 水平扩展与滚动更新:
- 通过修改Deployment的副本数量,实现应用步伐的水平扩展。
- 支持无中断的滚动更新和回滚。
- 服务发现与负载均衡:
- 通过Service资源实现服务发现和负载均衡。
- 支持多种类型的Service,如ClusterIP、NodePort和LoadBalancer。
- 高可用性:
- 通过多节点集群、Master节点的高可用设置以及自动故障转移实现高可用性。
- 监控与日记:
- 提供丰富的监控和日记功能,如Heapster、Prometheus和Grafana等监控工具,以及Fluentd、ELK等日记网络和分析工具。
- Ingress:
- 管理外部访问到集群服务的HTTP和HTTPS路由。
实战应用
- 搭建多节点集群:
- 在生产环境中,通常必要搭建多节点的Kubernetes集群以确保高可用性和负载均衡。
- 部署应用步伐:
- 使用YAML设置文件定义Deployment和Service,并通过kubectl下令将其部署到Kubernetes集群中。
- 监控与故障排除:
- 利用Kubernetes提供的监控和日记功能,对集群举行及时监控和故障排除。
十五、安装 Kubernetes
Kubernetes安装方法及使用教程(史上最全,不全不要钱系列)-CSDN博客
一、安装前预备
(一)环境要求
- 利用体系:CentOS7.x - 86_x64 版本较为常用1。
- 硬件设置:内存至少2GB,CPU至少2核1。
- 集群内机器间要能相互通讯,而且可以访问外网(由于必要拉取镜像)1。
- 禁止swap分区:
- 临时关闭:执行 swapoff -a 下令1。
- 永世关闭:编辑 /etc/fstab 文件,将与swap相干的行解释掉,例如使用下令 sed -ri 's/.*swap.*/#&/' /etc/fstab 1。
(二)其他预备工作
- 关闭防火墙:
- 停止防火墙服务:systemctl stop firewalld 。
- 禁止防火墙开机自启:systemctl disable firewalld 1。
- 关闭SELinux:
- 编辑设置文件 /etc/selinux/config,将 enforcing 改为 disabled :sed -i 's/enforcing/disabled/' /etc/selinux/config 。
- 也可临时设置为宽容模式:setenforce 0 1。
- 主机名设置:在 /etc/hosts 文件中添加集群内各主机的主机名与IP对应
- 设置网桥参数:
- 创建 /etc/sysctl.d/k8s.conf 文件,内容如下:
net.bridge.bridge - nf - call - ip6tables = 1
net.bridge.bridge - nf - call - iptables = 1
- 使设置见效:`sysctl --system` [1]()。
- 时间同步:安装 ntpdate 并同步时间,例如执行 yum install ntpdate -y && ntpdate time.windows.com 1。
二、安装方式及步骤
(一)minikube方式(得当当地试用或日常开发)
- 安装minikube
- minikube可以在个人计算机(Windows,macOS和Linux PC)上运行一个单节点Kubernetes集群。在对应的利用体系上下载并安装minikube工具,具体安装步骤可参考minikube官方文档。
- 使用minikube启动Kubernetes集群
- 安装完成后,在下令行执行 minikube start 下令即可启动一个单节点的Kubernetes集群。
(二)kubeadm方式
- 安装kubeadm
- 首先确保体系已经安装了 yum 包管理器。
- 添加Kubernetes的yum源(假如之前没有添加的话)。
- 执行下令 yum install -y kubeadm 举行安装1。
- 初始化Kubernetes集群(在Master节点上利用)
- 执行 kubeadm init 下令,该下令会初始化Kubernetes的Master节点。例如:
kubeadm init \
--apiserver - advertise - address = 192.168.0.100 \
--pod - network - cidr = 10.244.0.0/16
- 初始化成功后,按照提示设置 kubectl 下令的使用权限,例如执行雷同 mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && chown $(id -u)(id -g) $HOME/.kube/config 的下令。
- 将节点加入集群(在Worker节点上利用)
- 在Master节点初始化完成后,会得到一个雷同 kubeadm join 的下令,在每个Worker节点上执行该下令即可将节点加入到Kubernetes集群中。
(三)yum安装方式(yum源中的k8s版本可能较老,不常用)
- 分别安装Kubernetes的各个组件
- 通过 yum 下令逐个安装Kubernetes的组件,例如 yum install -y kubelet kube - proxy kubernetes - master 等组件(具体根据实际需求安装相干组件)2。
- 设置各个组件
- 对于每个组件,都必要举行相应的设置,如修改设置文件中的参数,例如修改 apiserver 的设置文件 /etc/kubernetes/apiserver 中的参数,像 KUBE_API_ADDRESS、KUBE_ETCD_SERVERS 等参数的设置,具体可参考官方文档或相干教程2。
- 设置完成后启动各个组件服务,如执行 systemctl start kube - apiserver kube - schedulerkube - controller - manager 等下令启动Master组件服务,执行 systemctl start kubelet kube - proxy 启动Worker节点相干服务2。
(四)购买公有云平台服务(如阿里云)
- 注册并登录公有云平台账号
- 选择符合的公有云平台(如阿里云),注册账号并登录到平台控制台。
- 选择Kubernetes服务并购买
- 在平台控制台中找到Kubernetes相干服务(一样平常在容器服务或云原生服务等板块下),按照平台提示选择设置(如集群规模、节点规格等)并购买服务。
- 购买完成后,平台会自动创建和设置好Kubernetes集群,用户可以直接使用。
十六、部署应用到 Kubernetes
1. 创建一个 Deployment:“kubectl create deployment nginx --image=nginx”,部署 Nginx 服务器。
2. 查看 Deployment:“kubectl get deployments”。
3. 创建一个 Service:“kubectl expose deployment nginx --port=80 --type=NodePort”,让外部访问 Nginx 服务器。
4. 查看 Service:“kubectl get services”。
十七、访问应用
在 Service 信息中找到 NodePort 的端口号,使用“<Minikube IP>:<NodePort>”在浏览器中访问 Nginx 服务器。
十八、扩展应用
1. 扩展 Deployment 的副本数量:“kubectl scale deployment nginx --replicas=3”。
2. 查看副本数量:“kubectl get deployments”。
十九、更新应用
1. 更新 Deployment 的镜像:“kubectl set image deployment/nginx nginx=new-image:version”。
2. 查看更新进度:“kubectl rollout status deployment/nginx”。
二十,Git
Git是一种分布式版本控制体系,最初由Linus Torvalds开发,用于管理Linux内核的开发。它允许多个开发者同时工作,而不会相互干扰,而且可以或许跟踪每个版本的变革。Git的设计初志是为了更好地管理Linux内核开发,但现在它已经被广泛应用于各种软件开发项目。
主要功能
- 版本控制:Git可以记载每一次代码变动,允许开发者回滚到之前的版本,大概在差别的版本之间切换。
- 分支管理:Git支持创建多个分支,开发者可以在差别的分支上独立开发,末了再合并到主分支。
- 分布式协作:Git的分布式特性使得每个开发者都可以拥有完整的代码堆栈,纵然在没有网络毗连的环境下也能举行开发和提交。
- 冲突解决:当多个开发者对同一段代码举行修改时,Git可以或许自动合并这些修改,并在必要时提示开发者手动解决冲突。
实现原理
Git的核心是一个包罗全部文件版本的对象数据库。每个文件都有一个唯一的哈希值,Git通过这些哈希值来追踪文件的变革。每次提交都会生成一个新的“commit”对象,记载下当前全部文件的状态和哈希值。这些commit对象通过指向它们的父对象来形成一个树状结构,从而记载下整个项目的开发汗青。
使用场景
Git适用于各种规模的软件开发项目,无论是个人项目照旧大型团队互助,Git都能提供强大的支持。特殊是在开源软件开发中,Git几乎是不可或缺的工具
二十一,安装Git
1,CentOS/RHEL下载软件包:
yum install -y epel-release
yum install -y git
2,设置git用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
二十二,Git安全措施
1. 访问控制
Git可以通过访问控制机制来管理用户对堆栈的访问权限。例如,可以设置只读权限和读写权限,确保只有授权的用户可以或许举行代码提交和修改利用。
2. 身份认证
Git支持多种身份认证机制,如基于用户名密码的认证、基于SSH的公钥认证等。在使用Git时,可以设置强密码,而且定期更换密码。同时,也可以对公钥举行管理,保证只有授权的用户可以或许访问堆栈。
3. 传输安全
Git支持通过SSH和HTTPS等协议举行传输。通过使用加密通讯协议,可以保证传输过程中的数据安全。此外,还可以使用TLS/SSL证书来加密传输内容,进一步确保传输的安全性。
4. 数据完整性
Git使用SHA-1哈希算法对每次提交举行唯一标识,确保数据的完整性和防篡改性。假如有人篡改了堆栈的数据,Git可以通过哈希校验来检测到变革,而且提供相应的规复机制。
5. 备份与规复
定期对Git堆栈举行备份,以防止数据丢失或破坏。同时,还可以使用Git自带的版本控制功能来规复汗青版本,以防止意外修改带来的影响。
6. 代码审查
通过举行代码审查,可以发现潜在的安全标题和漏洞,并及时修复。代码审查可以由团队内的其他成员或专门的安全职员来举行,以确保代码的质量和安全性。
GIT实验:常用下令演示
- 初始化堆栈:
- git init:在当前目录下初始化一个新的Git堆栈。
- 克隆堆栈:
- git clone <repository_url>:从指定的URL克隆一个长途堆栈到当地。
- 查看状态:
- git status:查看当前堆栈的状态,包罗哪些文件已修改、哪些文件已暂存等。
- 添加文件到暂存区:
- git add <file_name>:将指定的文件添加到暂存区。
- git add .:将当前目录下全部修改过的文件添加到暂存区。
- 提交更改:
- git commit -m "Commit message":将暂存区的文件提交到当地堆栈,并附上一条提交信息。
- 查看提交汗青:
- git log:查看全部的提交记载。
- git log --oneline:以简洁的方式查看提交记载。
- 切换分支:
- git checkout <branch_name>:切换到指定的分支。
- git checkout -b <new_branch_name>:创建并切换到一个新的分支。
- 合并分支:
- git merge <branch_name>:将指定分支的修改合并到当前分支。
- 解决冲突:
- 当合并分支时出现冲突,可以手动编辑冲突文件,然后使用git add <file_name>和git commit来解决冲突。
- 推送更改到长途堆栈:
- git push origin <branch_name>:将当地分支的修改推送到长途堆栈的指定分支。
- 拉取长途堆栈的更改:
- git pull origin <branch_name>:从长途堆栈拉取指定分支的最新修改并合并到当前分支。
- 查看差异:
- git diff:查看工作区和暂存区之间的差异。
- git diff HEAD -- <file_name>:查看工作区和版本库内里最新版本的区别。
- 重置堆栈:
- git reset --hard <commit_id>:将堆栈重置到指定的提交ID,抛弃之后的全部修改。
- 删除分支:
- git branch -d <branch_name>:删除当地指定的分支。
- git push origin --delete <branch_name>:删除长途指定的分支
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |