如何在带有kubectl的coreos虚拟机上运行cassandra服务?

mklgxw1f  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(632)

我正在尝试创建一个coreos集群来运行cassandra的示例。为了做到这一点,我一直试图安装Cassandra服务只在一个虚拟机。我的cassandra.service文件是这样的

  1. [Unit]
  2. Description=cassandra
  3. After=docker.service
  4. Requires=docker.service
  5. [Service]
  6. Environment=CASSANDRA_CLUSTERNAME=cluster
  7. CASSANDRA_SSL_STORAGE_PORT=7002
  8. EnvironmentFile=-/etc/environment
  9. ExecStartPre=-/usr/bin/docker kill %p-%i
  10. ExecStartPre=-/usr/bin/docker rm %p-%i
  11. ExecStartPre=/usr/bin/docker pull endocode/%p
  12. ExecStartPre=/usr/bin/bash -c "echo $${COREOS_PUBLIC_IPV4:-$$(hostname - i)} | /usr/bin/etcdctl set /cassandra_%i"
  13. 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"
  14. 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
  15. -e CASSANDRA_CLUSTERNAME=${CASSANDRA_CLUSTERNAME}
  16. -e CASSANDRA_SEEDS=\"$CASSANDRA_SEEDS\"
  17. -e BROADCAST_ADDR=$BROADCAST_ADDR
  18. -e CASSANDRA_SSL_STORAGE_PORT=$CASSANDRA_SSL_STORAGE_PORT --publish 7000:7000 --publish
  19. $CASSANDRA_SSL_STORAGE_PORT:$CASSANDRA_SSL_STORAGE_PORT -- publish 9160:9160 --publish 9042:9042 --publish 7199:7199 endocode/%p"
  20. ExecStop=/usr/bin/docker stop %p-%i
  21. ExecStopPost=/usr/bin/etcdctl rm /cassandra_%i
  22. TimeoutStartSec=900s
  23. [X-Fleet]
  24. Conflicts=%p@*.service

但要运行服务,我必须执行命令
fleetctl启动cassandra@1.service
舰队已经从coreos中移除,所以我需要用kubernetes代替。
我应该使用哪个kubectl命令在vm上启动cassandra服务,以及如何在coreos上安装kubectl?

6ovsh4lw

6ovsh4lw1#

你不能用这种简单的方法来做 kubectl 不仅仅是一个“新命令”取代了旧命令 fleetctl 允许你做同样的事情。它涉及到完全不同的集群编排方法 fleetctl 基本上是一个控制 systemd 在集群层面。它结合了规则 systemd 具有某些特定于机队的属性的单元使您能够在群集中运行服务。实际上,它给了你这样的能力,因为它不是积极发展,它是不支持了相当长的一段时间了。正如您在coreos文档中看到的,他们建议将集群编排转换到kubernetes。
kubernetes是完全不同的工具,您将无法使用它运行您附加的扩展单元文件。它们被设计成专门由 fleetctl (类似于 systemctl 用于管理标准系统单位的命令)。
如果你有关于安装的问题 kubectl 在coreos上,这是非常简单的,所有的事情都在这里解释,但是它对您的特定任务没有多大帮助。首先,我建议你熟悉Kubernetes的一般概念。如果您使用的是这个特定的系统,您可以从关于在coreos上运行kubernetes的文章开始。只有在这之后,您可能会在kubernetes官方文档中找到一些关于在kubernetes上部署cassandra集群的文章,比如这篇文章,但是关于这个主题有很多不同的教程,您会很容易找到最适合您需要的教程。

相关问题