ืื•ืคืจื˜ื•ืจื™ื ืขื‘ื•ืจ Kubernetes: ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ื™ื™ืฉื•ืžื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื

ื”ื‘ืขื™ื” ืขื ื™ื™ืฉื•ืžื™ื ืžืฆื‘ื™ื™ื ื‘-Kubernetes

ื”ื’ื“ืจื”, ื”ืฉืงื” ื•ื”ืจื—ื‘ื” ื ื•ืกืคืช ืฉืœ ืืคืœื™ืงืฆื™ื•ืช ื•ืฉื™ืจื•ืชื™ื ื”ื™ื ืงืœื” ื›ืืฉืจ ืžื“ื•ื‘ืจ ื‘ืžืงืจื™ื ื”ืžืกื•ื•ื’ื™ื ื›ื—ืกืจื™ ืžื“ื™ื ื”, ื›ืœื•ืžืจ. ืžื‘ืœื™ ืœืฉืžื•ืจ ื ืชื•ื ื™ื. ื ื•ื— ืœื”ืคืขื™ืœ ืฉื™ืจื•ืชื™ื ื›ืืœื” ื‘-Kubernetes, ื‘ืืžืฆืขื•ืช ืžืžืฉืงื™ ื”-API ื”ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœื•, ื›ื™ ื”ื›ืœ ืงื•ืจื” "ืžื—ื•ืฅ ืœืงื•ืคืกื”": ืขืœ ืคื™ ืชืฆื•ืจื•ืช ืกื˜ื ื“ืจื˜ื™ื•ืช, ืžื‘ืœื™ ืœืขืจื‘ ืฉื•ื ืคืจื˜ื™ื ืื• ืงืกื.

ื‘ืžื™ืœื™ื ืคืฉื•ื˜ื•ืช, ื›ื“ื™ ืœื”ืฉื™ืง ืขื•ื“ ื—ืžื™ืฉื” ืขื•ืชืงื™ื ืฉืœ ื”-backend ื‘-PHP/Ruby/Python ื‘ืืฉื›ื•ืœ ืฉืœ ืงื•ื ื˜ื™ื™ื ืจื™ื, ืฆืจื™ืš ืจืง ืœื”ื’ื“ื™ืจ ืฉืจืช ื—ื“ืฉ 5 ืคืขืžื™ื ื•ืœื”ืขืชื™ืง ืืช ื”ืžืงื•ืจื•ืช. ืžื›ื™ื•ื•ืŸ ืฉื’ื ืงื•ื“ ื”ืžืงื•ืจ ื•ื’ื ืกืงืจื™ืคื˜ ื”-init ื ืžืฆืื™ื ื‘ืชืžื•ื ื”, ืงื ื” ืžื™ื“ื” ืฉืœ ื™ื™ืฉื•ื ื—ืกืจ ืžืฆื‘ ื”ื•ืคืš ืœืืœืžื ื˜ืจื™ ืœื—ืœื•ื˜ื™ืŸ. ื›ืคื™ ืฉื—ื•ื‘ื‘ื™ ืงื•ื ื˜ื™ื™ื ืจื™ื ื•ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื™ืงืจื•-ืฉื™ืจื•ืชื™ื ื™ื•ื“ืขื™ื ื”ื™ื˜ื‘, ื”ืงื•ืฉื™ ืžืชื—ื™ืœ ืืคืœื™ืงืฆื™ื•ืช ืžืžืœื›ืชื™ื•ืช, ื›ืœื•ืžืจ ืขื ื”ืชืžื“ื” ืฉืœ ื ืชื•ื ื™ื ื›ื’ื•ืŸ ืžืกื“ื™ ื ืชื•ื ื™ื ื•ืžื˜ืžื•ื ื™ื (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra...). ื–ื” ืชืงืฃ ื”ืŸ ืœืชื•ื›ื ื” ื”ืžื™ื™ืฉืžืช ื‘ืื•ืคืŸ ืขืฆืžืื™ ืืฉื›ื•ืœ ืงื•ื•ืจื•ื (ืœื“ื•ื’ืžื”, Percona XtraDB ื•- Cassandra), ื•ื”ืŸ ืœืชื•ื›ื ื” ื”ื“ื•ืจืฉืช ื›ืœื™ ืขื–ืจ ื ืคืจื“ื™ื ืœื ื™ื”ื•ืœ (ื›ื’ื•ืŸ Redis, MySQL, PostgreSQL...).

