使用python客户端的Kubernetes,我无法增加特定pod的副本数量?

gzszwxb4  于 12个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(118)

详情:

我正在使用AWS EKS服务来管理K8集群中的应用程序。在命名空间mytenantspace中的一个名为my-core-pod的pod中,我运行了一个python flask应用程序。我已经创建了一个端点create_infra,它的作用是,它接受POST请求并增加命名空间myenvspace中pod my-daemon-service-pod的副本数量。
现在我已经安装了kubectl,并且在.kube/config中正确更新了配置。我使用的是python 3.8kuberenets客户端是28.1.0

**注意:**我可以使用python kubernetes客户端连接并列出集群的所有pod和命名空间。

这是我增加副本pod的实现。

#code running in the `my-core-pod` in the namespace `mytenantspace`
from  kubernetes import client, config
config.load_kube_config()
v1 = client.CoreV1Api()


@app.route("/create_infra", methods=["POST"])
def create_pod():
    number_pods = 3
    pod_name = "my-daemon-service-pod"
    namespace = "myenvspace"

    # Get the existing pod's template.
    existing_pod = v1.read_namespaced_pod(pod_name, namespace)

    #Clear the resourceVersion to avoid the error.
    existing_pod.metadata.resource_version = None

    # Create new pods based on the existing pod's template.
    for i in range(number_pods):
        new_pod_name = f"{pod_name}-replica-{i}"
        new_pod = existing_pod
        new_pod.metadata.name = new_pod_name
        new_pod.metadata.uid = None  # Clear the UID to ensure a unique pod is created.

        # Create the new pod replica.
        v1.create_namespaced_pod(namespace, new_pod)

字符串
我没有收到任何错误。我在控制台收到一个巨大的响应JSON。但我的pod没有伸缩。你能在我的代码中找到问题吗?我使用的是正确的API吗?

368yc8dk

368yc8dk1#

这对我很有效:

api_instance = client.AppsV1Api()
deployment = api_instance.read_namespaced_deployment(name=deployment_name, namespace=namespace)
        deployment.spec.replicas = number_pods
api_response = api_instance.replace_namespaced_deployment(name=deployment_name, namespace=namespace, body=deployment)
print("Deployment updated. status='%s'" % str(api_response.status))

字符串

相关问题