Orchestration
-
Upload
dailymotion -
Category
Engineering
-
view
72 -
download
0
Transcript of Orchestration
Orchestration, Pourquoi ?
Organisation agile
Engineering composée de Tribes
Changement de l'architecture historique monolithiquevers une architecture orientée micro-services
Autonomie des Squads dans leurs développements
Domaine de responsabilité
Faciliter les mises en production
Orchestration, Le besoin
Reprise de l'existant initié par nos développeurs
Déploiement des clusters via le script kube-up.sh
Déploiement sur 2 régions AWS
Trop peu de redondance
Pas de monitoring orienté système
Orchestration, Le besoin
Support de la Squad Infra
Apporter une vision complémentaire
Proposer une solution rapidement viable en production
Intégrer des fonctionnalités supplémentaires (monitoring, autoscaling)
Définir la stack technique
Ajouter de la redondance à l'existant
Industrialiser le déploiement et l'exploitation des clusters
Orchestration, La stack
Choix de l'outil de déploiment
Déjà utilisé auparavant : Ça marche
Bootstrap de clusters rapide aussi bien sur AWS que On-Premise
Installation de plusieurs masters possible + redondance ETCD
Communauté réactive
Quelques bugs facilement contournables
Utilise Ansible (SSH) et peut-être assez long en cas de latence importante
Switch sur Saltstack à terme
Orchestration, La stackLe réseau
Approche layer 3
Solution prometteuse et déjà utilisée auparavant
Pas de magie : règles iptables - facile à debug
CLI calicoctl intuitive et efficace
Utilisation sur AWS ET On-Premise
root@ip-10-212-3-250:/home/admin# calicoctl statuscalico-node container is running. Status: Up 13 daysRunning felix version 1.4.0rc2
IPv4 BGP statusIP: 10.212.3.250 AS Number: 64511 (inherited)+--------------+-------------------+-------+------------+-------------------------------------------+| Peer address | Peer type | State | Since | Info |+--------------+-------------------+-------+------------+-------------------------------------------+| 10.212.3.111 | node-to-node mesh | up | 2016-09-26 | Established || 10.212.3.112 | node-to-node mesh | start | 2016-09-26 | Active Socket: Host is unreachable || 10.212.3.113 | node-to-node mesh | up | 2016-09-26 | Established || 10.212.3.225 | node-to-node mesh | up | 2016-10-03 | Established || 10.212.3.226 | node-to-node mesh | up | 2016-10-03 | Established || 10.212.3.227 | node-to-node mesh | up | 2016-10-03 | Established || 10.212.3.84 | node-to-node mesh | up | 2016-10-06 | Established |+--------------+-------------------+-------+------------+-------------------------------------------+
Orchestration, La stack
Les intercos
Rappel
Kubernetes sur différentes régions AWS
Plusieurs datacenters "Dailymotion"
Besoin
Centraliser les logs des clusters à un endroit (Ici une région AWS)
Utiliser nos services internes depuis nos régions AWS (MasterSaltstack, Dépot de paquet, LDAP etc...)
Orchestration, La stack
Les intercos : En détail
Un couple de Gate par datacenter DailymotionDeux couples de Gate par région AWSUtilisation de subnet privés prédéfinis
AWS Infra VPCAWS Squads VPC
Solution KISS qui fait le job
VPC Peering
Orchestration, La stack
Le monitoring
Utilisation du SaaS Datadog pour collecter toutes les métriques
système ET applicatives
Plugin AWS / Docker /Kubernetes
Intégration dans notreShinken
Rate limit de l'API Cloudwatch
Orchestration, Le déploiement des services
Le process
Push du code sur
Push de l'imagesur le Hub
Rollout du deployment
via shell script
Orchestration, Work In Progress
Utilisation de calico On-Premise
Solution interne existante basée sur exabgp
Pas de BGP avec Calico
Chaque "Pod subnet" alloué par noeud est exporté via exabgp
Calico en charge de l'IPAM
DC3|k8s-01:~# calicoctl endpoint show --detailed+----------+-----------------+---------------------------------------+----------------------------------+-------------------+-------------------+--------------------+--------+| Hostname | Orchestrator ID | Workload ID | Endpoint ID | Addresses | MAC | Profiles +----------+-----------------+---------------------------------------+----------------------------------+-------------------+-------------------+--------------------+--------+| k8s-01 | k8s | default.consul-6cy8p | 4f0c0e3e3eb411e6abf8549f351ac600 | 10.172.0.198/32 | 1a:66:ad:ff:88:0d | calico-k8s-network | k8s-01 | k8s | default.consul-twh81 | ae58398a750a11e6abf8549f351ac600 | 10.172.24.49/32 | 86:1c:09:a3:ef:a1 | calico-k8s-network | k8s-01 | k8s | default.consul2-7xlse | adbd2300750a11e6abf8549f351ac600 | 10.172.24.45/32 | ca:9d:36:4d:69:0a | calico-k8s-network
Orchestration, Work In ProgressIntégration de Consul
Consul est déjà utilisé en production et dynamiquement intégré à notre
solution de load balancing
Pouvoir s'abstraire des services Kubernetes (mode headless) pour certains
use-cases
Test de différent bridge Kube / Consul pour pouvoir alimenter notre
système d'auto-discovery
Ajout des IPs de Services
Ajout des IPs des Pods
Intérêt : Pouvoir adresser les Pods directement depuis nos load balancers sansla notion de Service
Orchestration, La suite
Teaser : Orchestrer la plus grosse ferme de Dailymotion
Apache (pour servir les 3 milliards de vues parmois sur dailymotion.com)
Quel volume ?Plusieurs centaines de serveurs high-end
Quel type de service ?
ffmpeg (pour encoder les 300 000 heuresde vidéos par mois)
Orchestration, La suite
Teaser : Orchestrer la plus grosse ferme de Dailymotion
L'idée
Machines identiques qui servent les 2 servicesPriorité au service de dailymotion.com vs l'encoding
Le but
Orchestrer / autoscaler les deux services (En fonction deparamètres comme la charge des webs ou de l'encodage)
Setup On Premise et pourquoi pas un offload dans le cloud