kubernetes 使用Python远程连接到k8s pod并在该pod上发送命令

xdnvmnnf  于 2023-11-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(117)

我有一个场景,如果我想运行一个postgres查询或检查一个Kafka主题,我唯一的选择是连接到一个拥有这些权限的pod,然后从那里运行相关的Kafka命令,或者在数据库查询的情况下,我需要连接,然后运行查询。
有没有一种“有点”优雅的方式来 Package 这些相当简单的命令在一个python应用程序?这将是类似于管道几个命令,但我不知道如何使这一工作,因为到目前为止的尝试失败。
我的用例类似于:

  • kubectl exec -it pod bash
  • 运行Kafka命令

  • kubectl exec -it pod bash - same pod as above
  • 连接到postgres db
  • 运行查询

提前感谢您的任何帮助,正确方向的指针对于python来说是相对较新的。

zaqlnxep

zaqlnxep1#

**头脑 Storm :**您可以将命令封装在一个Python文件中,并在K8s主节点上运行:

import subprocess

def run_kafka_command(pod_name, kafka_command):
    command = f'kubectl exec -it {pod_name} -- bash -c "{kafka_command}"'
    result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    return result.stdout

def run_postgres_query(pod_name, database, query):
    command = f'kubectl exec -it {pod_name} -- psql -d {database} -c "{query}"'
    result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    return result.stdout

if __name__ == "__main__":
    pod_name = "your_pod_name"
    kafka_command = "your_kafka_command"
    database = "your_database"
    query = "your_query"

    kafka_output = run_kafka_command(pod_name, kafka_command)
    print("Kafka Command Output:")
    print(kafka_output)

    postgres_output = run_postgres_query(pod_name, database, query)
    print("Postgres Query Output:")
    print(postgres_output)

字符串

相关问题