ืืืขืื ืขื ืืืฉืืืื ืืฆืืืื ื-Kubernetes
ืืืืจื, ืืฉืงื ืืืจืืื ื ืืกืคืช ืฉื ืืคืืืงืฆืืืช ืืฉืืจืืชืื ืืื ืงืื ืืืฉืจ ืืืืืจ ืืืงืจืื ืืืกืืืืื ืืืกืจื ืืืื ื, ืืืืืจ. ืืืื ืืฉืืืจ ื ืชืื ืื. ื ืื ืืืคืขืื ืฉืืจืืชืื ืืืื ื-Kubernetes, ืืืืฆืขืืช ืืืฉืงื ื-API ืืกืื ืืจืืืื ืฉืื, ืื ืืื ืงืืจื "ืืืืฅ ืืงืืคืกื": ืขื ืคื ืชืฆืืจืืช ืกืื ืืจืืืืช, ืืืื ืืขืจื ืฉืื ืคืจืืื ืื ืงืกื.
ืืืืืื ืคืฉืืืืช, ืืื ืืืฉืืง ืขืื ืืืืฉื ืขืืชืงืื ืฉื ื-backend ื-PHP/Ruby/Python ืืืฉืืื ืฉื ืงืื ืืืื ืจืื, ืฆืจืื ืจืง ืืืืืืจ ืฉืจืช ืืืฉ 5 ืคืขืืื ืืืืขืชืืง ืืช ืืืงืืจืืช. ืืืืืื ืฉืื ืงืื ืืืงืืจ ืืื ืกืงืจืืคื ื-init ื ืืฆืืื ืืชืืื ื, ืงื ื ืืืื ืฉื ืืืฉืื ืืกืจ ืืฆื ืืืคื ืืืืื ืืจื ืืืืืืื. ืืคื ืฉืืืืื ืงืื ืืืื ืจืื ืืืจืืืืงืืืจืช ืืืงืจื-ืฉืืจืืชืื ืืืืขืื ืืืื, ืืงืืฉื ืืชืืื ืืคืืืงืฆืืืช ืืืืืชืืืช, ืืืืืจ ืขื ืืชืืื ืฉื ื ืชืื ืื ืืืื ืืกืื ื ืชืื ืื ืืืืืื ืื (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). ืื ืชืงืฃ ืื ืืชืืื ื ืืืืืฉืืช ืืืืคื ืขืฆืืื ืืฉืืื ืงืืืจืื (ืืืืืื, Percona XtraDB ื- Cassandra), ืืื ืืชืืื ื ืืืืจืฉืช ืืื ืขืืจ ื ืคืจืืื ืื ืืืื (ืืืื Redis, MySQL, PostgreSQL...).
ืืชืขืืจืจืื ืงืฉืืื ืืืื ืฉืงืื ืืืงืืจ ืืืฉืงืช ืืฉืืจืืช ืืืจ ืื ืืกืคืืงืื - ืฆืจืื ืืืฆืข ืขืื ืืื ืฉืืืื. ืืื ืืคืืืช, ืืขืชืง ืืช ืื ืชืื ืื ื/ืื ืืฆืืจืฃ ืืืฉืืื. ืืืชืจ ืืืืง, ืฉืืจืืชืื ืืื ืืืจืฉืื ืืื ื ืืืฆื ืืืชืืื ืืืชื, ืืขืืื ืืืืืืืจ ืืืชื ืืืืฉ ืืื ืืืืื ื ืชืื ืื ืื ืืืกืจ ืืืื ืืช ืืื ืืช. ืืชืืฉืืืช ืืฆืจืืื ืืื ื ืงืจืืช "ืืืข ืชืคืขืืื".
ืืคืขืืื CoreOS
ืขื ืื ืช "ืืชืื ืช" ืืืข ืชืคืขืืื, ืืกืืฃ ืืฉื ื ืฉืขืืจื ืคืจืืืงื CoreOS
ืืคืขืืืื ืืืฉืชืืฉืื ืืืจืืืืื ืืช ืืืืืืช ืืืืื ืฉื Kubernetes (ืืืื. StatefulSets, ืจืื ืืช ืืืืื ืืืื) ืืืคืฉืจืื ืืืืืื DevOps ืืืืกืืฃ ืืืข ืชืคืขืืื ืืงืื ืืืืฉืื.
ืืืจืช ืืืคืขืื - ืืกืคืง ืืืฉืชืืฉ ืืืฉืง API ืืืืคืฉืจ ืื ืื ืื ืืฉืืืืช ืืืฉืืืื ืืจืืืืช ืืืฉืืื Kubernetes, ืืืื ืืืฉืื ืื ื ืืฆื ืืชืืช ืืืืกื ืืื ืืข (ืืืื ื ืชืื ืื ืืื ืืขืฉืืช ืืืชื, ืืืื ืคืงืืืืช ืขืืืื ืฆืจืื ืืืคืขืื ืืื ืืฉืืืจ ืขื ืืืฉืืื ). ืืืขืฉื, ื-Operator ื ืืขื ืืคืฉื ืืื ืืืคืฉืจ ืืช ืืขืืืื ืขื ืืืคืืืงืฆืื ืืชืื ืืืฉืืื, ืืืืคืื ืืช ืืืฆืืข ืืืฉืืืืช ืืชืคืขืืืืืช ืืืืืืืืืืช ืฉืืขืืจ ืืื ืฆืจืื ืืคืชืืจ ืืืืคื ืืื ื.
ืืื ืืืคืขืืืื ืขืืืืื
ReplicaSets Kubernetes ืืืคืฉืจืช ืืฆืืื ืืช ืืืกืคืจ ืืจืฆืื ืฉื ืคืืืื ืคืืขืืื, ืืืืงืจืื ืืืืืืื ืฉืืกืคืจื ื ืฉืืจ (ืขื ืืื ืืฆืืจื ืืืืืงื ืฉื ืคืืืื). ืืืคืจืืืจ ืขืืื ืืฆืืจื ืืืื, ืืืืกืืฃ ืกื ืฉื ืืืข ืชืคืขืืื ืืืฉืื ืืืืงืจ Kubernetes ืกืื ืืจืืืื ืืืืคืฉืจืื ืื ืืืฆืข ืคืขืืืืช ื ืืกืคืืช ืืื ืืชืืื ืืืกืคืจ ืืืจืืฉ ืฉื ืืฉืืืืช ืืืฉืื.
ืืื ืื ืฉืื ื ื StatefulSets, ืืืืืขื ืืืืฉืืืื ืฉืืืจืฉืื ืฉืืืฉืืื ืืกืคืง ืืื ืืฉืืืื ืกืืืืื ืืืื ืืืกืื ื ืชืื ืื ืื ืืชืืืืช IP ืกืืืืืช? ืขืืืจ ืืืฉืืืื ืืืื, ืืืคืขืืืื ืืืืืื ืืืฉืชืืฉ StatefulSets (ืืืงืื ReplicaSets) ืืืกืืก, ืืฆืืข ืืืืืืฆืื ื ืืกืคืช: ืืืฆืข ืืช ืืคืขืืืืช ืืืจืืฉืืช ืืืงืจื ืฉื ืงืจืืกืืช, ืืืฆืข ืืืืืืื, ืืขืืื ืืช ืืชืฆืืจื ืืื'.
ืืคืืื, ืืื ืื ืื ืขืืื ืืืืคืจืืืจ ืืื ืืืื ืื ืื ืฉ:
- ื ืจืฉื ืืืืฉืง API ืืืืจืืขืื ื-Kubernetes;
- ืืงืื ืืื ื ื ืชืื ืื ืขื ืืืขืจืืช (ืขืืื ReplicaSets, ืชืจืืืืื, ืฉืืจืืชืื ืืืืื.);
- ืืงืื ื ืชืื ืื ืขื ืืฉืืื ืฆื ืฉืืืฉื (ืจืื ืืืืืืืช ืืืื);
- ืืืื ืืืจืื/ืฉืื ืื ืืฉืืื ืฆื ืฉืืืฉื (ืืืืืื, ืืื ืืฉื ืืช ืืช ืืืืื, ืืฉื ืืช ืืช ืืืจืกื, ืืื ืืืื);
- ืืืื ืืฉืื ืืืื ืืืฆื ืืืขืจืืช (ืืขืจื ืฉืื ReplicaSets, ืชืจืืืืื, ืฉืืจืืชืื ืืืืื.);
- ืืืฉืื ืืืืชืจ:
- ืงืืจื ืืืืฉืง ื-API ืฉื Kubernetes ืืืฆืืจ ืืช ืื ืื ืฉืืื ืฆืจืื (ืฉืื, ืืฉืื ReplicaSets, ืชืจืืืืื, ืฉืืจืืชืื...),
- ืืืฆืข ืงืฆืช ืงืกื (ืืื ืืคืฉื, ืืคืฉืจ ืืืฉืื ืฉื-Operator ื ืื ืก ืืชืจืืืืื ืขืฆืื ืืงืืจื ืคืงืืืืช, ืืืฉื, ืืื ืืืฆืืจืฃ ืืืฉืืื ืื ืืฉืืจื ืืช ืคืืจืื ืื ืชืื ืื ืืขืช ืขืืืื ืืจืกื).
ืืืขืฉื, ืืคื ืฉื ืืชื ืืจืืืช ืืืชืืื ื, ืคืฉืื ืืชืืืกืคืช ืืคืืืงืฆืื ื ืคืจืืช ื-Kubernetes (ืจืืื ืคึผึฐืจึดืืกึธื ั ReplicaSet), ืืฉืจ ื ืงืจื ืืืคืขืื. ืืื ืื ืืชืจืืื ืจืืื (ืืืจื ืืื ืจืง ืืื) ืืืืื, ืืื ืืืจืื ืจืง ืขื ืืจืื ืฉืืืช. ืืคืืืงืฆืืืช ืืคืขืื ืื ืืืืฉืืช ืืช ื-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 ืืืืฉื ืืช ืืืคืืกืื ืืขืืงืจืืื ืฉืืชืงืืื ืขื ืืื ืืื ืืกืื ืชืื ืืื ืขืืืื ืขื ืืืคืจืืืจืื. ืืืจืืช ืืขืืืื ืฉืื ืืืคืขืืืื ืื ืืื ืืืืืืืืืืื (ื ืืฆืจื ืขืืืจ ืืคืืืงืฆืื ืกืคืฆืืคืืช ืขื ืืืคืืื ืื ืืฆืจืืื ืืฉืื), ืืฆืืจืชื ืืืืืช ืืืชืืกืก ืขื ืกืื ืฉื ืืกืืจืช ืืืืืื ืืช ืืืจืืฉืืช ืืืืืช:
- ืืืชืงื ื ืืืืืช ืืืืขืฉืืช ืืืืฆืขืืช ืืืื ืคึผึฐืจึดืืกึธื: kubectl create -f SOME_OPERATOR_URL/deployment.yaml - ืืืื ื ืืืจืฉืื ืคืขืืืืช ื ืืกืคืืช.
- ืืขืช ืืชืงื ืช ืืคืขืื ื-Kubernetes, ืืฉ ืืืฆืืจ ืกืื ืฆื ืฉืืืฉื ืืืฉ (ThirdPartyResource). ืืื ืืืคืขืื ืืืคืขื ืืืฉืืืื (ืืืคืขื ืืฉืืื) ืืื ืื ืืืชื ืืืืฉื (ืขืืืื ืืจืกืืืช, ืฉืื ืื ืืืื ืืื'), ืืืฉืชืืฉ ืืฉืชืืฉ ืืกืื ืื.
- ืืืืืช ืืืคืฉืจ, ืขืืื ืืืฉืชืืฉ ืืคืจืืืืืืืื ืืืืื ืื ื-Kubernetes, ืืืื ืฉืืจืืชืื ะธ ReplicaSetsืืืฉืชืืฉ ืืงืื ืืืืง ืืืืื.
- ืืืจืฉ ืชืืืืืช ืืืืืจ ืฉื ืืคืขืืืื ืืชืืืื ืืืจืกืืืช ืืฉื ืืช ืืืชืจ ืฉื ืืฉืืืื ืฉื ืืฆืจื ืขื ืืื ืืฉืชืืฉืื.
- ืื ืืืคืขืื ืืืกืจ, ืืืืฉืื ืขืฆืื ืืืืจ ืืืืฉืื ืืคืขืื ืืื ืฉืื ืืืื.
- ืืืฉืชืืฉืื ืฆืจืืืื ืืืืืช ืืกืืืืื ืืืืืืจ ืืช ืืจืกืช ืืืคืืืงืฆืื ืืจืฆืืื ืืืืจืื ืขืืืื ื ืืจืกืช ืืคืืืงืฆืื. ืืืกืจ ืขืืืื ื ืชืืื ื ืืื ืืงืืจ ื ืคืืฅ ืืืขืืืช ืชืคืขืื ืืืืืื, ืืืื ืืืคืขืืืื ืืืืืื ืืกืืืข ืืืฉืชืืฉืื ืืขื ืืื ืื.
- ืืฉ ืืืืืง ืืช ืืืคืขืืืื ืขื ืืื ืืื Chaos Monkey, ืืืืื ืืฉืืื ืคืืื ืฆืืืืืื ืืชืจืืืืื, ืืชืฆืืจืืช ืืืจืฉืช.
etcd ืืคืขืื
ืืืืื ืืืืฉืื ืืคืขืื - ืืคืขืื ืืื',
ืืืืืืื ืฉ-etcd ื ืืฆืจ ืื ื-CoreOS, ืื ืืื ืื ืืืืื ื ืืจืืืช ืืช ื-Operator ืฉืื ืืืคืืข ืจืืฉืื. ืืื ืืื ืขืืื? ืืืืืงื ืืืคืจืืืจ ืืื' ื ืงืืข ืขื ืืื ืฉืืืฉื ืืจืืืืื:
- ืืฆืคืืช. ืืืคืขืื ืขืืงื ืืืจ ืืฆื ืืืฉืืื ืืืืฆืขืืช ื-API ืฉื Kubernetes.
- ืึธื ึธืึดืืึธื. ืืืฆื ืืืืืื ืืื ืืืฆื ืื ืืืื ืืืื ืืืฆื ืืจืฆืื (ืืืืืจ ืขื ืืื ืชืฆืืจืช ืืืฉืชืืฉ).
- ืคืขืืื. ืคืืชืจ ืืืืืื ืฉืืืื ืืืืฆืขืืช ืืืฉืงื API ืฉื ืฉืืจืืช etcd ื/ืื Kubernetes.
ืืื ืืืืฉื ืืช ืืืืืืื ืืื, ืืืื ื ืคืื ืงืฆืืืช ื-Operator ืฆืืจ/ืืจืืก (ืืฆืืจื ืืืืืงื ืฉื ืืืจื ืืฉืืื etcd) ื ืฉืื ืื ืืืืื (ืฉืื ืื ืืืกืคืจ ืืืจื ืืืฉืืื). ื ืืื ืืช ืคืขืืืชื ื ืืืงื ืืืืฆืขืืช ืืื ืขืืจ ืฉื ืืฆืจ ืืืืืชื ืฉื Chaos Monkey ื-Netflix, ืืืืืจ. ืืจื ืชืจืืืืื ืืื' ืืืืคื ืืงืจืื.
ืืืคืขืื ืืืื ืฉื 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 Operator ืืื ืืจืกืช ืืื, ืืืืืืืช ืืช Kubernetes 1.5.3+ ื-etcd 3.0+ ืืื ืืคืขืื. ืงืื ืืงืืจ ืืชืืขืื (ืืืื ืืืจืืืช ืฉืืืืฉ) ืืืื ืื ืืืชืืืช
ืืืืื ื ืืกืคืช ืืืืฉืื ื-CoreOS ื ืืฆืจ -
ืกืืืืก ืืกืืืืืื
5 ืืืืฉืื ืืืคื ืืื ืืืืจืื ืขื ืืคืขืืื Kubernetes. ืขืืืื ืืฉ ืจืง ืฉื ื ืืืฉืืืื ืืืื ืื ืืืืืจ CoreOS ืืจืฉืื (ืขืืืจ etcd ื-Prometheus). ืฉื ืืื ืขืืืื ืื ืืืืขื ืืืจืกืืืช ืืืฆืืืืช ืฉืืื, ืืื ืืชืืืืืืืืช ื ืฆืคื ืขื ืืกืืก ืืืื.
ืืืคืชืืื ืืืืื "ืขืชืื ืฉืื ืืฉืชืืฉืื ืืชืงืื ืื ืืช Postgres Operators, Cassandra Operators ืื Redis Operators ืืืฉืืืืืช ื-Kubernetes ืฉืืื ืืขืืืืื ืขื ืืืฉืืืืช ืื ืืชื ืืช ืืืจืืื ืฉื ืืืฉืืืื ืืื ืืืืชื ืงืืืช ืืื ืคืจืืกืช ืืขืชืงืื ืฉื ืืืฉืืื ืืื ืืจื ื ืืกืจื ืืืื ื". ืจืืฉืื ืืคืขืืืื ืืืคืชืื ืฆื ืฉืืืฉื ืืืืช ืืชืืื ืืืืคืืข:
-
ืืคืขืื Elasticsearch ื-UPMC Enterprises; -
ืืคืขืื PostgreSQL ื-Crunchy Data (ืืืืจื ืืกืืฃ ืืจืฅ 2017); -
ืืคืขืื ืฆืจืื ืืืืจื ืืขืจืืช ืืืกืื ื ืชืื ืื ืืืืืจืช ืืืืืกืกืช ืขื Ceph (Rook ื ืืฆื ืืกืืืืก ืืืคื); -
ืืคืขืืื Openstack ื-SAP CCloud.
ืืืืขืืืช ืืชืืื ื ืืืื ืืืช ืืืืืื ืืืืจืืคื FOSDEM, ืฉืืชืงืืืื ืืคืืจืืืจ 2017 ืืืจืืกื, ืืืจืื ื'ืืฉ ืืื ื- CoreOS ืขื ืืคืขืืืื ื
ื .ื. ืชืืื ืขื ืืชืขื ืืื ืืชื ืืืืืจ! ืืืจืฉื ืืืจืื ืฉืื ื, ืืื ืื ืืคืกืคืก ืืืืจืื ืืืชืืื ืื ืืืฉืื ื-DevOps ืืื ืืืื ืืขืจืืช GNU/Linux - ื ืคืจืกื ืืืชื ืืืืคื ืงืืืข!
ืืงืืจ: www.habr.com