“快速搭建云环境,企业 IT 架构革新秘笈!”

打印 上一主题 下一主题

主题 1830|帖子 1830|积分 5490

1. 什么是云技能?

云技能是指通过网络提供盘算资源和服务的技能集合。最新一代的基础设施称为“云”,它使得盘算资源(如服务器、存储、网络、数据库等)能够按需提供,用户可以通过互联网访问和管理这些资源,而不需要自行部署和维护物理硬件。云技能的核心是捏造化、分布式盘算、主动化管理和弹性扩展。
2. 云服务要满足什么需求?

云服务需要满足以下核心需求:


  • 架构稳固性:云平台必须能够确保架构的稳固性和高可用性,避免任何中断对业务运行造成影响。
  • 快速扩展:云服务必须支持快速的资源扩展或缩减,以应对不断变革的业务需求。这包括支持主动扩展和弹性伸缩的能力。
3. 公有云服务器商有哪些?

常见的公有云服务商包括:


  • AWS(Amazon Web Services):全球领先的云服务提供商,提供全面的云盘算办理方案。
  • Azure:微软的云平台,具有强盛的企业级服务,特殊是在与Windows Server和其他微软产品的集成方面。
  • Google Cloud:谷歌提供的云平台,以大数据、人工智能和机器学习服务见长。
  • 华为云:华为提供的公有云服务,主要服务中国市场,也向全球扩展。
  • 阿里云:阿里巴巴的云盘算平台,主要面向亚洲及全球市场,拥有强盛的电商和大数据能力。
4. 怎么对云进行分类?

云服务通常按照服务范例和交付模式进行分类,主要包括以下三种模型:


  • IaaS(基础设施即服务)
    关键定义:提供捏造化的盘算资源,如捏造机、存储和网络。用户可以在此基础上构建本身的应用和服务。
    示例:AWS EC2、Azure捏造机、阿里云ECS。
  • PaaS(平台即服务)
    关键定义:提供完备的开发、运行和管理应用的环境,用户无需关注底层的硬件和操作体系,只需关注应用开发
    示例:Google App Engine、Azure App Service。
  • SaaS(软件即服务)
    关键定义:提供通过互联网访问的软件应用,用户可以直接使用,无需安装和维护。
    示例:Google Workspace、Microsoft 365、Salesforce。
5. 云架构

云架构是指为支持云盘算服务的设计和布局。它通常由多个层级的组件构成,以实现资源的管理、调度、扩展和高可用性。
捏造化定义

捏造化技能允许将物理硬件资源(如服务器、存储和网络设备)分割成多个捏造资源,以优化资源使用率并节省成本。通过捏造化,单台物理机器可以承载多个捏造机,避免了资源浪费。
云架构设计的关键内容


  • 组件选择
    云架构中选择符合的组件至关重要,尤其是云原生组件(如容器、微服务架构)可以提拔体系的机动性和可扩展性。
  • 集成与部署
    云平台要求持续集成(CI)和持续交付(CD)流程的支持,以保证代码在不同环境中的快速和可靠部署。
  • 弹性可靠性(故障转移)
    云架构的可靠性需要确保即使部分组件发生故障,服务仍然能够平稳运行。弹性架构能够实现故障转移,主动规复服务。
  • 负载平衡与控制
    在云架构中,负载平衡是确保高效使用资源的关键。平衡控制可以根据负载动态调整资源分配,避免单点过载。
云设计的模式


  • 微服务架构
    微服务架构将应用拆分为一系列小型、独立的服务,每个服务负责一个特定的功能,并通过API进行通信。如许做有助于提高可维护性、可扩展性和机动性。
  • 零信托架构(令牌)
    零信托架构强调每次访问都需要验证身份,无论用户在内网还是外网。通过令牌机制(如JWT)进行身份验证,减少潜在的安全漏洞。
6. 云技能涉及的安全控制都有哪些?

