虚拟化技术、Docker、K8s笔记总结

发布时间:2024年01月17日

一、虚拟化技术

是一种将物理资源(如服务器、存储设备、网络设备等)抽象、转换和分割成多个逻辑资源的技术。通过虚拟化技术,用户可以在单个物理设备上运行多个相互独立的虚拟环境,从而提高资源的利用率、降低运维成本和提高系统的可扩展性。以下是对虚拟化技术的总结:
类型:虚拟化技术主要分为两大类,即服务器虚拟化和桌面虚拟化。服务器虚拟化是将一个物理服务器分割成多个虚拟机,每个虚拟机可以运行不同的操作系统和应用程序。桌面虚拟化则是将用户的桌面环境虚拟化,使用户能够在任何设备上访问其个人桌面。
优点:
资源利用率高:通过虚拟化技术,可以将物理资源动态分配给多个虚拟机,从而提高资源的利用率。
降低成本:虚拟化技术可以减少硬件投资、降低能源消耗和维护成本。
系统可扩展性强:虚拟化技术可以轻松地添加或删除虚拟机,以满足业务需求的变化。
灵活性高:虚拟化技术允许用户在不同的虚拟环境中运行不同的操作系统和应用程序,提高了系统的灵活性。
高可用性:虚拟化技术可以实现虚拟机的快速迁移,确保业务的连续性。
缺点:
性能损失:虽然虚拟化技术已经取得了很大的进步,但在一些场景下,虚拟机的性能仍然无法与物理机相媲美。
管理复杂性:虚拟化环境下的管理和维护工作相对复杂,需要专门的知识和技能。
安全性问题:虚拟化技术可能会带来新的安全风险,如虚拟机逃逸、虚拟机间攻击等。
虚拟化技术的应用:
云计算:
虚拟化技术是云计算的基础,通过将计算资源、存储资源和网络资源进行虚拟化,实现资源的按需分配和灵活调度。
数据中心整合:通过虚拟化技术,可以将分散在不同地点的服务器、存储设备和网络设备整合到一个统一的平台上,降低运维成本和管理复杂性。
软件测试和开发:虚拟化技术可以为软件开发人员提供一个隔离的环境,以便在同一台物理机上运行多个不同的操作系统和应用程序。
桌面虚拟化:通过桌面虚拟化技术,用户可以在任何设备上访问其个人桌面,实现办公环境的移动性和灵活性。

二、Docker容器的优势主要体现在以下几个方面:

1、轻量级和快速启动:Docker容器共享主机操作系统的内核,无需模拟整个操作系统,因此相比于虚拟机更加轻量级。这使得容器的启动速度非常快,通常只需几秒钟,极大地提高了开发、测试和部署的效率。
2、隔离性和安全性:Docker提供了良好的隔离性,每个容器都有自己的文件系统、网络空间和进程空间,因此容器之间相互隔离,保证了应用程序的稳定性。同时,Docker的安全特性也确保了容器环境的安全性。
3、可移植性和跨平台性:Docker容器可以在不同的操作系统和云服务上运行,而不需要担心环境兼容性的问题。这大大提高了应用程序的可移植性,使其更容易在不同平台上部署和运行。
4、易于扩展和管理:Docker容器提供了简单易用的管理界面,使用户可以轻松地对容器进行扩展和管理。
5、资源占用少,性能优于通过Hypervisor层与内核层的虚拟化。
6、可重复使用和一致性:Docker容器可以在不同的实例上运行相同的程序,这大大简化了应用程序的管理和发布。

常用的Docker容器命令:

1、运行容器:使用docker run命令来创建并启动一个新的容器。例如,docker run -it --name my_container my_image将启动一个名为my_container的交互式容器,该容器基于my_image镜像。
2、列出容器:使用docker ps命令可以列出当前正在运行的容器。添加选项-a可以显示所有容器,包括未运行的;添加选项-f可以根据条件过滤显示的内容。
3、停止容器:可以使用docker stop命令来停止一个正在运行的容器,例如,docker stop my_container将停止my_container容器。
4、查看历史记录:使用docker logs命令可以查看一个容器的历史记录,例如,docker logs my_container将显示my_container容器的历史记录。
5、删除容器:可以使用docker rm命令来删除一个已停止的容器,例如,docker rm my_container将删除my_container容器。
6、查看容器信息:使用docker info命令可以查看Docker容器的相关信息,例如,系统的Docker服务状态、Docker版本和运行中的容器信息等。

三、Kubernetes(通常被称为K8s)的优势主要体现在以下几个方面

首先,K8s可以满足负载均衡和服务自愈的需求。如果某个节点发生故障,K8s能够自动重新创建之前运行在此节点上的pod,并在其他节点上运行,这大大提高了应用的可靠性。其次,K8s支持容器的自动扩缩容,当发现有节点工作不饱和时,K8s会重新分配pod,帮助我们节省开销,高效地利用内存、处理器等资源。此外,K8s也支持滚动升级和版本回滚,这意味着在更新应用程序时,不必停止正在运行的服务。
除此之外,K8s还具有以下优点:它跨平台运行,可在物理机、虚拟机和云平台上进行部署;具备自我修复能力,支持容器故障后自动重启、节点故障后重新调度容器到其他可用节点、健康状态检查失败后关闭容器并重新创建等自我修复机制;并且,K8s还提供了服务发现和负载均衡功能。
最后,值得一提的是,K8s支持多种数据存储系统,包括节点本地存储、网络存储系统等,满足了各种存储需求。同时,它还支持密钥和配置管理,对于敏感数据如用户名和密码、令牌、密钥等信息,Secret组件提供了足够的安全保障。因此,无论是从提高运维效率、优化资源利用,还是保障应用的可靠性和安全性等方面来看,Kubernetes都具有显著的优势。

Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。

常用的K8s命令:

1、kubectl get:获取资源列表。例如,kubectl get pods可以列出所有Pod。
2、kubectl describe:显示资源的详细信息。例如,kubectl describe pod my-pod可以显示my-pod Pod的详细信息。
3、kubectl create:创建资源。例如,kubectl create deployment my-deployment --image=nginx:latest可以创建一个名为my-deployment的 ? ? ? ? ? ? ? ? Deployment,使用最新版本的Nginx镜像。
4、kubectl delete:删除资源。例如,kubectl delete deployment my-deployment可以删除名为my-deployment的Deployment。
5、kubectl apply:应用配置文件或目录中定义的资源。例如,kubectl apply -f my-deployment.yaml可以应用my-deployment.yaml文件中定义的资源。
6、kubectl edit:编辑资源的配置。例如,kubectl edit deployment my-deployment可以编辑名为my-deployment的Deployment的配置。
7、kubectl logs:查看容器日志。例如,kubectl logs my-pod可以查看名为my-pod的Pod中的容器日志。
8、kubectl exec:在容器内执行命令。例如,kubectl exec my-pod -- ls /app可以在名为my-pod的Pod内的/app目录下执行ls命令。
9、kubectl port-forward:将本地端口转发到集群中的服务。例如,kubectl port-forward service/my-service 8080:80可以将名为my-service的服务的端口80映射到本地的8080端口上。

文章来源:https://blog.csdn.net/m0_71071763/article/details/135657686
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。