ืžืชืขื•ืจืจื™ื ืงืฉื™ื™ื ื‘ื’ืœืœ ืฉืงื•ื“ ื”ืžืงื•ืจ ื•ื”ืฉืงืช ื”ืฉื™ืจื•ืช ื›ื‘ืจ ืœื ืžืกืคื™ืงื™ื - ืฆืจื™ืš ืœื‘ืฆืข ืขื•ื“ ื›ืžื” ืฉืœื‘ื™ื. ืœื›ืœ ื”ืคื—ื•ืช, ื”ืขืชืง ืืช ื”ื ืชื•ื ื™ื ื•/ืื• ื”ืฆื˜ืจืฃ ืœืืฉื›ื•ืœ. ืœื™ืชืจ ื“ื™ื•ืง, ืฉื™ืจื•ืชื™ื ืืœื” ื“ื•ืจืฉื™ื ื”ื‘ื ื” ื›ื™ืฆื“ ืœื”ืชืื™ื ืื•ืชื, ืœืขื“ื›ืŸ ื•ืœื”ื’ื“ื™ืจ ืื•ืชื ืžื—ื“ืฉ ืœืœื ืื•ื‘ื“ืŸ ื ืชื•ื ื™ื ืื• ื—ื•ืกืจ ื–ืžื™ื ื•ืช ื–ืžื ื™ืช. ื”ืชื—ืฉื‘ื•ืช ื‘ืฆืจื›ื™ื ืืœื• ื ืงืจืืช "ื™ื“ืข ืชืคืขื•ืœื™".

ืžืคืขื™ืœื™ CoreOS

ืขืœ ืžื ืช "ืœืชื›ื ืช" ื™ื“ืข ืชืคืขื•ืœื™, ื‘ืกื•ืฃ ื”ืฉื ื” ืฉืขื‘ืจื” ืคืจื•ื™ืงื˜ CoreOS ื”ื’ื™ืฉื• "ืžื—ืœืงื” ื—ื“ืฉื” ืฉืœ ืชื•ื›ื ื”" ืœืคืœื˜ืคื•ืจืžืช Kubernetes - ืžืคืขื™ืœื™ื (ืžื”ืื ื’ืœื™ืช "ืคืขื•ืœื”", ื›ืœื•ืžืจ "ืคืขื•ืœื”").

ืžืคืขื™ืœื™ื ื”ืžืฉืชืžืฉื™ื ื•ืžืจื—ื™ื‘ื™ื ืืช ื™ื›ื•ืœื•ืช ื”ืœื™ื‘ื” ืฉืœ Kubernetes (ื›ื•ืœืœ. StatefulSets, ืจืื” ืืช ื”ื”ื‘ื“ืœ ืœืžื˜ื”) ืžืืคืฉืจื™ื ืœืžื•ืžื—ื™ DevOps ืœื”ื•ืกื™ืฃ ื™ื“ืข ืชืคืขื•ืœื™ ืœืงื•ื“ ื”ื™ื™ืฉื•ื.

ืžื˜ืจืช ื”ืžืคืขื™ืœ - ืœืกืคืง ืœืžืฉืชืžืฉ ืžืžืฉืง API ื”ืžืืคืฉืจ ืœืš ืœื ื”ืœ ื™ืฉื•ื™ื•ืช ื™ื™ืฉื•ืžื™ื ืžืจื•ื‘ื•ืช ื‘ืืฉื›ื•ืœ Kubernetes, ืžื‘ืœื™ ืœื—ืฉื•ื‘ ืžื” ื ืžืฆื ืžืชื—ืช ืœืžื›ืกื” ื”ืžื ื•ืข (ืื™ืœื• ื ืชื•ื ื™ื ื•ืžื” ืœืขืฉื•ืช ืื™ืชื, ืื™ืœื• ืคืงื•ื“ื•ืช ืขื“ื™ื™ืŸ ืฆืจื™ืš ืœื”ืคืขื™ืœ ื›ื“ื™ ืœืฉืžื•ืจ ืขืœ ื”ืืฉื›ื•ืœ ). ืœืžืขืฉื”, ื”-Operator ื ื•ืขื“ ืœืคืฉื˜ ื›ื›ืœ ื”ืืคืฉืจ ืืช ื”ืขื‘ื•ื“ื” ืขื ื”ืืคืœื™ืงืฆื™ื” ื‘ืชื•ืš ื”ืืฉื›ื•ืœ, ื•ืœื”ืคื•ืš ืืช ื‘ื™ืฆื•ืข ื”ืžืฉื™ืžื•ืช ื”ืชืคืขื•ืœื™ื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ืฉื‘ืขื‘ืจ ื”ื™ื” ืฆืจื™ืš ืœืคืชื•ืจ ื‘ืื•ืคืŸ ื™ื“ื ื™.