云技能中的安全控制至关重要,涉及到多个层次的安全性保障,包括网络安全、身份管理、数据保护等。以下是云环境中常见的安全控制方法:
网络控制

网络安满是确保数据传输和服务访问安全的基础。在云环境中,常见的网络攻击方式包括:


  • 攻击JWT(JSON Web Token)
    JWT是一种用于身份验证和信息交换的轻量级方式,广泛用于API认证。但它也可能面临伪造和暗码破解的威胁:

    • 伪造攻击:攻击者可能通过修改JWT中的有效负载(Payload)或签名来伪造有效的令牌。避免此类攻击的关键是使用强加密算法来签名JWT(如使用HS256、RS256等),并确保密钥管理的安全。
    • 破解暗码:如果JWT使用不安全的算法(如HS256)而且密钥较弱,攻击者可能通过暴力破解或字典攻击猜测密钥,从而解密JWT。为了防止这类标题,保举使用更强的加密算法,并定期更换密钥。

身份管理

身份管理在云技能中尤为重要,它确保只有经过授权的用户可以访问云资源。常见的身份管理方式包括:


  • Active Directory(AD)
    Active Directory是一种基于Windows的身份管理体系,它允许管理员集中管理和控制云环境中的用户、组和设备。AD常常与AWS、Azure等云平台集成,提供同一的身份验证和访问控制。
  • LDAP(轻量级目录访问协议)
    LDAP是一种开放标准协议,常用于在云环境中进行身份验证和目录服务管理。通过LDAP,管理员可以管理用户的权限、组和其他身份信息。
  • AWS IAM(Identity and Access Management)
    AWS IAM是AWS云服务提供的一种身份和访问管理工具,允许管理员定义谁可以访问哪些资源以及可以实行哪些操作。通过IAM,管理员可以为用户分配特定的权限,并细化资源访问控制。
  • Google同盟认证(Google Identity Platform)
    Google的身份认证平台提供单一登录(SSO)和OAuth 2.0协议的支持,允许用户通过Google账号访问云应用。它简化了身份管理过程,并加强了安全性,特殊是对于跨平台的云服务。
7. 云和容器

容器化是云盘算中的一项重要技能,它提供了一种轻量级的捏造化方法,使得应用能够在各种环境中快速、可靠地运行。容器化技能使得应用和其依赖的环境一起打包,办理了环境不一致的标题。
什么是容器化?

容器化是一种将应用及其全部依赖打包成一个标准化的、可移植的容器格式的技能。容器与传统的捏造机不同,它们共享操作体系的内核,而不是每个容器都运行一个完备的操作体系,这使得容器启动速度快、资源占用低。
在Ubuntu/Kali上天生CentOS7/Apache容器

以下是如何在Ubuntu或Kali Linux上使用Docker天生CentOS 7容器并配置Apache服务的步调:
1. 安装Docker

首先需要安装Docker。可以使用以下命令在Ubuntu或Kali上安装Docker:
  1. sudo apt-get update
  2. sudo apt-get install docker.io
复制代码

安装完成后,使用以下命令检查Docker是否安装并启动:
  1. sudo service docker start    # 启动Docker服务
  2. sudo docker ps              # 查看正在运行的容器
复制代码
2. 配置Docker镜像源

由于某些地区访问Docker Hub较慢,发起使用国内的镜像源,如阿里云或网易云镜像源。可以通过编辑Docker配置文件来修改镜像源:
  1. sudo vim /etc/docker/daemon.json
复制代码
在文件中添加以下内容:
  1. {
  2.   registry-mirrors":[
  3. "https://5tqw56kt.mirror.aliyuncs.com",
  4. "https://dockerhpcloud.cloud",
  5. "https://dockerm.daocloud.io",
  6. "https://docker.lpanel.live",
  7. "http://mirrors.ustc.edu.cn",
  8. "https://docker.chenby.cn",
  9. "https://docker.ckyl.me",
  10. "http://mirrorazure.cn",
  11. "https://hub.rat.dev"
  12. ]
  13. }
