Archives pour la catégorie ‘CoreOS’

CoreOS : fix crash du network stack sous Xen 4.2

Dec 16 11:30:08 ip-172-10-4-2.ap-southeast-1.compute.internal kernel: xen_netfront: xennet: skb rides the rocket: 19 slots, 65226 bytes
# ethtool -K eth0 sg off

Amazon EC2 : fix de configuration Xen avec instance HVM

# dmsg
[335773.344080] xen:balloon: Cannot add additional memory (-17)
[335805.413385] xen:balloon: Cannot add additional memory (-17)
[335837.536078] xen:balloon: Cannot add additional memory (-17)
 
# cat /sys/devices/system/xen_memory/xen_memory0/info/current_kb > /sys/devices/system/xen_memory/xen_memory0/target_kb

CoreOS : cloud config pour instance EC2 avec stockage local Docker + swap

Le fichier cloud-config ci-dessous initialise une instance EC2 CoreOS avec les options suivantes :

  • paramétrage des timeout fleet et etcd
  • swap d’1 Go sur le disque local (/dev/xvdb1)
  • partition BRTFS pour les containers Docker sur disque local (/dev/xvdb2)
  • désactivation du reboot automatique par sécurité (locksmithd)
#cloud-config

coreos:
  update:
    reboot-strategy: off
  etcd:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new
    discovery: https://discovery.etcd.io/7c024472504cf1cef428ccc8af8e63f0
    # multi-region and multi-cloud deployments need to use $public_ipv4
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
    peer-election-timeout: 6000
    peer-heartbeat-interval: 1500
    snapshot: true
    snapshot-count: 100
  fleet:
    public-ip: $public_ipv4
    metadata: region=eu-west
    etcd-request-timeout: 1500
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
    - name: format-ephemeral.service
      command: start
      content: |
        [Unit]
        Description=Formats the ephemeral drive
        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStartPre=/usr/sbin/wipefs -f /dev/xvdb
        ExecStartPre=/usr/bin/sh -c "(/usr/bin/echo ',1024,S' && /usr/bin/echo ';')|/usr/sbin/sfdisk /dev/xvdb -uM"
        ExecStartPre=/usr/sbin/mkswap -f /dev/xvdb1
        ExecStartPre=/usr/sbin/swapon /dev/xvdb1
        ExecStart=/usr/sbin/mkfs.btrfs -f /dev/xvdb2
    - name: var-lib-docker.mount
      command: start
      content: |
        [Unit]
        Description=Mount ephemeral to /var/lib/docker
        Requires=format-ephemeral.service
        After=format-ephemeral.service
        Before=docker.service
        [Mount]
        What=/dev/xvdb2
        Where=/var/lib/docker
        Type=btrfs

CoreOS : désactivation des mises à jour automatiques

# systemctl stop update-engine.service
# systemctl mask update-engine.service

Systemd : unité timer pour simuler un script cron

# cat cleanup.1.timer
[Unit]
Description=Cleanup Timer

[Timer]
OnCalendar=06:00
Unit=cleanup.1.service

[Install]
WantedBy=timers.target

[X-Fleet]
MachineID=b39596623f6540568ea3ea25a4fa8752
# cat cleanup.1.service
[Unit]
Description=Cleanup Service

[Service]
TimeoutStartSec=0
ExecStart=/bin/bash -c "docker rmi $(docker images|grep \"^<none>"|awk \"{print \$3}\""

[X-Fleet]
MachineID=b39596623f6540568ea3ea25a4fa8752

Pour le déploiement avec fleet :

# fleetctl submit cleanup.1.service
# fleetctl load cleanup.1.service
# fleetctl submit cleanup.1.timer
# fleetctl load cleanup.1.timer
# fleetctl start cleanup.1.timer

Fleet : afficher un fichier service

# fleetctl cat monitoring.1.service
[Unit]
Description=monitoring
Requires=docker.service
Requires=logging.1.service
After=docker.service
After=logging.1.service

[Service]
ExecStartPre=-/usr/bin/docker kill monitoring
ExecStartPre=-/usr/bin/docker rm monitoring
ExecStartPre=/usr/bin/docker pull 1.2.3.4:5000/monitoring:latest
ExecStart=/usr/bin/docker run --name monitoring -p 10050:10050 -v /var/run/docker.sock:/coreos/var/run/docker.sock -v /proc:/coreos/proc:ro -v /sys:/coreos/sys:ro -v /dev:/coreos/dev:ro -v /tmp/logging/dev/log:/dev/log --restart=always 1.2.3.4:5000/monitoring:latest coreos1 80.81.82.83
ExecStop=/usr/bin/docker stop monitoring
TimeoutStartSec=900

[X-Fleet]
MachineID=b39596623f0000568ea3ea25a4fa0000

Docker : forcer le rédémarrage d’un container

# docker run --restart=always logging
# docker run --restart=on-failure:5 monitoring

CoreOS : monitoring d’un serveur avec Zabbix

Je viens de publier mes sources nécessaires à la création d’un container Docker avec un agent Zabbix patché par mes soins dans le but de monitorer un serveur CoreOS et ses containers Docker.

URL du dépôt : https://github.com/bhuisgen/docker-zabbix-coreos

Haut de page