ืื™ืš ื”ืžืคืขื™ืœื™ื ืขื•ื‘ื“ื™ื

ReplicaSets Kubernetes ืžืืคืฉืจืช ืœืฆื™ื™ืŸ ืืช ื”ืžืกืคืจ ื”ืจืฆื•ื™ ืฉืœ ืคื•ื“ื™ื ืคื•ืขืœื™ื, ื•ื”ื‘ืงืจื™ื ืžื‘ื˜ื™ื—ื™ื ืฉืžืกืคืจื ื ืฉืžืจ (ืขืœ ื™ื“ื™ ื™ืฆื™ืจื” ื•ืžื—ื™ืงื” ืฉืœ ืคื•ื“ื™ื). ืื•ืคืจื˜ื•ืจ ืขื•ื‘ื“ ื‘ืฆื•ืจื” ื“ื•ืžื”, ื•ืžื•ืกื™ืฃ ืกื˜ ืฉืœ ื™ื“ืข ืชืคืขื•ืœื™ ืœืžืฉืื‘ ื•ืœื‘ืงืจ Kubernetes ืกื˜ื ื“ืจื˜ื™ื™ื ื”ืžืืคืฉืจื™ื ืœืš ืœื‘ืฆืข ืคืขื•ืœื•ืช ื ื•ืกืคื•ืช ื›ื“ื™ ืœืชืžื•ืš ื‘ืžืกืคืจ ื”ื“ืจื•ืฉ ืฉืœ ื™ืฉื•ื™ื•ืช ื™ื™ืฉื•ื.

ื‘ืžื” ื–ื” ืฉื•ื ื” ืž StatefulSets, ื”ืžื™ื•ืขื“ ืœื™ื™ืฉื•ืžื™ื ืฉื“ื•ืจืฉื™ื ืฉื”ืืฉื›ื•ืœ ื™ืกืคืง ืœื”ื ืžืฉืื‘ื™ื ืกื˜ื˜ื™ื™ื ื›ื’ื•ืŸ ืื—ืกื•ืŸ ื ืชื•ื ื™ื ืื• ื›ืชื•ื‘ื•ืช IP ืกื˜ื˜ื™ื•ืช? ืขื‘ื•ืจ ื™ื™ืฉื•ืžื™ื ื›ืืœื”, ื”ืžืคืขื™ืœื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ StatefulSets (ื‘ืžืงื•ื ReplicaSets) ื›ื‘ืกื™ืก, ืžืฆื™ืข ืื•ื˜ื•ืžืฆื™ื” ื ื•ืกืคืช: ืœื‘ืฆืข ืืช ื”ืคืขื•ืœื•ืช ื”ื“ืจื•ืฉื•ืช ื‘ืžืงืจื” ืฉืœ ืงืจื™ืกื•ืช, ืœื‘ืฆืข ื’ื™ื‘ื•ื™ื™ื, ืœืขื“ื›ืŸ ืืช ื”ืชืฆื•ืจื” ื•ื›ื•'.