复制代码
生存并退出后,重启Docker服务:
  1. sudo systemctl restart docker
复制代码
3. 拉取CentOS 7镜像

使用以下命令从Docker Hub拉取CentOS 7镜像:
  1. sudo docker pull centos:7
复制代码
4. 运行CentOS 7容器

可以通过以下命令启动一个基于CentOS 7的容器:
  1. sudo docker run -it --name my_centos7 centos:7 /bin/bash
复制代码
或者使用以下命令以后台模式运行容器:
  1. sudo docker run -d --name my_centos7 centos:7 /bin/bash
复制代码


  • -it:启动容器时以交互模式运行。
  • --name my_centos7:为容器指定名称。
  • /bin/bash:指定容器启动后实行的命令(这里是进入bash shell)。

5. 重新进入Docker容器

如果退出容器后想要重新进入,可以使用以下命令:
  1. sudo docker start my_centos7             # 启动容器
  2. sudo docker exec -it my_centos7 bash    # 进入容器
复制代码
6. 创建Apache容器并在后台运行

可以使用以下命令拉取Apache HTTP服务的官方镜像:
  1. sudo docker pull httpd
复制代码
然后创建并启动一个Apache容器:
  1. sudo docker container run -d --rm -p 8080:80 httpd
复制代码


  • -d:使容器在后台运行。
  • --rm:容器停止后主动删除。
  • -p 8080:80:将宿主机的8080端口映射到容器的80端口。

通过以下命令验证是否乐成运行:
  1. curl localhost:8080
复制代码

Docker常用命令详解

1. 检察全部正在运行的容器

  1. docker container ls
复制代码
这个命令会列出全部正在运行的容器。它将显示容器ID、名称、状态、端口映射和映像等信息。


  • -a 或 --all:显示全部容器(包括停止的容器),默认环境下只显示正在运行的容器。

2. 检察全部已创建的容器(包括已停止的容器)

  1. docker ps -a
复制代码
与docker container ls
类似,docker ps -a
命令显示全部容器,包括已经停止的容器。停止的容器通常会显示为“Exited”,可以检察容器的停止状态以及退出代码。

3. 检察特定容器的历程信息

  1. docker top <container_name_or_id>
复制代码
这个命令允许你检察指定容器中正在运行的历程。它会显示容器内的全部历程信息,包括PID、运行时间、使用的资源等。


  • <container_name_or_id>:容器的名称或ID,可以通过docker ps命令获取。

4. 登录后台运行的容器

  1. docker exec -it <container_name_or_id> /bin/bash
复制代码
如果容器在后台运行,而且你需要进入容器进行操作或排查标题,可以使用docker exec命令。通过该命令,你可以打开一个交互式终端,进入容器的shell环境。


  • -it:使容器的终端成为交互式终端(-i:保持STDIN流,-t:分配伪终端)。
  • /bin/bash:指定在容器中运行的命令,这里是启动Bash shell。

5. 停止容器

  1. docker container stop <container_name_or_id>
复制代码
该命令用于停止正在运行的容器。停止容器时,Docker会发送SIGTERM信号请求容器优雅关闭。如果容器未在一段时间内响应,Docker会发送SIGKILL信号强制终止容器。


  • <container_name_or_id>:容器的名称或ID。
6. 启动已停止的容器

  1. docker container start <container_name_or_id>
复制代码
当一个容器被停止后,你可以使用这个命令重新启动该容器。启动时,容器将规复到停止前的状态。
7. 启动并挂载宿主机目录到容器

  1. 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/目录。容器中的Apache服务将使用这个目录作为其Web根目录。
8. 侦听宿主机80端口

  1. docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
复制代码
与上一个命令类似,但在这里我们使用--network host标记来使容器使用宿主机的网络接口,而不使用Docker的捏造网络。如许,容器将直接侦听宿主机的端口,而不需要进行端口映射。


  • --network host:将容器的网络配置为宿主机的网络配置,这对于一些需要低耽误或高带宽的应用非常有用。
  • -v:挂载宿主机的目录到容器,确保容器的Apache服务可以访问宿主机上的网站根目录。

