Closed4

Portainer (Ver 20.0.2) のDocker Swarm (Ver 26.0.0) へのStackのデプロイが成功しない

raspi0124raspi0124

なんかまだDocker 26がリリースされてから日が浅いっぽく、その影響かいろいろまだまだPortainerもバグっているっぽい。
デプロイ失敗の他にも、Portainer v19系だとコンテナへのAttatchなどに失敗する、などが既知のバグとして存在する模様。

raspi0124raspi0124

症状

今回のデプロイが成功しないの問題の症状としては

  1. https://docs.portainer.io/start/install-ce/server/swarm/linux 通りにコマンドを実行
  2. 9443ポートでPortainerの初期セットアップ画面が開く、
    • しかしEnvironmentが存在せず、初期セットアップから始めることになる 又は
    • 既存のEnvironmentが存在し、docker ps -a をするとエージェントがデプロイされているが、portainer.Snapshot.Docker: portainer.DockerSnapshot.SnapshotRaw: portainer.DockerSnapshotRaw.Info: types.Info.Swarm: swarm.Info.Cluster: swarm.ClusterInfo.Spec: swarm.Spec.Dispatcher: swarm.DispatcherConfig.HeartbeatPeriod: readUint64: unexpected character: , error found in #10 byte of ...|tPeriod":"5s"},"CACo|..., bigger context ...|eartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":"5s"},"CAConfig":{"NodeCertExpiry":"2160h0m0s"},"Ta|...などのエラーが表示され、Environment管理画面に接続できない 等
raspi0124raspi0124

解決策

最悪&なんかやってみたらできただけの解決策とも呼べない何かだが、

  1. とりあえずEnvironmentをAdd
  2. 環境を聞かれるのでDocker Swarmを選択
  3. 接続方法を聞かれるのでEdge Agent Standardを選び、Nameとして適当な名前を入れる (後で変更可能) それ以外はそのままで
  4. sudo docker service create --name portainer_edge_agent --network portainer_agent_network -e EDGE=1からはじまるエージェント追加用コマンドが出てくるので、SwarmのManagerで実行
  5. 1分ぐらい待ってPortainerを開くと正常にEnvironmentを管理できるように
raspi0124raspi0124

とりあえず↑のコマンド&元のstackファイルを元に一応動きはするportainer-agent-stack.ymlっぽい何かを作った。Portainerのバージョンがstsを参照しているので注意。

version: "3.2"

services:
  edge_agent:
    image: portainer/agent:sts
    environment:
      - EDGE=1
      - EDGE_ID=
      - EDGE_KEY=
      - EDGE_INSECURE_POLL=1
      - AGENT_CLUSTER_ADDR=tasks.edge_agent
    deploy:
      mode: global
      placement:
        constraints:
          - node.platform.os == linux
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
      - type: bind
        source: /var/lib/docker/volumes
        target: /var/lib/docker/volumes
      - type: bind
        source: /
        target: /host
      - type: volume
        source: portainer_agent_data
        target: /data
    networks:
      - agent_network

  portainer:
    image: portainer/portainer-ce:sts
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "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:
  portainer_agent_data:
このスクラップは6ヶ月前にクローズされました