Что означает 2/2 в выводе kubectl get all -n cass-operator

У меня есть кластер Kubernetes с 3 узлами, и я настроил на нем Cassandra с помощью Cass-Operator. Я следую инструкциям здесь - https://github.com/datastax/cass-operator

Что означает 2/2 в выводе следующей команды

kubectl get all -n cass-operator
NAME                                READY   STATUS    RESTARTS   AGE
pod/cass-operator-78c6469c6-6qhsb   1/1     Running   0          139m
pod/cluster1-dc1-default-sts-0      2/2     Running   0          138m
pod/cluster1-dc1-default-sts-1      2/2     Running   0          138m
pod/cluster1-dc1-default-sts-2      2/2     Running   0          138m

Означает ли это, что есть 3 центра обработки данных, в каждом из которых работает 2 узла cassandra? Это должно быть потому, что в моем кластере K8S всего 3 узла.

manuchadha25@cloudshell:~ (copper-frame-262317)$ gcloud compute instances list
NAME                                              ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
gke-cassandra-cluster-default-pool-92d544da-6fq8  europe-west4-a  n1-standard-1               10.164.0.26  34.91.214.233  RUNNING
gke-cassandra-cluster-default-pool-92d544da-g0b5  europe-west4-a  n1-standard-1               10.164.0.25  34.91.101.218  RUNNING
gke-cassandra-cluster-default-pool-92d544da-l87v  europe-west4-a  n1-standard-1               10.164.0.27  34.91.86.10    RUNNING

Или оператор Cassandra запускает два контейнера на узел K8S?

1 ответ

Решение

Когда вы развертываете какое-либо приложение, в одном модуле может быть более 1 контейнера. Если вы проверите документацию Kubernetes Pod, вы можете найти 2 типа:

Поды, запускающие один контейнер.

Модель "один контейнер на под" - наиболее распространенный вариант использования Kubernetes; в этом случае вы можете думать о подах как о оболочке вокруг одного контейнера, и Kubernetes управляет модулями, а не контейнерами напрямую.

Поды, которые запускают несколько контейнеров, которые должны работать вместе.

Pod может инкапсулировать приложение, состоящее из нескольких совместно расположенных контейнеров, которые тесно связаны и должны совместно использовать ресурсы. Эти совместно расположенные контейнеры могут образовывать единую связную единицу обслуживания - один контейнер, обслуживающий файлы из общего тома для общего доступа, в то время как отдельный контейнер "sidecar" обновляет или обновляет эти файлы. Pod объединяет эти контейнеры и ресурсы хранения как единый управляемый объект.

Более подробную информацию вы можете найти в этой документации.

Как Podконфигурация YAML с 2 контейнерами выглядит как можно найти здесь. В.spec.containers вы можете указать 2 или более контейнера.

Я развернул эти YAML.

$ kubectl get po -n cass-operator
NAME                             READY   STATUS    RESTARTS   AGE
cass-operator-78c9999797-gb88g   1/1     Running   0          4m26s
cluster1-dc1-default-sts-0       2/2     Running   0          4m12s
cluster1-dc1-default-sts-1       2/2     Running   0          4m12s
cluster1-dc1-default-sts-2       2/2     Running   0          4m12s

Теперь вам нужно описать стручок. В моем примере это:

$ kubectl describe po cluster1-dc1-default-sts-0 -n cass-operator

И под Containers: вы можете найти такие детали, как образ, порты, состояние, подключения и т. д.

Containers:
  cassandra:
    Container ID:   docker://49b58eacc380da6c29928677e84082373d4330a91c29b29f3f3b021e43c21a38
    Image:          datastax/cassandra-mgmtapi-3_11_6:v0.1.5
    Image ID:       docker-pullable://datastax/cassandra-mgmtapi-3_11_6@sha256:aa7d6072607e60b1dfddd5877dcdf436660bacd31dd4aa6c8c2b85978c9fd170
   ....
  server-system-logger:
    Container ID:  docker://d0b572e767236e2baab7b67d5ad0fc6656b862fc4e463aa1836de80d34f608ea
    Image:         busybox
    Image ID:      docker-pullable://busybox@sha256:2131f09e4044327fd101ca1fd4043e6f3ad921ae7ee901e9142e6e36b354a907
    Port:          <none>

Итак, в этом поде 2 контейнера.

  • имя: cassandra
  • имя: server-system-logger

Что, когда есть капсула с 1/2?

Значит, в этом конкретном pod только 1 контейнер running. Состояния контейнеровWaiting, Running а также Terminated. Более подробную информацию вы можете найти здесь.

Пример использования? Вы можете проверить логи из указанного контейнера.

$ kubectl logs cluster1-dc1-default-sts-0 -n cass-operator -c cassandra
Starting Management API
/docker-entrypoint.sh: line 74: [: missing `]'
Running java -Xms128m -Xmx128m -jar /opt/mgmtapi/datastax-mgmtapi-server-0.1.0-SNAPSHOT.jar --cassandra-socket /tmp/cassandra.sock --host tcp://0.0.0.0:8080 --host file:///tmp/oss-mgmt.sock --explicit-start true --cassandra-home /var/lib/cassandra/
INFO  [main] 2020-07-03 13:43:08,199 Cli.java:343 - Cassandra Version 3.11.6
INFO  [main] 2020-07-03 13:43:08,709 ResteasyDeploymentImpl.java:551 - RESTEASY002225: Deploying javax.ws.rs.core.Application: class com.datastax.mgmtapi.ManagementApplication
...

Или

$ kubectl logs cluster1-dc1-default-sts-0 -n cass-operator -c server-system-logger
INFO  [main] 2020-07-03 13:44:04,588 YamlConfigurationLoader.java:89 - Configuration location: file:/etc/cassandra/cassandra.yaml
INFO  [main] 2020-07-03 13:44:06,137 Config.java:516 - Node configuration:[allocate_tokens_for_keyspace=null; authenticator=org.apache.cassandra.auth.PasswordAuthenticator; authorizer=org.apache.cassandra.auth.CassandraAuthorizer; auto_bootstrap=true; auto_snapshot=true;
...

Вы также можете получить этот модуль YAML для проверки. В этом примере это можно сделать следующим образом:

$ kubectl get po cluster1-dc1-default-sts-0 -n cass-operator -o yaml

В дополнение к вашему вопросу:

Или оператор Cassandra запускает два контейнера на узел K8S?

Он запускает два контейнера на контейнер. Вы можете проверить, какой модуль был назначен для какого узла:

$ kubectl get pods -n cass-operator -o wide
NAME                             READY   STATUS    RESTARTS   AGE   IP          NODE                                       NOMINATED NODE   READINESS GATES
cass-operator-78c9999797-gb88g   1/1     Running   0          20m   10.44.1.4   gke-cluster-2-default-pool-5aa60336-n3hr   <none>           <none>
cluster1-dc1-default-sts-0       2/2     Running   0          19m   10.44.1.5   gke-cluster-2-default-pool-5aa60336-n3hr   <none>           <none>
cluster1-dc1-default-sts-1       2/2     Running   0          19m   10.44.2.3   gke-cluster-2-default-pool-5aa60336-dl2g   <none>           <none>
cluster1-dc1-default-sts-2       2/2     Running   0          19m   10.44.0.9   gke-cluster-2-default-pool-5aa60336-m7ms   <none>           <none>
Другие вопросы по тегам