9. 删除容器

  1. docker container rm <container_name_or_id>
复制代码
该命令用于删除已经停止的容器。可以使用docker ps -a
查找容器的ID或名称。需要留意,容器必须是停止状态才能删除。


  • <container_name_or_id>:容器的名称或ID。
10. 检察容器的日志

  1. docker logs <container_name_or_id>
复制代码
这个命令可以检察容器的日志输出,通常用于调试和排查容器运行中的标题。你可以看到容器的标准输出和错误信息。


  • <container_name_or_id>:容器的名称或ID。
11. 检察Docker镜像列表

  1. docker images
复制代码
该命令列出当地Docker环境中全部已下载的镜像。它会显示镜像的仓库名、标签、镜像ID、创建时间和巨细等信息。

12. 删除镜像

  1. docker rmi <image_name_or_id>
复制代码
该命令用于删除当地Docker镜像。可以删除不再使用或暂时下载的镜像。删除镜像时,如果镜像正在被某个容器使用,将无法删除。


  • <image_name_or_id>:镜像的名称或ID。
13. 检察Docker容器的详细信息

  1. docker inspect <container_name_or_id>
复制代码
该命令提供关于容器的详细信息,包括网络设置、挂载卷、资源限制等。输出结果为JSON格式。


  • <container_name_or_id>:容器的名称或ID。


容器技能深入解析

容器化技能已成为现代开发运维的核心,许多云平台和企业都广泛使用它来提高应用的可移植性、可扩展性和开发效率。本节将深入探讨容器的本质、与捏造机的区别、关键的Linux命令和技能(如Chroot、命名空间、Capabilities等),以及与Kubernetes和Git干系的技能。
8. 容器的真相是什么?

容器到底是什么?

容器是一种轻量级、可移植的捏造化技能,允许将应用及其依赖(如库、配置文件、环境变量等)打包到一个独立的容器中,以便在任何环境中以相同的方式运行。容器与传统捏造机(VM)不同,它不需要完备的操作体系,而是通过共享宿主机的操作体系内核来运行应用。
容器和捏造机有什么区别?


  • 资源占用

    • 容器是基于宿主机内核的,资源斲丧低,启动速度快。
    • 捏造机需要一个完备的操作体系内核,每个捏造机都需要分配操作体系资源,因此启动较慢且占用更多资源。

  • 隔离性

    • 容器之间的隔离程度较低,它们共享宿主机的操作体系内核。
    • 捏造机具有更强的隔离性,因为每个捏造机都运行一个独立的操作体系。

  • 性能

    • 容器由于没有操作体系开销,因此性能更接近于宿主机。
    • 捏造机因需要捏造化硬件和操作体系,性能稍差。

  • 应用场景

    • 容器实用于微服务架构、持续集成/持续交付(CI/CD)等场景。
    • 捏造机实用于需要完全独立环境的场景,如测试和运行多个操作体系。

什么是Chroot?

chroot(change root)是一种将历程的根目录更改为指定目录的技能。它使得历程只能访问指定目录树,从而实现一定程度的沙箱隔离。chroot通常用于容器化技能的早期实现,它能够为历程提供隔离的实行环境。
如何使用Chroot:

  1. sudo chroot /home/user/roots/min/ /bin/bash
复制代码


  • sudo chroot /home/user/roots/min/:将当前的根目录更改为/home/user/roots/min/。
  • /bin/bash:在新的根目录环境中启动bash shell。
  1. ps aux  # 查看进程信息,确保我们在正确的容器内
复制代码
什么是命名空间?

