如何使用 kubectl 运行 在 CoreOS VM 上使用 Cassandra 服务?
How can I run the Cassandra service on a CoreOS VM with kubectl?
我正在尝试为 运行 Cassandra 的实例创建一个 CoreOS 集群。为此,我一直在尝试仅在一个 VM 中安装 Cassandra 服务。
我的 Cassandra.service 文件是这个
[Unit]
Description=cassandra
After=docker.service
Requires=docker.service
[Service]
Environment=CASSANDRA_CLUSTERNAME=cluster
CASSANDRA_SSL_STORAGE_PORT=7002
EnvironmentFile=-/etc/environment
ExecStartPre=-/usr/bin/docker kill %p-%i
ExecStartPre=-/usr/bin/docker rm %p-%i
ExecStartPre=/usr/bin/docker pull endocode/%p
ExecStartPre=/usr/bin/bash -c "echo $${COREOS_PUBLIC_IPV4:-$$(hostname - i)} | /usr/bin/etcdctl set /cassandra_%i"
ExecStartPre=/usr/bin/bash -c "while [[ ! $$(/usr/bin/etcdctl get /cassandra_1) ]]; do echo 'Waiting for Cassandra Seed node'; sleep 1; done; echo 'Cassandra Seed node is UP'; /usr/bin/etcdctl get /cassandra_1"
ExecStart=/usr/bin/bash -c "BROADCAST_ADDR=$${COREOS_PUBLIC_IPV4:- $$(hostname -i)} && CASSANDRA_SEEDS=$(/usr/bin/etcdctl get /cassandra_1 | /usr/bin/tr -d '\n') && exec /usr/bin/docker run --rm --name %p-%i
-e CASSANDRA_CLUSTERNAME=${CASSANDRA_CLUSTERNAME}
-e CASSANDRA_SEEDS=\"$CASSANDRA_SEEDS\"
-e BROADCAST_ADDR=$BROADCAST_ADDR
-e CASSANDRA_SSL_STORAGE_PORT=$CASSANDRA_SSL_STORAGE_PORT --publish 7000:7000 --publish
$CASSANDRA_SSL_STORAGE_PORT:$CASSANDRA_SSL_STORAGE_PORT -- publish 9160:9160 --publish 9042:9042 --publish 7199:7199 endocode/%p"
ExecStop=/usr/bin/docker stop %p-%i
ExecStopPost=/usr/bin/etcdctl rm /cassandra_%i
TimeoutStartSec=900s
[X-Fleet]
Conflicts=%p@*.service
但是对于运行服务我必须执行命令
fleetctl start cassandra@1.service
fleet 已从 coreOS 中删除,因此我需要改用 kubernetes。
我应该使用 wich kubectl 命令在 VM 上启动 Cassandra 服务,我如何在 CoreOS 上安装 kubectl?
你不能用这么简单的方法来做,因为 kubectl
不仅仅是一个 "new command" 取代旧的 fleetctl
并允许你做同样的事情。它涉及与 fleetctl
完全不同的集群编排方法,后者基本上是一个在集群级别控制 systemd
的集群管理器。它将常规 systemd
单元与一些车队特定的属性相结合,使您能够 运行 在集群中提供服务。实际上它给了你这样的能力,因为它没有被积极开发,并且在很长一段时间内不再受到支持。正如您在 CoreOS documentation 上看到的那样,他们建议过渡到 Kubernetes 以进行集群编排。
Kubernetes 是完全不同的工具,您将无法 运行 使用它来扩展单元文件作为您附加的文件。它们被设计为专门使用 fleetctl
进行管理(类似于用于管理标准 systemd 单元的 systemctl
命令)。
如果是关于在 CoreOS 上安装 kubectl
的问题,它非常简单明了,所有内容都得到了解释 here,但是它无济于事你很擅长你的特定任务。
首先,我建议您熟悉 Kubernetes 的一般概念。如果您正在使用此特定系统,您可以从 article 开始 运行ning Kubernetes on CoreOS。
只有在那之后,你才可以寻找一些关于在 Kubernetes 上部署 Cassandra 集群 的文章,比如 this one,可以在 Kubernetes 官方文档 中找到,但是有关于这个主题有很多不同的教程,您会很容易找到最适合您需要的教程。
我正在尝试为 运行 Cassandra 的实例创建一个 CoreOS 集群。为此,我一直在尝试仅在一个 VM 中安装 Cassandra 服务。 我的 Cassandra.service 文件是这个
[Unit]
Description=cassandra
After=docker.service
Requires=docker.service
[Service]
Environment=CASSANDRA_CLUSTERNAME=cluster
CASSANDRA_SSL_STORAGE_PORT=7002
EnvironmentFile=-/etc/environment
ExecStartPre=-/usr/bin/docker kill %p-%i
ExecStartPre=-/usr/bin/docker rm %p-%i
ExecStartPre=/usr/bin/docker pull endocode/%p
ExecStartPre=/usr/bin/bash -c "echo $${COREOS_PUBLIC_IPV4:-$$(hostname - i)} | /usr/bin/etcdctl set /cassandra_%i"
ExecStartPre=/usr/bin/bash -c "while [[ ! $$(/usr/bin/etcdctl get /cassandra_1) ]]; do echo 'Waiting for Cassandra Seed node'; sleep 1; done; echo 'Cassandra Seed node is UP'; /usr/bin/etcdctl get /cassandra_1"
ExecStart=/usr/bin/bash -c "BROADCAST_ADDR=$${COREOS_PUBLIC_IPV4:- $$(hostname -i)} && CASSANDRA_SEEDS=$(/usr/bin/etcdctl get /cassandra_1 | /usr/bin/tr -d '\n') && exec /usr/bin/docker run --rm --name %p-%i
-e CASSANDRA_CLUSTERNAME=${CASSANDRA_CLUSTERNAME}
-e CASSANDRA_SEEDS=\"$CASSANDRA_SEEDS\"
-e BROADCAST_ADDR=$BROADCAST_ADDR
-e CASSANDRA_SSL_STORAGE_PORT=$CASSANDRA_SSL_STORAGE_PORT --publish 7000:7000 --publish
$CASSANDRA_SSL_STORAGE_PORT:$CASSANDRA_SSL_STORAGE_PORT -- publish 9160:9160 --publish 9042:9042 --publish 7199:7199 endocode/%p"
ExecStop=/usr/bin/docker stop %p-%i
ExecStopPost=/usr/bin/etcdctl rm /cassandra_%i
TimeoutStartSec=900s
[X-Fleet]
Conflicts=%p@*.service
但是对于运行服务我必须执行命令
fleetctl start cassandra@1.service
fleet 已从 coreOS 中删除,因此我需要改用 kubernetes。
我应该使用 wich kubectl 命令在 VM 上启动 Cassandra 服务,我如何在 CoreOS 上安装 kubectl?
你不能用这么简单的方法来做,因为 kubectl
不仅仅是一个 "new command" 取代旧的 fleetctl
并允许你做同样的事情。它涉及与 fleetctl
完全不同的集群编排方法,后者基本上是一个在集群级别控制 systemd
的集群管理器。它将常规 systemd
单元与一些车队特定的属性相结合,使您能够 运行 在集群中提供服务。实际上它给了你这样的能力,因为它没有被积极开发,并且在很长一段时间内不再受到支持。正如您在 CoreOS documentation 上看到的那样,他们建议过渡到 Kubernetes 以进行集群编排。
Kubernetes 是完全不同的工具,您将无法 运行 使用它来扩展单元文件作为您附加的文件。它们被设计为专门使用 fleetctl
进行管理(类似于用于管理标准 systemd 单元的 systemctl
命令)。
如果是关于在 CoreOS 上安装 kubectl
的问题,它非常简单明了,所有内容都得到了解释 here,但是它无济于事你很擅长你的特定任务。
首先,我建议您熟悉 Kubernetes 的一般概念。如果您正在使用此特定系统,您可以从 article 开始 运行ning Kubernetes on CoreOS。
只有在那之后,你才可以寻找一些关于在 Kubernetes 上部署 Cassandra 集群 的文章,比如 this one,可以在 Kubernetes 官方文档 中找到,但是有关于这个主题有很多不同的教程,您会很容易找到最适合您需要的教程。