ืœืคื™ื›ืš, ืื™ืš ื›ืœ ื–ื” ืขื•ื‘ื“ ื”ืื•ืคืจื˜ื•ืจ ื”ื•ื ื“ืžื•ืŸ ืžื ื”ืœ ืฉ:

  1. ื ืจืฉื ืœืžืžืฉืง API ืœืื™ืจื•ืขื™ื ื‘-Kubernetes;
  2. ืžืงื‘ืœ ืžืžื ื• ื ืชื•ื ื™ื ืขืœ ื”ืžืขืจื›ืช (ืขืœื™ื” ReplicaSets, ืชืจืžื™ืœื™ื, ืฉื™ืจื•ืชื™ื ื•ื›ื•ืœื™.);
  3. ืžืงื‘ืœ ื ืชื•ื ื™ื ืขืœ ืžืฉืื‘ื™ ืฆื“ ืฉืœื™ืฉื™ (ืจืื” ื“ื•ื’ืžืื•ืช ืœืžื˜ื”);
  4. ืžื’ื™ื‘ ืœืžืจืื”/ืฉื™ื ื•ื™ ืžืฉืื‘ื™ ืฆื“ ืฉืœื™ืฉื™ (ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœืฉื ื•ืช ืืช ื”ื’ื•ื“ืœ, ืœืฉื ื•ืช ืืช ื”ื’ืจืกื”, ื•ื›ืŸ ื”ืœืื”);
  5. ืžื’ื™ื‘ ืœืฉื™ื ื•ื™ื™ื ื‘ืžืฆื‘ ื”ืžืขืจื›ืช (ื‘ืขืจืš ืฉืœื” ReplicaSets, ืชืจืžื™ืœื™ื, ืฉื™ืจื•ืชื™ื ื•ื›ื•ืœื™.);
  6. ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ:
    1. ืงื•ืจื ืœืžืžืฉืง ื”-API ืฉืœ Kubernetes ืœื™ืฆื•ืจ ืืช ื›ืœ ืžื” ืฉื”ื•ื ืฆืจื™ืš (ืฉื•ื‘, ืžืฉืœื• ReplicaSets, ืชืจืžื™ืœื™ื, ืฉื™ืจื•ืชื™ื...),
    2. ืžื‘ืฆืข ืงืฆืช ืงืกื (ื›ื“ื™ ืœืคืฉื˜, ืืคืฉืจ ืœื—ืฉื•ื‘ ืฉื”-Operator ื ื›ื ืก ืœืชืจืžื™ืœื™ื ืขืฆืžื ื•ืงื•ืจื ืคืงื•ื“ื•ืช, ืœืžืฉืœ, ื›ื“ื™ ืœื”ืฆื˜ืจืฃ ืœืืฉื›ื•ืœ ืื• ืœืฉื“ืจื’ ืืช ืคื•ืจืžื˜ ื”ื ืชื•ื ื™ื ื‘ืขืช ืขื“ื›ื•ืŸ ื’ืจืกื”).