命名空间(Namespace)是Linux内核提供的资源隔离技能,用于将体系资源(如历程、网络、文件体系等)在不同的历程之间进行隔离。每个容器都可以运行在不同的命名空间内,确保它们之间互不干扰。
命名空间的种类:


  • PID命名空间:隔离历程ID,使得容器内的历程与宿主机历程互不干扰。
  • Mount命名空间:允许容器挂载独立的文件体系,使得容器内的文件体系与宿主机分离。
  • Network命名空间:为容器提供独立的网络栈,使得容器内的网络配置与宿主机隔离。
  • IPC命名空间:隔离历程间通信,使得容器内的IPC资源与宿主机资源不互通。
  • UTS命名空间:隔离主机名和域名,使得容器内的主机名与宿主机不同。
  • User命名空间:隔离用户ID和组ID,使得容器内的用户ID与宿主机的ID不同。
  • Cgroup命名空间:限制和分配容器的资源(如CPU、内存等)。
如何使用命名空间:

  1. echo $$
  2. sudo unshare --fork --pid --mount /bin/bash
  3. ps aux   # 查看PID命名空间中的进程
复制代码


  • --fork:分叉新的历程。
  • --pid:启用PID命名空间。
  • --mount:启用挂载命名空间。
  1. mount -t proc none /proc  # 挂载proc文件系统
复制代码
其他命名空间命令:

  1. sudo unshare -fpmun --root /home/user/roots/ --mount-proc /bin/bash  # 使用多个命名空间
  2. ip a  # 查看容器内的网络配置
复制代码
什么是Capabilities?

Linux Capabilities是内核对历程权限的细粒度控制。通过Capabilities,体系可以将特定的权限授予历程,而无需给历程完备的超等用户权限(root权限)。这有助于提高体系安全性,减少潜在的权限提拔风险。
提权隐患示例:

通过setcap命令,你可以为历程设置特定的能力,从而实现权限提拔。比方:
  1. sudo cp /usr/bin/nmap /usr/bin/nmap-cap
  2. sudo setcap cap_net_raw+eip /usr/bin/nmap-cap
  3. nmap-cap --privileged 127.0.0.1 -sS  # 执行特权扫描
复制代码
在上面的示例中,cap_net_raw+eip为nmap-cap历程添加了RAW套接字的权限,使得nmap可以实行特权操作。
常见的Capabilities包括:



  • CAP_CHOWN:允许历程修改文件全部者。
  • CAP_NET_ADMIN:允许历程对网络配置进行管理(如IP地址、防火墙等)。
  • CAP_NET_BIND_SERVICE:允许历程绑定低于1024的端口。
  • CAP_NET_RAW:允许历程使用RAW套接字进行网络操作。
10. 如何安装和使用kubectl?

kubectl是Kubernetes集群的命令行工具,它用于与Kubernetes集群交互,管理集群中的资源和配置。掌握kubectl命令是管理和操作Kubernetes集群的基础。
安装kubectl

在Ubuntu等基于Debian的体系中,可以使用以下命令安装kubectl:
  1. sudo apt-get update
  2. sudo apt-get install -y kubectl
  3. kubectl version  # 检查kubectl版本
复制代码
如果需要安装特定版本的kubectl,可以参考官方文档获取更多信息。
常用kubectl命令


  • 检察集群信息
    1. kubectl cluster-info  # 显示Kubernetes集群的信息
    复制代码
  • 检察节点
    1. kubectl get nodes  # 列出所有节点
    复制代码
  • 检察Pods
    1. kubectl get pods  # 列出所有Pods
    复制代码
  • 创建资源
    1. kubectl apply -f <资源文件>.yaml  # 使用yaml文件创建资源
    复制代码
  • 删除资源
    1. kubectl delete pod <pod_name>  # 删除指定Pod
    复制代码
  • 检察Pod的详细信息
    1. kubectl describe pod <pod_name>  # 显示指定Pod的详细信息
    复制代码
  • 检察Pod的日志
    1. kubectl logs <pod_name>  # 查看Pod日志
    复制代码
  • 实行命令到Pod内
    1. kubectl exec -it <pod_name> -- /bin/bash  # 进入Pod内并打开bash
    复制代码
