$30 off During Our Annual Pro Sale. View Details »

KubernetesのPetSetsの話

Kazuto Kusama
September 16, 2016

 KubernetesのPetSetsの話

社内コンテナ勉強会で喋った機能。
PetSetsを使うことで、従来のStatefulなアプリケーションもKubernetes上で動かしやすくなります

Kazuto Kusama

September 16, 2016
Tweet

More Decks by Kazuto Kusama

Other Decks in Technology

Transcript

  1. LTͷ1FU4FUTͷ࿩

    View Slide

  2. Kazuto Kusama
    @jacopen

    View Slide

  3. ࠷ۙͷ࿩
    ࠷ۙͷ๻͕΍ͬͯΔϓϩδΣΫτͰɺͳΜͱ͔ελοΫͷͳΜͱ͔
    ͍ͬͯ͏΍ͭΛ࢖͍ͬͯΔͷͰɺRabbitMQ͕ඞཁʹͳͬͨ
    ӡ༻ج൫ʹk8sΛ࢖͍ͬͯΔΜͰɺRabbitMQΫϥελΛk8sʹ૊΋͏

    View Slide

  4. k8sͰී௨ʹ্͛ͨ৔߹

    (Deployments, Replication Controller)
    kind: Deployment
    metadata:
    name: rabbitmq
    spec:
    replicas: 3
    template:
    metadata:
    labels:
    app: rabbitmq
    spec:
    containers:
    - name: rabbitmq
    image: rabbitmq:latest

    View Slide

  5. k8sͰී௨ʹ্͛ͨ৔߹

    (Deployments, Replication Controller)
    jacopen@ssh2:~/kubernetes$ kubectl get pods
    NAME READY STATUS RESTARTS AGE
    rabbitmq-4239234776-8bs65 1/1 Running 0 2m
    rabbitmq-4239234776-amzjt 1/1 Running 0 2m
    rabbitmq-4239234776-wq6s4 1/1 Running 0 2m

    View Slide

  6. MQ MQ MQ
    3ඖͷRabbitMQ

    View Slide

  7. MQ MQ MQ
    3ඖͷRabbitMQ
    ΫϥελΛ૊ΜͰΈΑ͏

    View Slide

  8. $ rabbitmqctl join_cluster rabbit@rabbitmq-0
    OR
    rabbitmq.config
    [
    {
    rabbit, [
    {loopback_users, []},
    {cluster_nodes, {[‘rabbit@rabbitmq-0', 'rabbit@rabbitmq-1'],
    ram}}
    ]
    }
    ].

    View Slide

  9. MQ MQ MQ
    ΄ɺϗετ໊ɾɾɾ
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4
    ܾ·ͬͨϗετ໊ʹͳΒͳ্͍ʹɺ૬ޓͷ௨৴खஈ͕ͳ͍

    View Slide

  10. MQ MQ MQ
    ແཧ໼ཧk8sͰ࣮ݱ
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4
    Service
    rabbitmq-0
    Service
    rabbitmq-1
    Service
    rabbitmq-2

    View Slide

  11. MQ MQ MQ
    ແཧ໼ཧk8sͰ࣮ݱ
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4
    Service
    rabbitmq-0
    Service
    rabbitmq-1
    Service
    rabbitmq-2

    View Slide

  12. MQ MQ MQ
    yaml஍ࠈ
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4
    Service
    rabbitmq-0
    Service
    rabbitmq-1
    Service
    rabbitmq-2
    yaml
    yaml
    yaml
    yaml
    yaml
    yaml

    View Slide

  13. MQ MQ MQ
    ϝϯςͷͨΊʹఀࢭ͠Α͏
    $ kubectl delete -f …
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4
    Service
    rabbitmq-0
    Service
    rabbitmq-1
    Service
    rabbitmq-2
    yaml
    yaml
    yaml
    yaml
    yaml
    yaml

    View Slide

  14. ϝϯςͷͨΊʹఀࢭ͠Α͏
    rabbitmq-4239234776-8bs65 rabbitmq-4239234776-amzjt rabbitmq-4239234776-wq6s4

    View Slide

  15. $BUUMF Ոச

    View Slide

  16. Cattle or Pets
    • εέʔϧ͢ΔΞʔΩςΫνϟͷͨΊʹ͸ɺ֤ϊʔυΛՈசͷΑ
    ͏ʹѻ͏ඞཁ͕͋Δ
    • Ϋϥ΢υωΠςΟϒͳੈքͰ͸ׂͱ;ͭʔ
    • ͱ͸͍͑ɺશͯͷΞϓϦ͕ͦ͏࡞ΕΔΘ͚͡Όͳ͍

    View Slide

  17. PetSets is Կ
    • ݱߦͷk8s 1.3ͰΞϧϑΝ൛͕࣮૷͞Εͨػೳ
    • Ϋϥ΢υωΠςΟϒͰ͸ͳ͍;ͭʔͷΞϓϦέʔγϣϯΛ

    k8sͰಈ͔͠΍͘͢͠Α͏ͥ ɹͱ͍͏ػೳ

    View Slide

  18. PetSetͰ্͛ͨ৔߹
    jacopen@ssh2:~/kubernetes$ kubectl get pods
    NAME READY STATUS RESTARTS AGE
    rabbitmq-0 1/1 Running 0 18s
    rabbitmq-1 1/1 Running 0 12s
    rabbitmq-2 1/1 Running 0 7s

    View Slide

  19. root@rabbitmq-0:/# hostname
    rabbitmq-0
    root@rabbitmq-0:/# ip a
    1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
    qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever
    727: eth0@if728: mtu 1350 qdisc noqueue state UP
    group default
    link/ether 02:42:ac:20:52:11 brd ff:ff:ff:ff:ff:ff
    inet 172.32.82.17/24 scope global eth0
    valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe20:5211/64 scope link tentative dadfailed
    valid_lft forever preferred_lft forever
    root@rabbitmq-0:/# ping rabbitmq-1.rabbitmq
    PING rabbitmq-1.rabbitmq.petset.svc.cluster.local (172.32.41.13) 56(84) bytes of
    data.
    64 bytes from 172.32.41.13: icmp_seq=1 ttl=62 time=0.575 ms
    64 bytes from 172.32.41.13: icmp_seq=2 ttl=62 time=0.752 ms

    View Slide

  20. 0 1 2
    0൪͔Βॱ൪ʹ্͛ͯ͘ΕΔ

    View Slide

  21. 0 1 2
    େ͖͍൪߸͔Βॱʹམͱͯ͘͠ΕΔ
    ŋŋŋ͸ͣ

    View Slide

  22. http://kubernetes.io/docs/user-guide/petset/

    View Slide

  23. ॴײ
    • ·ͩ·ͩαͳͷͰ͓͔͠ͳಈ͖ଟ͠
    • ࣮ઓ౤ೖ͸·ͩແཧɻ1.4΍1.5͋ͨΓʹظ଴
    • ͱ͸͍͑ɺStateless͚ͩͰͳ͘Stateful΋αϙʔτ͢ΔྲྀΕ͸

    ແࢹग़དྷͳ͍Ͷ

    View Slide