More Related Content Similar to 2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes (20) More from Омские ИТ-субботники (20) 2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes9. Dockerfile
FROM ubuntu:14.04
ENV DEBIAN_FRONTEND noninteractive
ENV POSTMASTER_PASS password
RUN echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/02apt-speedup &&
apt-get update &&
apt-get --no-install-recommends -y install postfix sipcalc sasl2-bin
libsasl2-modules &&
apt-get clean
ADD rootfs /
ENTRYPOINT ["/start"]
EXPOSE 25
20. В чем сложность?
● Как добавлять сервера в кластер?
● Как контролировать количество
копий?
● Как обеспечить restart контейнера?
● Как балансировать нагрузку?
21. В чем сложность?
● Как деплоить контейнеры?
● Как конфигурировать контейнеры?
● Как обеспечить network между
контейнерами?
● Что там с persistent storage?
22. В чем сложность?
● Как обеспечить разграничение
доступа?
● Как собирать логи?
● Как ограничить cpumemory per
container?
30. Add worker
$ docker swarm join --token
SWMTKN-1-49nj1cmql0jkz5s954yi3oex3ne
dyz0fb0xx14ie39trti4wxv-8vxv8rssmk74
3ojnwacrr2e7c
<MASTER IP>:2377
32. Add manager
$ docker swarm join --token
SWMTKN-1-55ya5072akuzqr7kiy0rgy0akhw
ohp8of73zhxojpebkkwbtwd-0jfwgomkyvwl
fp0m73poapoe0
<MASTER IP>:2377
33. Cluster info
$ docker node info
ID HOSTNAME STATUS AVAILABILITY MANAGER
STATUS
03g1y59jwfg7cf99w4lt0f662 worker2 Ready Active
9j68exjopxe7wfl6yuxml7a7j worker1 Ready Active
dxn1zf6l61qsb1josjja83ngz * manager1 Ready Active Leader
41. $ aws iam create-group --group-name kops
$ export arns="arn:aws:iam::aws:policy/AmazonEC2FullAccess
arn:aws:iam::aws:policy/AmazonRoute53FullAccess
arn:aws:iam::aws:policy/AmazonS3FullAccess
arn:aws:iam::aws:policy/IAMFullAccess
arn:aws:iam::aws:policy/AmazonVPCFullAccess"
$ for arn in $arns; do aws iam attach-group-policy --policy-arn "$arn"
--group-name kops; done
$ aws iam create-user --user-name kops
$ aws iam add-user-to-group --user-name kops --group-name kops
$ aws iam create-access-key --user-name kops
Создание кластера - права
42. $ ID=$(uuidgen) &&
aws route53
create-hosted-zone
--name subdomain.example.com
--caller-reference $ID
Создание кластера - DNS
45. Создание кластера
$ kops create cluster
--node-count 3
--zones us-west-2a,us-west-2b
--master-zones us-west-2a,us-west-2b
--dns-zone kubernetes.com
--node-size t2.medium
--master-size t2.medium
${NAME}
51. containers:
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
volumes:
- name: shared-data
emptyDir: {}
Pod
65. Networking & DNS
● Contiv
● Flannel
● GCE networking
● Linux bridging
● Calico
● Kube-DNS
● SkyDNS
73. As Env Vars
kind: Pod
...
env:
-name: POSTMASTER_USER
valueFrom:
secretKeyRef:
name: credentials-secret
key: user_name
76. Volumes
$ docker service create
--mount type=bind,src=<HOST-PATH>,dst=<CONTAINER-PATH>
--name myservice
<IMAGE>
$ docker service create
--mount type=volume,src=<HOST-PATH>,dst=<CONTAINER-PATH>
--name myservice
<IMAGE>
78. Volumes
● emptyDir
● hostPath
● gcePersistentDisk
● awsElasticBlockStore
● nfs
● flocker
● glusterfs
● cephfs
● gitRepo
● persistentVolumeClaim
● AzureFileVolume
● AzureDiskVolume
86. Geodesic
● Github based access management
● VPN
● Monitoring and alerts
● Slack integration
● SSL for all with let’s encrypt
● Bunch of helm packages