ืื•ืคืจื˜ื•ืจื™ื ืขื‘ื•ืจ Kubernetes: ื›ื™ืฆื“ ืœื”ืคืขื™ืœ ื™ื™ืฉื•ืžื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื
ืœืžืขืฉื”, ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ืชืžื•ื ื”, ืคืฉื•ื˜ ืžืชื•ื•ืกืคืช ืืคืœื™ืงืฆื™ื” ื ืคืจื“ืช ืœ-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 ื’ื™ื‘ืฉื” ืืช ื”ื“ืคื•ืกื™ื ื”ืขื™ืงืจื™ื™ื ืฉื”ืชืงื‘ืœื• ืขืœ ื™ื“ื™ ืžื”ื ื“ืกื™ื ืชื•ืš ื›ื“ื™ ืขื‘ื•ื“ื” ืขืœ ืื•ืคืจื˜ื•ืจื™ื. ืœืžืจื•ืช ื”ืขื•ื‘ื“ื” ืฉื›ืœ ื”ืžืคืขื™ืœื™ื ื”ื ืื™ื ื“ื™ื‘ื™ื“ื•ืืœื™ื™ื (ื ื•ืฆืจื• ืขื‘ื•ืจ ืืคืœื™ืงืฆื™ื” ืกืคืฆื™ืคื™ืช ืขื ืžืืคื™ื™ื ื™ื ื•ืฆืจื›ื™ื ืžืฉืœื•), ื™ืฆื™ืจืชื ื—ื™ื™ื‘ืช ืœื”ืชื‘ืกืก ืขืœ ืกื•ื’ ืฉืœ ืžืกื’ืจืช ื”ืžื˜ื™ืœื” ืืช ื”ื“ืจื™ืฉื•ืช ื”ื‘ืื•ืช:

  1. ื”ื”ืชืงื ื” ื—ื™ื™ื‘ืช ืœื”ื™ืขืฉื•ืช ื‘ืืžืฆืขื•ืช ื™ื—ื™ื“ ืคึผึฐืจึดื™ืกึธื”: kubectl create -f SOME_OPERATOR_URL/deployment.yaml - ื•ืื™ื ื ื“ื•ืจืฉื™ื ืคืขื•ืœื•ืช ื ื•ืกืคื•ืช.
  2. ื‘ืขืช ื”ืชืงื ืช ืžืคืขื™ืœ ื‘-Kubernetes, ื™ืฉ ืœื™ืฆื•ืจ ืกื•ื’ ืฆื“ ืฉืœื™ืฉื™ ื—ื“ืฉ (ThirdPartyResource). ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื•ืคืขื™ ื™ื™ืฉื•ืžื™ื (ืžื•ืคืขื™ ืืฉื›ื•ืœ) ื•ืœื ื”ืœ ืื•ืชื ื‘ื”ืžืฉืš (ืขื“ื›ื•ืŸ ื’ืจืกืื•ืช, ืฉื™ื ื•ื™ ื’ื•ื“ืœ ื•ื›ื•'), ื”ืžืฉืชืžืฉ ื™ืฉืชืžืฉ ื‘ืกื•ื’ ื–ื”.
  3. ื‘ืžื™ื“ืช ื”ืืคืฉืจ, ืขืœื™ืš ืœื”ืฉืชืžืฉ ื‘ืคืจื™ืžื™ื˜ื™ื‘ื™ื ื”ืžื•ื‘ื ื™ื ื‘-Kubernetes, ื›ื’ื•ืŸ ืฉื™ืจื•ืชื™ื ะธ ReplicaSetsืœื”ืฉืชืžืฉ ื‘ืงื•ื“ ื‘ื“ื•ืง ื•ืžื•ื‘ืŸ.
  4. ื“ื•ืจืฉ ืชืื™ืžื•ืช ืœืื—ื•ืจ ืฉืœ ืžืคืขื™ืœื™ื ื•ืชืžื™ื›ื” ื‘ื’ืจืกืื•ืช ื™ืฉื ื•ืช ื™ื•ืชืจ ืฉืœ ืžืฉืื‘ื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ืžืฉืชืžืฉื™ื.
  5. ืื ื”ืžืคืขื™ืœ ื™ื•ืกืจ, ื”ื™ื™ืฉื•ื ืขืฆืžื• ืืžื•ืจ ืœื”ืžืฉื™ืš ืœืคืขื•ืœ ืœืœื ืฉื™ื ื•ื™ื™ื.
  6. ื”ืžืฉืชืžืฉื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื”ื’ื“ื™ืจ ืืช ื’ืจืกืช ื”ืืคืœื™ืงืฆื™ื” ื”ืจืฆื•ื™ื” ื•ืœืืจื’ืŸ ืขื“ื›ื•ื ื™ ื’ืจืกืช ืืคืœื™ืงืฆื™ื”. ื—ื•ืกืจ ืขื“ื›ื•ื ื™ ืชื•ื›ื ื” ื”ื•ื ืžืงื•ืจ ื ืคื•ืฅ ืœื‘ืขื™ื•ืช ืชืคืขื•ืœ ื•ืื‘ื˜ื—ื”, ื•ืœื›ืŸ ื”ืžืคืขื™ืœื™ื ื—ื™ื™ื‘ื™ื ืœืกื™ื™ืข ืœืžืฉืชืžืฉื™ื ื‘ืขื ื™ื™ืŸ ื–ื”.
  7. ื™ืฉ ืœื‘ื“ื•ืง ืืช ื”ืžืคืขื™ืœื™ื ืขื ื›ืœื™ ื›ืžื• Chaos Monkey, ื”ืžื–ื”ื” ื›ืฉืœื™ื ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื‘ืชืจืžื™ืœื™ื, ื‘ืชืฆื•ืจื•ืช ื•ื‘ืจืฉืช.

etcd ืžืคืขื™ืœ

ื“ื•ื’ืžื” ืœื™ื™ืฉื•ื ืžืคืขื™ืœ - ืžืคืขื™ืœ ื•ื›ื•', ืžื•ึผื›ึธืŸ ื‘ื™ื•ื ื”ื”ื›ืจื–ื” ืขืœ ืงื•ื ืกืคื˜ ื–ื”. ืชืฆื•ืจืช ืืฉื›ื•ืœ ื”-etcd ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžื•ืจื›ื‘ืช ืขืงื‘ ื”ืฆื•ืจืš ืœืฉืžื•ืจ ืขืœ ื”ืงื•ื•ืจื•ื, ื”ืฆื•ืจืš ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ืืช ื”ื—ื‘ืจื•ืช ื‘ืืฉื›ื•ืœ, ืœื™ืฆื•ืจ ื’ื™ื‘ื•ื™ื™ื ื•ื›ื•'. ืœื“ื•ื’ืžื”, ืงื ื” ืžื™ื“ื” ื™ื“ื ื™ ืฉืœ ืืฉื›ื•ืœ etcd ืคื™ืจื•ืฉื• ืฉืขืœื™ืš ืœื™ืฆื•ืจ ืฉื DNS ืขื‘ื•ืจ ื—ื‘ืจ ืืฉื›ื•ืœ ื—ื“ืฉ, ืœื”ืชื—ื™ืœ ื™ืฉื•ืช etcd ื—ื“ืฉื” ื•ืœื”ืชืจื™ืข ืœืืฉื›ื•ืœ ืขืœ ื”ื—ื‘ืจ ื”ื—ื“ืฉ (ื”ื•ืกืฃ ื—ื‘ืจ etcdctl). ื‘ืžืงืจื” ืฉืœ ื”-Operator, ื”ืžืฉืชืžืฉ ื™ืฆื˜ืจืš ืจืง ืœืฉื ื•ืช ืืช ื’ื•ื“ืœ ื”ืืฉื›ื•ืœ - ื›ืœ ื”ืฉืืจ ื™ืงืจื” ืื•ื˜ื•ืžื˜ื™ืช.

ื•ืžื›ื™ื•ื•ืŸ ืฉ-etcd ื ื•ืฆืจ ื’ื ื‘-CoreOS, ื–ื” ื”ื™ื” ื“ื™ ื”ื’ื™ื•ื ื™ ืœืจืื•ืช ืืช ื”-Operator ืฉืœื” ืžื•ืคื™ืข ืจืืฉื•ืŸ. ืื™ืš ื”ื•ื ืขื•ื‘ื“? ืœื•ื’ื™ืงื” ืื•ืคืจื˜ื•ืจ ื•ื›ื•' ื ืงื‘ืข ืขืœ ื™ื“ื™ ืฉืœื•ืฉื” ืžืจื›ื™ื‘ื™ื:

  1. ืœืฆืคื•ืช. ื”ืžืคืขื™ืœ ืขื•ืงื‘ ืื—ืจ ืžืฆื‘ ื”ืืฉื›ื•ืœ ื‘ืืžืฆืขื•ืช ื”-API ืฉืœ Kubernetes.
  2. ืึธื ึธืœึดื™ื–ึธื”. ืžื•ืฆื ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืœื‘ื™ืŸ ื”ืžืฆื‘ ื”ืจืฆื•ื™ (ืžื•ื’ื“ืจ ืขืœ ื™ื“ื™ ืชืฆื•ืจืช ื”ืžืฉืชืžืฉ).
  3. ืคืขื•ืœื”. ืคื•ืชืจ ื”ื‘ื“ืœื™ื ืฉื–ื•ื”ื• ื‘ืืžืฆืขื•ืช ืžืžืฉืงื™ API ืฉืœ ืฉื™ืจื•ืช etcd ื•/ืื• Kubernetes.

ืื•ืคืจื˜ื•ืจื™ื ืขื‘ื•ืจ 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+ ื›ื“ื™ ืœืคืขื•ืœ. ืงื•ื“ ืžืงื•ืจ ื•ืชื™ืขื•ื“ (ื›ื•ืœืœ ื”ื•ืจืื•ืช ืฉื™ืžื•ืฉ) ื–ืžื™ื ื™ื ื‘ื›ืชื•ื‘ืช GitHub.

ื“ื•ื’ืžื” ื ื•ืกืคืช ืœื™ื™ืฉื•ื ืž-CoreOS ื ื•ืฆืจ - ืžืคืขื™ืœ ืคืจื•ืžืชืื•ืก, ืื‘ืœ ื–ื” ืขื“ื™ื™ืŸ ื‘ื’ืจืกืช ืืœืคื (ืœื ื›ืœ ื”ืชื›ื•ื ื•ืช ื”ืžืชื•ื›ื ื ื•ืช ื™ื•ืฉืžื•).

ืกื˜ื˜ื•ืก ื•ืกื™ื›ื•ื™ื™ื

5 ื—ื•ื“ืฉื™ื ื—ืœืคื• ืžืื– ื”ื”ื›ืจื–ื” ืขืœ ืžืคืขื™ืœื™ Kubernetes. ืขื“ื™ื™ืŸ ื™ืฉ ืจืง ืฉื ื™ ื™ื™ืฉื•ืžื™ื ื–ืžื™ื ื™ื ื‘ืžืื’ืจ CoreOS ื”ืจืฉืžื™ (ืขื‘ื•ืจ etcd ื•-Prometheus). ืฉื ื™ื”ื ืขื“ื™ื™ืŸ ืœื ื”ื’ื™ืขื• ืœื’ืจืกืื•ืช ื”ื™ืฆื™ื‘ื•ืช ืฉืœื”ื, ืื‘ืœ ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ื ืฆืคื• ืขืœ ื‘ืกื™ืก ื™ื•ืžื™.

ื”ืžืคืชื—ื™ื ื—ื•ื–ื™ื "ืขืชื™ื“ ืฉื‘ื• ืžืฉืชืžืฉื™ื ืžืชืงื™ื ื™ื ืืช Postgres Operators, Cassandra Operators ืื• Redis Operators ื‘ืืฉื›ื•ืœื•ืช ื”-Kubernetes ืฉืœื”ื ื•ืขื•ื‘ื“ื™ื ืขื ื”ื™ืฉื•ื™ื•ืช ื”ื ื™ืชื ื•ืช ืœื”ืจื—ื‘ื” ืฉืœ ื™ื™ืฉื•ืžื™ื ืืœื” ื‘ืื•ืชื” ืงืœื•ืช ื›ืžื• ืคืจื™ืกืช ื”ืขืชืงื™ื ืฉืœ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ื—ืกืจื™ ืžื“ื™ื ื”". ืจืืฉื•ืŸ ืžืคืขื™ืœื™ื ืžืžืคืชื—ื™ ืฆื“ ืฉืœื™ืฉื™ ื‘ืืžืช ื”ืชื—ื™ืœ ืœื”ื•ืคื™ืข:

ื‘ื•ื•ืขื™ื“ืช ื”ืชื•ื›ื ื” ื”ื—ื™ื ืžื™ืช ื”ื’ื“ื•ืœื” ื‘ืื™ืจื•ืคื” FOSDEM, ืฉื”ืชืงื™ื™ืžื” ื‘ืคื‘ืจื•ืืจ 2017 ื‘ื‘ืจื™ืกืœ, ื”ื›ืจื™ื– ื’'ื•ืฉ ื•ื•ื“ ืž- CoreOS ืขืœ ืžืคืขื™ืœื™ื ื‘ ืœื”ื’ื™ืฉ ืชืœื•ื ื” (ืกืจื˜ื•ืŸ ื–ืžื™ืŸ ื‘ืงื™ืฉื•ืจ!), ืžื” ืฉืืžื•ืจ ืœืชืจื•ื ืœืฆืžื™ื—ืช ื”ืคื•ืคื•ืœืจื™ื•ืช ืฉืœ ืžื•ืฉื’ ื–ื” ื‘ืงื”ื™ืœืช ื”ืงื•ื“ ื”ืคืชื•ื— ื”ืจื—ื‘ื” ื™ื•ืชืจ.

ื .ื‘. ืชื•ื“ื” ืขืœ ื”ืชืขื ื™ื™ื ื•ืชืš ื‘ืžืืžืจ! ื”ื™ืจืฉื ืœืžืจื›ื– ืฉืœื ื•, ื›ื“ื™ ืœื ืœืคืกืคืก ื—ื•ืžืจื™ื ื•ืžืชื›ื•ื ื™ื ื—ื“ืฉื™ื ื‘-DevOps ื•ื‘ื ื™ื”ื•ืœ ืžืขืจื›ืช GNU/Linux - ื ืคืจืกื ืื•ืชื ื‘ืื•ืคืŸ ืงื‘ื•ืข!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”