云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式API。
容器技术是云原生生态系统的核心,它通过简化开发人员的操作极大地提升了开发速度和质量。通过使用容器(例如Docker),团队可以指定其系统依赖关系,同时提供统一通用的执行层,该层使基础架构团队能够操作单个基础设施,例如容器编排工具(如Kubernetes)。
docker
Harbor
docker-compose
portainer
kubernetes
helm
kuboard
ansible
jumpserver
WebVirtMgr
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器)。
更高效的利用系统资源
更快速的启动时间
一致的运行环境
持续支付和部署
更轻松的迁移
更轻松的维护和拓展
[root@node ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8408fdf0dc10 openproject/community:12 "./docker/prod/entry…" 2 hours ago Up 2 hours 5432/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp compose_proxy_1
0924fcec04ff openproject/community:12 "./docker/prod/entry…" 2 hours ago Up 2 hours 80/tcp, 5432/tcp compose_worker_1
b5103772dd9c openproject/community:12 "./docker/prod/entry…" 2 hours ago Up 2 hours (healthy) 80/tcp, 5432/tcp compose_web_1
1.方便快捷,大量节省了部署应用的时间,方便快捷部署应用服务,以前需要几个小时部署的应用,现在只需几分钟使用Docker快速完成。
2.使用灵活,可以使用Docker快速部署测试环境,也可以运行工具类容器免去安装工具烦恼。
3.节省资源,容器是轻量级的,可以节省大量计算机资源,一台主机以前也许只能安装几个虚拟机,但是可以安装几十个容器。
4.提升效率,当部署一个服务时,有时需要多个应用支持,还有环境的配置,docker可以通过docker-compose快速将部署业务。
5.管理方便,可以通过各种容器管理平台,例如k8s,可以有效管理容器。
Harbor 是一个用于存储和分发Docker镜像的企业级Registry服务器。
用户与 Docker 镜像仓库通过"项目"进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
镜像可以在多个 Registry 实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
Harbor 可以集成企业内部已有的 AD/LDAP,用于鉴权认证管理。
所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
RESTful API 提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。
提供在线和离线两种安装工具,也可以安装到 vSphere 平台(OVA 方式)虚拟设备。
docker tag nginx:latest 192.168.3.250:8090/library/nginx:5.0 # 将本地镜像打上标签
docker push 192.168.3.250:8090/library/nginx:5.0 # 上传镜像到harbor服务器
1.部署简单,可以使用华为云等云服务器快速部署harbor仓库。
2.界面美观,harbor界面简洁美观,使用简单易上手。
3.镜像存放,可以作为个人私有docker镜像的存放中心,方便管理。
docker-compose 是用于定义和运行多容器 Docker 应用程序的工具。我们可以通过docker-compose,使用 YAML文件来配置应用程序需要的所有服务。
[root@docker filemanager]# cat docker-compose.yaml
version: '3.5'
services:
filemanager:
image: smokserwis/filemanager
restart: always
container_name: filemanager
volumes:
- /data/filemanager/files:/var/www/mount
ports:
- 8011:80
networks:
- files
networks:
files:
[root@docker filemanager]# docker-compose up -d
Creating network "filemanager_files" with the default driver
Creating filemanager ... done
1.docker-compose非常适合组合使用多个容器进行开发的场景,同时定义多个容器来组成一个服务,来满足测试开发需求。
2.使用方便,对于学习playbook的人来说,docker-compose易简单上手。
3.提高了效率,不用启动一个复杂的容器时,运行一段超长繁琐的命令,只需一个docker-compose.yaml就能搞定。
Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,
基本能满足中小型单位对容器管理的全部需求。
支持容器管理、镜像管理。
轻量级,消耗系统资源少。
基于docker api,安全性高,可指定docker api端口,支持TLS证书认证。
支持权限分配、集群。
Portainer 提供了图形化界面,用于方便地管理Docker环境
1.web界面友好,适合新手小白上手。
2.操作简单,docker命令的操作基本都可以在Portainer的web界面操作,方便快捷。
3.容器负载查看,可以查看每个容器的资源负载情况,图形化显示,这是个人最喜欢使用的功能。
4.容器日志,对于容器故障,在portainer查看日志一目了然。
[root@master pvc]# cat mysql.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql001
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mysql
strategy: {}
template:
metadata:
labels:
app: mysql
spec:
volumes:
- name: db
persistentVolumeClaim:
claimName: pvc-mysql
containers:
- image: mysql:5.7
name: mysql
ports:
- name: mysql
containerPort: 3306
protocol: TCP
env:
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_DATABASE
value: data
resources:
requests:
cpu: 0.1
memory: 128Mi
limits:
cpu: 0.4
memory: 512Mi
---
apiVersion: v1
kind: Service
#元数据
metadata:
creationTimestamp: null
labels:
app: mysql
name: mysql-svc
#描述部分
spec:
ports:
- name: web-port
port: 3306
protocol: TCP
targetPort: 3306
nodePort: 30066
selector:
app: mysql
type: NodePort
[root@master pvc]# kubectl get pod
NAME READY STATUS RESTARTS AGE
my-tomcat9 1/1 Running 3 (28m ago) 18d
mysql001-595bc8cb5c-snbkj 1/1 Running 0 65s
nfs-client-provisioner-5bbb6fc745-ncdht 1/1 Running 2 (23m ago) 11h
[root@master pvc]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18d
mysql-svc NodePort 10.96.1.254 <none> 3306:30066/TCP 3m16s
1.作为云原生时代的IT人员,k8s是提升自我的重要技术,实现自我价值。
2.k8s的功能强大,生态也很完整,有着大量工具和插件支持,满足生产和测试开发环境需求。
3.通过对k8s集群的学习,可以了解到k8s的强大之处,使得以前部署复杂的生产服务架构,通过k8s部署变得更加简单。
Helm是Kubernetes的包管理器,类似于Python的pip centos的yum,主要用来管理 Charts。
helm repo add stable https://apphub.aliyuncs.com/stable # 添加仓库源
helm repo list # 列出所有仓库源
helm search repo weave-scope # 搜索chart包
helm install scope stable/weave-scope #部署应用
helm uninstall scope # 卸载应用
helm包管理器用于简化操作系统中应用程序的安装、升级、恢复和删除过程。这些应用程序以包为单元定义,包含目标软件及其依赖项的元数据。
1.将一个复杂的k8s的应用程序,通过包管理的方式,大大简化了部署流程,方便了维护和使用。
2.各种helm应用仓库中心,为我们更加方便快捷部署应用。
Kuboard类似于 Kubernetes Dashboard,是一款轻量级产品,也是kubernetes 多集群管理工具。
1.kuboard是一款轻量级k8s集群管理平台,部署简单,占用资源少。
2.界面简洁美观,功能强大,可以对k8s的资源对象有效管理。
3.方便对k8s集群运维,提高了工作效率。
Ansible是一个IT自动化工具。 它能配置系统、部署软件、编排更复杂的IT任务,如连续部署或零停机时间滚动更新。
Ansible融合了众多老牌运维工具的优点,基本上pubbet和saltsatck能实现的功能,ansible都可以实现。
Ansible是一个轻量级的工具,无需在客户端上安装agent,更新时,只需要在操作机上进行一次更新即可。
批量任务执行可以写成脚本,而且不用分发到远程就可以执行。
Ansible是一致性,高可靠性,安全性设计的轻量级自动化工具。
使用python编写,维护更加简单。
[root@k8s-master ~]# ansible all -m ping
192.168.3.203 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
192.168.3.202 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
ansible-playbook yum_repository.yml # 批量部署各节点的yum仓库
1.高效的自动化运维工具,可以大大减轻工作量,提高工作效率。
2.易上手的playbook,有着极大的灵活性,满足日常工作需求。
3.轻量级,客户端免安装,使用方便快捷。
Jumpserver是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent,支持再次开发 实现了跳板机基本功能,认证、授权、审计 集成了Ansible。
1.JumpServer 是全球首款开源的堡垒机,使用 GNU GPL v3.0 开源协议,是符合 4A 规范的运维安全审计系统。
2.JumpServer 使用 Python / Django 为主进行开发,遵循 Web 2.0 规范,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。
3.JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制。
1.Jumpserver界面美观,布局合理,日常操作非常快捷。
2.Jumpserver配合ansible使用,可以对各服务器节点进行有效管理。
3.通过web界面下发ansible命令,直观显示执行结果。
WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。
WebVirtMgr采用几乎纯Python开发,其前端是基于Python的Django,后端是基于Libvirt的Python接口,将日常kvm的管理操作变的更加的可视化。
操作简单,易于使用 、通过libvirt的API接口对kvm进行管理、提供对虚拟机生命周期管理。
宿主机管理支持以下功能、CPU利用率、内存利用率、网络资源池管理、存储资源池管理、虚拟机镜像、虚拟机克隆、快照管理、日志管理、虚机迁移、虚拟机管理支持以下功能、CPU利用率、内存利用率、光盘管理、关/开/暂停虚拟机、安装虚拟机、VNC console连接、创建快照。
1.为KVM虚拟机提供了一个简洁高效的web界面,对于KVM虚拟机的日常使用变得十分方便。
2.可以通过VNC直接连接KVM虚拟机,进行配置工作。
3.可以有效监控虚拟机资源使用情况。
4.可以作为个人开发测试的一个虚拟化平台,安装多个KVM虚拟机,部署kubernetes集群环境。
5.占用资源少,节省机器资源,提高运行效率。