αααα αΆααΆαα½ααααααα·ααΈαααααΆαααααΆαααΆααα αααα»α Kubernetes
ααΆαααααααα ααΆαααααααα ααΆαααΎαααααΎαααΆα αα·αααΆαααααΎααΆαααααααΆαααααααααααααααααα·ααΈ αα·αααααΆααααααΊααΆαααΆαααΆααααα½ααα ααααα·ααΆαα’αααΈααααΈαααααααΌαααΆαα αΆααααααΆααααΆααααΆααααα αααααΊα§α ααααα·ααααααΆαα»ααα·ααααααα ααΆααΆαααΆαααΆααααα½ααααα»αααΆαααααΎαααΆαααααΆαααααααααααα αααα»α Kubernetes αααααααΎ APIs αααααααΆαααααααΆ ααΈαααααα’αααΈαααΎαα‘αΎα "αααα αααα’αα"α αααααΆαααΆαααααααααααααΆα ααααα·αααΆαααααααααΉαααΆαααΆααααΆαα α¬αααααααααΆαα½αα‘αΎαα
αα·ααΆαα±ααααΆαααα ααΎααααΈααΎαααααΎαααΆαα αααΆααα ααααααααΆαααααααααααααααααααΆαααααααα αααα»α PHP/Ruby/Python αα αααα»αα ααααααα»αααΊααα α’αααααααΆααααααααΌαααα‘αΎααααΆαααΈαααααααΈ 5 αα αα·αα αααααααααα αααααΆαααΆααααΌαααααα αα·αααααααΈα init ααΆααα αααα»αααΌαααΆα ααΆαααααΎααΆαααααααΆααααααα·ααΈαααααααΆαααααααααΆαααΆαααααΆαααααα»αα αααα»αααΆαααΆα’αααααΆαααααααα»αααΊααα αα·αααααΆααααααααααΈααααΌααααΆααααααΉαα αααΆαα ααΆαααααΆαα αΆααααααΎαααΆαα½α αααααα·ααΈαααα, i.e. ααΆαα½αααΉααα·ααααααααΆααααΆααααΌα ααΆααΌαααααΆααα·αααααα αα·αααααΆαααααααΆαα (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...)α αααα’αα»ααααα αααααααααα·ααΈααΆααααΈααααα’αα»αααααααα―αααΆαααααΌααααα»αααΌααα»α (α§ααΆα ααα Percona XtraDB αα·α Cassandra) αα·ααααααα·ααΈαααααΆαααΆαα§αααααααααΎααααΆαααααααααααααΆα ααααα‘αα (ααΌα ααΆ Redis, MySQL, PostgreSQL...)α
ααΆαααααΆαααΎαα‘αΎααααααΆαααααΌαααααα αα·αααΆαααΎαααααΎαααΆαααααΆααααααααααααααααΆααα αΎα α’αααααααΌαα’αα»ααααααα αΆααα½αα
ααα½ααααα αααΆαα αα
ααΆαα α
αααααα·αααααα αα·α/α¬α
αΌααα½ααααα»αα ααΆααααα
αααΆααααΆαααααα
ααα ααααΆααααααΆαααααααΆαααΆαα±ααααΆαααΆααααααΉαα’αααΈααααααααΎααΆαααααααΆαα±ααααΆαααααΉαααααΌα ααααΎαα
αα
α»ααααααααΆα αα·αααααααα
ααΆαααααααααα½αααΆα‘αΎααα·αααααα·αααΆααααααα·αααααα α¬αα·αααΆαααααααα’αΆααααα ααΆααα·α
αΆαααΆααΎαααααΌαααΆαααΆαααααααααΌαααΆαααα α
ααΆ "α
ααααααΉαααααα·ααααα·ααΆα" α
ααααα·ααααα·αα CoreOS
ααΎααααΈ "αααααα·ααΈ" α
ααααααΉαααααα·ααααα·ααΆααα
α
α»αααααΆααα»ααααααα CoreOS
ααααα·ααααα·ααααααΎααααΆαα αα·ααααααΈααααααααΆαααααΌααααα Kubernetes (αα½αααΆααα αααα»αααααααΌαααΎαααΆααα»αααααΆααΆαααααα) α’αα»ααααΆαα±ααα’αααα―αααα DevOps ααααααα ααααααΉαααααα·ααααα·ααΆααα ααΌααααααα·ααΈα
αααααααααααααααα·ααααα·αα β αααααα±ααα’αααααααΎααααΆααααΌα API αααα’αα»ααααΆαα±ααα’ααααααααααααα’αααααΆααααααα·ααΈαααααΆαααααΆαααΆαα αααΎααα αααα»αα ααααα Kubernetes ααααα·ααα·αααΈα’αααΈααααααα·ααα ααααααααααΆαα (αα·ααααααα’αααΈ αα·αα’αααΈαααααααΌαααααΎααΆαα½αααΆ ααΎααΆααααααααΆα’αααΈαα ααααααΌαααααα·ααααα·ααΎααααΈαααααΆα αααααα ) ααΆααα·α ααααα·ααααα·ααααααΌαααΆααα ααΆα‘αΎαααΎααααΈααααα½αααΆαααΆαααΆαα½ααααααα·ααΈαα αααα»αα αααααα±ααααΆαα αααΎαααΆααααα’αΆα ααααΎαα ααΆα αααααααααααααααα·ααααααΆαααααα·ααααα·αααα·α αα ααΆαααααα·ααααα·ααΆααααααΈαα»αααααΌααααααααΆααααααα
αααααααααααα·ααααα·ααααααΎαααΆα
αα»αα αααα Kubernetes α’αα»ααααΆαα±ααα’ααααααααΆααα ααα½ααααα ααααΆαααααααααααα»αααααΎαααΆα α αΎαα§ααααααααααΆααΆααΆααΆααααααααα½αααααααΌαααΆααααααΆαα»α (ααααααααΎα αα·ααα»ααα)α ααααα·ααααα·ααααααΎααΆαααΆαααααααααααααααΆ ααααααααααααα»αααα ααααααΉαααααα·ααααα·ααΆααα ααΆααααααΆα αα·αα§ααααααααααΆ Kubernetes αααααααΆααααα’αα»ααααΆαα±ααα’αααα’αα»αααααααααααΆαααααααααΎααααΈααΆααααα ααα½αα’αααααΆααααααα·ααΈαααααααΌαααΆαα
ααΎβαααβαα»αβααααΆβαααΆαβααΆ αααα»ααααααα ααΆα‘αΎααααααΆαααααααα·ααΈααααααααΌαα±ααα ααααααααααα±αααα½αααααΌαααααΆααααααΆααααΆαααΌα ααΆααΆααααα»ααα·αααααα α¬ IP αα·αα·αααα? αααααΆαααααααα·ααΈαααααα ααααα·ααααα·ααα’αΆα ααααΎααααΆααααΆαα αααα»ααααα (αααα½αα±αα αα»αα αααα) ααΆααΌαααααΆα αααααααΌα ααααααααααααα·ααααααααααα α’αα»αααααααααααΆαα αΆαααΆα ααααα»αααααΈααΆαα ααααΎααΆαααααα»ααα»α ααααΎαα αα α»ααααααααΆαααΆαααααααα ααΆααααααααααα
α αΎαααΌα αααα, ααΎααΆααα’αααααααααΎαααΆααααΆαααΌα ααααα ? ααααα·ααααα·ααααΊααΆαααα·αα’αααααααααααααααα
- ααΆααααα αΆααα API ααααΉαααα·ααΆααααα αααα»α Kubernetes;
- ααα½αααΈααΆαα·ααααααα’αααΈαααααααα (α’αααΈααααααΆα αα»αα αααα, αααααα½α, ααααΆαααα αβαα);
- ααα½ααα·ααααααα’αααΈ ααααΆαααΆααΈααΈααΈ (ααΌαααΎαα§ααΆα αααααΆαααααα);
- ααααα·αααααα ααΉαααΌαααΆα / ααΆαααααΆααααααΌα ααααΆαααΆααΈααΈααΈ (α§ααΆα ααα ααΎααααΈααααΆααααααΌαααα α ααααΆααααααΌααααα α αΎαααΌα αααααα ααΎ);
- ααααα·αααααα ααΉαααΆαααααΆααααααΌααα αααα»αααααΆαααΆααααααααααα (α’αααΈααααααΆα αα»αα αααα, αααααα½α, ααααΆαααα αβαα);
- ααααΆααβαααα»α:
- α’αααΆαααΆααα ααΎ Kubernetes API ααΎααααΈαααααΎαα’αααΈααααααααΆααααααΆααααΌαααΆα (ααααααα ααααααΆααααΆαα αα»αα αααα, αααααα½α, ααααΆαααα... ),
- α’αα»ααααααααααααα½αα ααα½α (ααΎααααΈααααα½α α’αααα’αΆα αα·αααΆ Operator α αΌααα αααα»α pods ααααααα½αα―α α αΎαα α ααΆααααααααΆ α§ααΆα ααα ααΎααααΈα αΌααα½αααΆαα½α cluster α¬ upgrade format αα·αααααααα ααα update version)α
ααΆααα·α ααΌα
αααα’αΆα
ααΎαααΎαααΈααΌαααΆα αααααα·ααΈααΆα
ααααα‘αααα½αααααΌαααΆααααααααααΆαααΆαααααα
Kubernetes (ααααααΆα ααΆαααΆαααααααΆα Ρ αααα»αα
αααα) αααααααΌαααΆαααα α
ααΆααααα·ααααα·ααα ααΆααααα
αααα»αααΎαααααααΆαα½α (ααΆααααααΆαααα½α) α αΎαααΆαααα½αααΊααα½ααα»αααααΌαα
ααααααααααααΆα α
αααααααααα. αααααα·ααΈααααα·ααααα·αααααα’αα»αααα API ααααααΆ - αααααΈααΆαα·αααααααααααΆαα ααα»ααααααΆαααα ααααΆαααΆααΈααΈααΈ αα
Kubernetes α
ααΌα αααααααααΆααααΈααΎαααΆααααααΎα α αααααααααα ααααα·ααααα·αα ααΎαα’αΆα αααααααα ααΆααΆα ααααΆαααΆααΈααΈααΈ.
α§ααΆα ααααααααΆαα αα (ααΌαααΎαααΆαααααααααααΆααααααααΆααααα’α·α):
apiVersion: etcd.coreos.com/v1beta1
kind: Cluster
metadata:
name: example-etcd-cluster
spec:
size: 3
version: 3.1.0
α§ααΆα ααααααααΆαα Elasticsearchα
apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
name: example-es-cluster
spec:
client-node-replicas: 3
master-node-replicas: 2
data-node-replicas: 3
zones:
- us-east-1c
- us-east-1d
- us-east-1e
data-volume-size: 10Gi
java-options: "-Xms1024m -Xmx1024m"
snapshot:
scheduler-enabled: true
bucket-name: elasticsnapshots99
cron-schedule: "@every 2m"
storage:
type: gp2
storage-class-provisioner: kubernetes.io/aws-ebs
αααααΌαααΆααααααΆααααααα·ααααα·αα
CoreOS ααΆααααααΎαααααΆαααααΆααααααααα½αααΆαααααα·ααααα αα αααααααΎααΆαααΎ Operatorsα αααααΈααΆααΆααα·ααααααΆααααα·ααααα·ααααΆααα’ααααΆααααααααα»αααα (ααααΌαααΆααααααΎαα‘αΎααααααΆαααααααα·ααΈααΆααααΆαααα½ααααααΆααααααα αα·ααααααΌαααΆαααααΆααααααααΆ) ααΆααααααΎααααααα½αααααααΌαααααα’ααααΎααααααααααααααααααααααααααααααΌαααΆαααΌα ααΆααααααα
- ααΆαααα‘αΎαααααΌαααααααΎα‘αΎαααΆαααααααα½α ααΆαααΆαααααααΆα: kubectl αααααΎα -f SOME_OPERATOR_URL/deployment.yaml - α αΎααα·αααααΌαααΆααααααααΆαααααααααα
- αα αααααα‘αΎαααααα·ααααα·αααα αααα»α Kubernetes ααααααααΆααΈααΈααΈααααΈααααΌαααααααΌαααΆααααααΎα (ααααΆαααΆααΈααΈααΈ). ααΎααααΈααΎαααααΎαααΆααααααα·ααΈ (cluster instances) αα·αααααααααααα½αααΆααααααααα (ααΆαααααΎαα αα α»ααααααααΆααααα ααααΆααααααΌαααα αααα) α’αααααααΎααααΆααααΉαααααΎαααααααααα
- αα αααααΆαααα’αΆα ααααΎαα ααΆα α’ααααα½αααααααΎαα»ααααααααααΆααααααΎαα‘αΎααα αααα»α Kubernetes ααΌα ααΆ ααααΆαααα ΠΈ αα»αα ααααααΎααααΈααααΎααΌααααααΆαααΆααααα αα·αα’αΆα αααααΆαα
- ααΆαααΆαααΆαααααααΆαααααααααααααααα·ααααα·αα αα·αααΆαααΆαααααααααΆααααααα αΆααααααααΆαααααααααΎαα‘αΎααααα’αααααααΎααααΆααα
- ααααα·αααΎααααα·ααααα·ααααααΌαααΆαααα αα αααααα·ααΈαααα½αααΆαα½αααααααααααΎαααΆααααααααΆαααΆαααααΆααααααΌαα
- α’αααααααΎααααΆαααα½αααα’αΆα ααααααααααααααα·ααΈαααα ααααΆα αα·ααααα αααΆαα’αΆααααααααααααααα·ααΈα αααααααΆαα’αΆααααααααααα·ααΈααΊααΆαααααααΌαα αααααα αΆααααα·ααααα·ααΆα αα·ααα»ααααα·ααΆα ααΌα ααααααααα·ααααα·ααααααΌααααα½αα’αααααααΎααααΆαααααα»ααααα αΆαααα
- ααααα·ααααα·αααα½αααααααΌαααΆαααΆααααααααααααΎα§αααααααΌα ααΆ Chaos Monkey ααααααααααΆααααΆααααααα’αΆα ααΎαααΆααα αααα»ααα ααΆαααααα αα·ααααααΆαα
ααααα·ααααα·αα etcd
α§ααΆα αααααααΆαα’αα»ααααααααα·ααααα·αα - ααααα·ααααα·αα etcd,
α αΎαα αΆααααΆααααΈ etcd ααααΌαααΆααααααΎαα‘αΎαααααααα αααα»α CoreOS ααΆαα·αααΆα‘αΌααΈααααΆαααααα»αααΆαααΎα Operator ααααααΆαααα αΆααααα½αααΆααΎαααααΌαα ααΎααΆααααααΎααΆααααΆαααΌα ααααα ? αααααα·ααααΆααααα·ααααα·αα αα ααααΌαααΆααααααααααααΆαααΆαα»ααΈα
- ααααααα ααααα·ααααα·αααααα½ααα·αα·αααααααΆαααΆαααα ααααααααααααΎ Kubernetes API α
- ααΆααα·ααΆαα αααααααααΆααα»αααααΆαααΆαααααΆαααΆααα αα α»αααααα αα·αααααΆαααΆααααα’αααα ααααΆα (ααααααααααΆαααααααα ααΆααααααααα’αααααααΎααααΆαα)α
- αααααααΆαα αααααααΆαααΆααα»αααααΆαααααΆαααααΎααααααααΎ APIs ααααΆαααα etcd αα·α/α¬ Kubernetes α
ααΎααααΈα’αα»αααααααααα·ααααΆααα αα»αααΆαααααΌαααΆααααα
ααα
αααα»αααααα·ααααα·αα αααααΎα/ααααααΆα (αααααΎα αα·ααα»ααααΆαα·ααααα»α etcd) αα·α ααααΌαααα α (ααΆαααααΆααααααΌαα
ααα½ααααΆαα·ααααα»α) α ααΆαααααΉαααααΌαααααααα·ααααα·ααΆαααααααΆααααΌαααΆααααα½ααα·αα·ααααααααααΎα§αααααααααΎααααΆαααααααΆααααααΎαα‘αΎααααα»ααααααααα Chaos Monkey ααΈ Netflix αααααΊα§α ααΆααααααΆαααααα·α etcd αααα
αααααα
αααααΆααααααα·ααααα·ααΆααααααααα etcd ααααα·ααααα·αααααααααΌααααααααα·αααααααααα ααααα»ααα»α (αααααααααααααααα· αα·αααΎααα·αααΎαα ααααα’αααααααΎααααΆαα ααΆααααααΎαα αααΆααα ααααααααα»ααα»α - αα αααα»αααΆαααααααα ααΆαααααααα ααΆαααααααααΆααααΎααααΈαααααααΆααΎααααΌααααααΎαααΆααΉαααΆααααα»ααααΆ αα·αα ααα½αααα»ααααΆααααααααΌααααααΆαα»α - αα·αααΆαααααΆαα‘αΎααα·αααΌααα·ααααααααΈαα½αααααΆαααααααααΆαα) αα·α ααααΎα±αααααααΎαα‘αΎα (ααααΎαα αα α»ααααααααΆαααΆαααα‘αΎα etcd αααααααΆααααααααΆααα αΆα) α
ααΎααΆαααααΎααΆαααΆαα½αααααα·ααααα·ααααΎααα ααΌα α’αααΈ?
$ kubectl create -f https://coreos.com/operators/etcd/latest/deployment.yaml
$ kubectl create -f https://coreos.com/operators/etcd/latest/example-etcd-cluster.yaml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
etcd-cluster-0000 1/1 Running 0 23s
etcd-cluster-0001 1/1 Running 0 16s
etcd-cluster-0002 1/1 Running 0 8s
etcd-cluster-backup-tool-rhygq 1/1 Running 0 18s
ααααΆαααΆααα
αα
α»ααααααααααααααα·ααααα·αα etcd ααΊααΆααααααααΆ αααααΆαααΆα Kubernetes 1.5.3+ αα·α etcd 3.0+ ααΎααααΈααααΎαααΆαα ααΌαααααα αα·αα―αααΆα (αα½αααΆααααΆαααααΆααααααΆααααΆαααααΎααααΆαα) ααΆααα
ααΆαα’αα»ααααα§ααΆα ααααα½ααααααΈ CoreOS ααααΌαααΆααααααΎαα‘αΎα -
ααααΆαααΆα αα·αααΆαααααΉααα»α
5 ααααΆαααααααα»ααα α αΆααααΆααααΈααΆααααααΆαααααααααα·ααααα·αα Kubernetes α αα ααααΆαααΆαα’αα»ααααααΈαααα»ααααααααααΆααα αααα»αααααΆαα CoreOS ααααΌαααΆα (αααααΆαα etcd αα·α Prometheus) α ααΆααααΈααα·αααΆααααΆααααααααααααααααα½ααααα α‘αΎααα ααα»ααααααΆαααααααααΆα α·αααααααΌαααΆαα’αααααααΆαααααΆααααααα
α’αααα’αα·αααααααααααααΆ "α’ααΆαααααα’αααααααΎααααΆααααα‘αΎααααααα·ααΈ Postgres Operators Cassandra Operators α¬ Redis Operators αα ααΎα ααααα Kubernetes αααααα½ααα α αΎαααααΎααΆαααΆαα½αα’αααααΆααααα’αΆα ααααΎααΆαααααααΆαααΆααααααααα·ααΈααΆααααααααΆαααΆααααα½αααΌα ααΆαααΆαααααααΆααααααα·ααΈα αααααααααααα·ααΈαααααΆαααααΆαααααααΊαααααααααααα" ααΈαα½α ααααα·ααααα·ααααΈα’αααα’αα·ααααααααΆααΈααΈααΈ αα·αααΆα αΆααααααΎαααα α‘αΎαα
-
ααααα·ααααα·αα Elasticsearch ααΈαα ααααΆα UPMC; -
ααααα·ααααα·αα PostgreSQL ααΈαα·αααααα Crunchy (ααΆααααααΆααα α α»αααααΈααΆ 2017); -
ααααα·ααααα·αα Rook ααΈα’ααααα·αααααααααααααααααα»ααα·ααααααα ααα αΆααααααα’ααααΎ Ceph (Rook αααα·ααααα»αααααΆαααΆαα’αΆααα αααΆ); -
ααααα·ααααα·αα Openstack ααΈ SAP CCloud α
αα
α―ααααα·ααΈααααααα·ααΈα₯ααα·ααααααααααααα»αααααα’αΊααα»α FOSDEM αααααΆαααααΎα‘αΎααααα»ααααα»αααα ααααΆα 2017 αα
ααΈαααα»αααααα»α
ααα ααα Josh Wood ααααΈ CoreOS ααΆααααααΆαααΆ ααααα·ααααα·αααα
αααα»α
PS ααΌαα’ααα»αα
ααααααΆαα
αΆααα’αΆααααααααααα’ααααα
αααα»αα’ααααα! ααΆααα
ααΆαααααααααααααααααΎααααΎααααΈαα»αα±ααααααΆααααααΆα αα·αααΌαααααααααΈααα
ααΎααΆαααααααααααααααααα DevOps αα·α GNU/Linux - ααΎαααΉαααααααααααΆαααΆααΆαααα
αΆα!
ααααα: www.habr.com