云原生之容器管理工具Portainer

1. 简介        

        前面文章我们讲Docker、Docker Compose和Docker Swarm都是在Linux系统上手工命令行去操作,在第一次安装的时候可以命令行,以后运维和CICD流程操作中,如果还要命令行去各个节点操作,操作就麻烦了,工作效率就低了,我们需要有一个集中管理的系统,而且是web界面化的管理系统,而且是开源的,Portainer正是这样的系统。

        Portainer是一款开源的容器管理工具系统,旨在简化Docker容器和Kubernetes集群的管理。通过提供一个直观的Web界面,Portainer可以帮助用户轻松地创建、管理和维护容器,而无需使用复杂的命令行工具。

        Portainer系统开源代码托管在github上:https://github.com/portainer/portainer。

        Portainer提供两个版本:社区版和企业版。

        Portainer Community Edition is a lightweight service delivery platform for containerized applications that can be used to manage Docker, Swarm, Kubernetes and ACI environments. It is designed to be as simple to deploy as it is to use. The application allows you to manage all your orchestrator resources (containers, images, volumes, networks and more) through a ‘smart’ GUI and/or an extensive API.

        Portainer consists of a single container that can run on any cluster. It can be deployed as a Linux container or a Windows native container.

        Portainer Business Edition builds on the open-source base and includes a range of advanced features and functions (like RBAC and Support) that are specific to the needs of business users.

2. 架构

        Portainer由两个元素组成:Portainer服务器和Portainer代理。两者都作为轻量级容器在现有的容器化基础设施上运行,如Docker Swarm集群上运行。Portainer代理应该部署到集群中的每个节点,并配置为向Portainer Server容器报告。

        单个Portainer服务器将接受来自任意数量Portainer代理的连接,从而能够从一个集中式接口管理多个集群。为此,PortainerServer容器需要数据持久性。Portainer代理是无状态的,数据被运回Portainer服务器容器。

3. 安装

        这里单讲社区版的安装,Portainer社区版提供三种安装方式:Docker standalone、Docker Swarm、Kubernetes。官网文档:Install Portainer CE - Portainer Documentation。

        其实安装都及其简单,我的开发环境安装采用Docker Swarm方式,这里简述一下。我们采用docker-compose.yml来编排安装最方便了:

version: '3.2'

services:
  agent:
    image: portainer/agent:2.0.0
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ce:2.0.0
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9000:9000"
      - "8000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

        我的Docker版本是:

$ docker version
Client: Docker Engine - Community
 Version:           20.10.16
 API version:       1.41
 Go version:        go1.17.10
 

Server: Docker Engine - Community
 Engine:
  Version:          20.10.16
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.10
 containerd:
  Version:          1.6.4

        安装执行一行命令即可:

docker stack deploy -c docker-compose.yml portainer

        可以在docker swarm管理节点执行命令来查看,你将看到两个service:

docker service ls| grep portainer

4. Web管理        

        安装完毕之后,我们可以访问其Web管理系统地址,例如我的开发环境url地址是:http://192.168.1.10:9000/。

        从上图可以看到,Portainer可以对stack、service、container、image、volume、networks、config等进行界面化集中管理,这样大大简化了我们对Docker Swarm集群的运维工作。 

5. 实用工具

        虽然说运维管理要用Portainer Web管理系统来进行操作,但是CI/CD管道流水线的一切自动化操作,还是需要通过Linux命令行实用工具,可以编写Bash脚本或Python程序来自动化应用程序的安装部署。

        也有好人做了一个开源portainer-stack-utils:GitHub - greenled/portainer-stack-utils: CLI client for Portainer,安装直接看官网文档,这里不累述了。最后的工具是psu:

$ psu -h
A CLI client for Portainer

Usage:
  psu [command]