启动Minikube并验证Kubernetes集群

Minikube是一个用于在当地运行单节点Kubernetes集群的工具,适合开发和学习Kubernetes的使用。
安装Minikube

  1. curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
  2. chmod +x minikube-linux-amd64
  3. sudo mv minikube-linux-amd64 /usr/local/bin/minikube
复制代码
启动Minikube

  1. minikube start  # 启动本地Kubernetes集群
  2. minikube status  # 查看Minikube状态,确认集群是否正常运行
复制代码
11. 什么是Git?

Git是一款开源的分布式版本控制体系,能够有效管理源代码的修改汗青。它广泛应用于团队协作、开源项目管理和版本控制,支持强盛的分支管理和代码合并功能。
安装Git

在Ubuntu体系上,可以通过以下命令安装Git:
  1. sudo apt-get update
  2. sudo apt-get install git
  3. git --version  # 检查Git版本
复制代码
如果需要安装特定版本,可以根据Git官方文档获取更多信息。
常用Git命令


  • 初始化仓库
    初始化一个新的Git仓库,并将当前目录变为版本管理的根目录。
    1. git init  # 初始化一个新的Git仓库
    复制代码
  • 检察仓库状态
    显示当前工作目录的状态,包括哪些文件被修改、哪些文件在暂存区等。
    1. git status  # 查看当前仓库的状态
    复制代码
  • 添加文件到暂存区
    将文件添加到暂存区,准备提交。
    1. git add <文件名>  # 添加指定文件
    2. git add .  # 添加当前目录下的所有变更
    复制代码
  • 提交更改
    将暂存区的更改提交到版本库中,附带提交说明。
    1. git commit -m "提交说明"  # 提交更改
    复制代码
  • 检察提交汗青
    检察当前仓库的全部提交汗青记录。
    1. git log  # 查看提交历史
    复制代码
  • 检察某个文件的提交汗青
    检察指定文件的提交汗青记录。
    1. git log <文件名>  # 查看某个文件的提交历史
    复制代码
  • 分支管理

    • 创建新分支
      1. git branch <分支名>  # 创建一个新的分支
      复制代码
    • 切换分支
      1. git checkout <分支名>  # 切换到指定分支
      复制代码
    • 创建并切换分支
      1. git checkout -b <分支名>  # 创建新分支并切换
      复制代码
    • 删除分支
      1. git branch -d <分支名>  # 删除本地分支
      复制代码

  • 合并分支
    将一个分支的更改合并到当前分支。
    1. git merge <分支名>  # 合并指定分支
    复制代码
  • 添加长途仓库
    将长途仓库与当地仓库关联。
    1. git remote add <远程仓库名> <远程仓库地址>
    复制代码
  • 推送更改到长途仓库
    将当地仓库的提交推送到长途仓库。
    1. git push origin <分支名>  # 推送到远程仓库
    复制代码
  • 拉取长途仓库的更改
    从长途仓库获取最新的更改,并合并到当地。
    1. git pull origin <分支名>  # 拉取远程仓库的更改
    复制代码
  • 检察长途仓库
    检察长途仓库的信息。
    1. git remote -v  # 查看远程仓库的URL
    复制代码
  • 克隆长途仓库
    克隆一个长途仓库到当地。
    1. git clone <远程仓库地址>  # 克隆远程仓库到本地
    复制代码
处理Git辩论

在进行合并操作时,如果不同分支对相同文件做出了辩论修改,Git会提示辩论。你需要手动办理辩论后,再进行提交。


  • 检察辩论文件
    1. git status  # 查看哪些文件存在冲突
    复制代码
  • 编辑辩论文件
    打开辩论文件,办理辩论,并删除辩论标记。
  • 标记辩论已办理
    1. git add <冲突文件>  # 标记冲突文件已解决
    2. git commit  # 提交解决冲突后的更改
    复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表