Available Commands:
  completion  Generate Bash completion scripts
  config      Manage configs
  container   Manage containers
  endpoint    Manage endpoints
  help        Help about any command
  login       Log in to a Portainer instance
  network     Manage networks
  proxy       Start an HTTP proxy to an endpoint's Docker API
  secret      Manage secrets
  service     Manage services
  setting     Manage settings
  stack       Manage stacks
  status      Check Portainer status
  volume      Manage volumes

Flags:
  -A, --auth-token string      Portainer auth token.
  -h, --help                   help for psu
  -i, --insecure               Skip Portainer SSL certificate verification.
      --log-format string      Log format. One of text or json. (default "text")
  -v, --log-level string       Log level. One of trace, debug, info, warning, error, fatal or panic. (default "info")
  -p, --password string        Portainer password.
      --settings-file string   Settings file. (default "$HOME/.psu.yaml)"
  -t, --timeout duration       Waiting time before aborting (like 100ms, 30s, 1h20m).
  -l, --url string             Portainer url.
  -u, --user string            Portainer user.
      --version                version for psu

Use "psu [command] --help" for more information about a command.        

        我在GitLab CICD里使用,通过gitlab-runner来调用psu进行服务部署。

6. API接口

         Portainer系统还提供了API接口,供我们进行二次开发管理,swagger地址:Build, Collaborate & Integrate APIs | SwaggerHub

         

7. 总结

         Portainer是一款开源的容器管理工具系统,通过提供一个直观的Web界面,帮助我们轻松地创建、管理和维护容器,同时也提供实用工具供我们自动化操作使用,还提供API接口供我们进行二次开发管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404542.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Seata 入门知识

目录 概述 工作流程 工作模式 AT模式 TCC模式 概述 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 AT模式是阿里首推…

Linux系统运维:离线安装sar-性能监视和分析工具

目 录 一、前言 二、系统环境 三、安装sar (一)准备工作 1、下载 sar 工具的安装包: 2、将安装包传输到 CentOS 服务器 (二)安装工作 1、解压 2、配置安装 3、编译 4、安装 (三&#xff0…

C# Onnx 使用onnxruntime部署实时视频帧插值

目录 介绍 效果 模型信息 项目 代码 下载 C# Onnx 使用onnxruntime部署实时视频帧插值 介绍 github地址:https://github.com/google-research/frame-interpolation FILM: Frame Interpolation for Large Motion, In ECCV 2022. The official Tensorflow 2…

【Flink集群RPC通讯机制(四)】集群组件(tm、jm与rm)之间的RPC通信

文章目录 1. 集群内部通讯方法概述2. TaskManager向ResourceManager注册RPC服务3. JobMaster向ResourceManager申请Slot计算资源 现在我们已经知道Flink中RPC通信框架的底层设计与实现,接下来通过具体的实例了解集群运行时中组件如何基于RPC通信框架构建相互之间的调…

大数据 - Spark系列《十一》- Spark累加器详解

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 大数据 - Spark系列《…

2024/02/23

使用消息队列完成两个进程间相互通信 A.c #include<myhead.h> struct msgbuf {long mtype;char mtext[1024]; }; //定义表示正文内容大小的宏 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long)int main(int argc, const char *argv[]) {//创建一个key值key_t key;ke…

知乎66条高赞回答,句句醍醐灌顶!

-01- 穷人是小心翼翼地大方&#xff0c; 有钱人是大大方方地小气。 ——论如何判断一个人是真有钱还是装有钱 -02- 枕头要常晒&#xff0c; 因为里面装满了心酸的泪和发霉的梦。 ——一切终将随风而逝 -03- 人活得累&#xff0c;一是太认真&#xff0c;二是太想要。 …

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document) 本聪老师&#xff1a;DID标识符和DID URL还都只是ID&#xff0c;必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。 本聪老师&#xff1a;每个DID标识符都唯一对应一个DID文档&#xff0c;也可以说&#x…

计算机功能简介:EC, NVMe, SCSI/ISCSI与块存储接口 RBD,NUMA

一 EC是指Embedded Controller 主要应用于移动计算机系统和嵌入式计算机系统中&#xff0c;为此类计算机提供系统管理功能。EC的主要功能是控制计算机主板上电时序、管理电池充电和放电&#xff0c;提供键盘矩阵接口、智能风扇接口、串口、GPIO、PS/2等常规IO功能&#xff0c;…

docker自定义网络实现容器之间的通信

Background docker原理 docker是一个Client-Server结构的系统&#xff0c;Docker的守护进程运行在主机上。通过Socket从客户端访问。docker核心三大组件&#xff1a;image–镜像、container-容器、 repository-仓库。docker使用的cpu、内存以及系统内核等资源都是直接使用宿主…

A Novel Two-Layer DAG-based Reactive Protocol for IoT Data Reliability in Metaverse

在IOT 场景中&#xff0c;需要保证数据的完整性和可靠性。通常区块链可以用来做这件事&#xff0c;但是IoT 设备的计算能力和贷款都是有限的。 对于PBFT 要求的通信量太大。 本文提出的 two layer directed acycle graph (2LDAG) 是一种被动共识协议&#xff0c;除非有节点主动…

快速构建 Debezium MySQL Example 数据库

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

EXCEL 在列不同单元格之间插入N个空行

1、第一步数据&#xff0c;要求在每个数字之间之间插入3个空格 2、拿数据个数*&#xff08;要插入空格数1&#xff09; 19*4 3、填充 4、复制数据到D列 5、下拉数据&#xff0c;选择复制填充这样1-19就会重复4次 6、全选数据D列排序&#xff0c;这样即完成了插入空格 以…

SQL语法-DQL-测试练习

因篇幅原因&#xff0c;本篇承接此篇->第八篇&#xff1a;SQL语法-DQL-数据查询语言-CSDN博客 本篇是对于SQL语法DQL语句的练习&#xff0c;因水平和精力有限&#xff08;就不像前两篇的DDL&#xff0c;DML那样自出练习了&#xff09;直接照搬了【黑马程序员】在哔哩哔哩的…

基于卷积神经网络的图像去噪

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 基于卷积神经网络的图像去噪 完整代码:基于卷积神经网络的图像去噪.rar资源-CSDN文库 https://download.csdn.net/download/abc9918351…

如何在java中使用 Excel 动态函数生成依赖列表

前言 在Excel 中&#xff0c;依赖列表或级联下拉列表表示两个或多个列表&#xff0c;其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告&#xff0c;例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年…

vue3 + ts + echart 实现柱形图表

首先封装Echart一个文件 代码如下 <script setup lang"ts"> import { ECharts, EChartsOption, init } from echarts; import { ref, watch, onMounted, onBeforeUnmount } from vue;// 定义props interface Props {width?: string;height?: string;optio…

网工内推 | 信息安全售前,国企、上市公司,补贴福利多

01 中电科网络安全科技有限公司 招聘岗位&#xff1a;信息安全售前工程师 职责描述&#xff1a; 1.负责为客户提供整体信息安全规划、IT治理需求调研、现状分析、蓝图规划与实施路线设计&#xff0c;为客户提供设计方案&#xff1b; 2.承担行业信息安全发展研究、行业业务规划…

vue3 vuex

目录 Vuex 是什么 什么是“状态管理模式”&#xff1f; 什么情况下我应该使用 Vuex&#xff1f; 使用方法&#xff1a; 提交载荷&#xff08;Payload&#xff09; 对象风格的提交方式 使用常量替代 Mutation 事件类型 Mutation 必须是同步函数 在组件中提交 Mutation …

sentinel中监听器的运用--规则管理

sentinel中监听器的运用–规则管理 规则结构 类图关系 类关系图如下 Rule 将规则抽象成一个类, 规则与资源是紧密关联的, 也就是说规则作用于资源。因此, 我们需要将规则表示为一个类, 并包含一个获取资源的方法 这里采用接口的原因就是规则是一个抽象概念而非具体实现。…