Как обеспечить ограничение ресурсов в kubernetes go спецификации клиента? - PullRequest
0 голосов
/ 25 октября 2018
    Spec: v1.PodSpec{
            Containers: []v1.Container{
                v1.Container{
                    Name:            podName,
                    Image:           deploymentName,
                    ImagePullPolicy: "IfNotPresent",
                    Ports:           []v1.ContainerPort{},
                    Env: []v1.EnvVar{
                        v1.EnvVar{
                            Name:  "RASA_NLU_CONFIG",
                            Value: os.Getenv("RASA_NLU_CONFIG"),
                        },
                        v1.EnvVar{
                            Name:  "RASA_NLU_DATA",
                            Value: os.Getenv("RASA_NLU_DATA"),
                        },
                    },
                    Resources: v1.ResourceRequirements{},
                },
            },
            RestartPolicy: v1.RestartPolicyOnFailure,
        },

Я хочу предоставить лимиты ресурсов в следующем виде:

resources:
  limits:
    cpu: "1"
  requests:
    cpu: "0.5"
args:
- -cpus
- "2"

Как мне продолжать это делать.Я попытался добавить Limits и его пару значений ключа карты, но это, похоже, довольно вложенная структура.Кажется, что нет никакого примера того, как предоставить ресурсы в клиенте kube.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я боролся с тем же, когда создавал набор состояний.Возможно, мой codenipped поможет вам:

Resources: apiv1.ResourceRequirements{
                            Limits: apiv1.ResourceList{
                                "cpu":    resource.MustParse(cpuLimit),
                                "memory": resource.MustParse(memLimit),
                            },
                            Requests: apiv1.ResourceList{
                                "cpu":    resource.MustParse(cpuReq),
                                "memory": resource.MustParse(memReq),
                            },
                        },

переменные cpuReq, memReq, cpuLimit и memLimit должны быть строками

0 голосов
/ 25 октября 2018

Здесь Вы можете найти определение v1.ResourceRequirements{}:

// ResourceRequirements describes the compute resource requirements.
type ResourceRequirements struct {
    // Limits describes the maximum amount of compute resources allowed.
    // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
    // +optional
    Limits ResourceList `json:"limits,omitempty" protobuf:"bytes,1,rep,name=limits,casttype=ResourceList,castkey=ResourceName"`
    // Requests describes the minimum amount of compute resources required.
    // If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
    // otherwise to an implementation-defined value.
    // More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
    // +optional
    Requests ResourceList `json:"requests,omitempty" protobuf:"bytes,2,rep,name=requests,casttype=ResourceList,castkey=ResourceName"`
}

ResourceList :

// ResourceList is a set of (resource name, quantity) pairs.
type ResourceList map[ResourceName]resource.Quantity

Здесь вы можете найти тестовый файл с примером использования.

Плагин Sourcegraph для Crome или Firefox может быть очень полезен для работы с исходным кодом на GitHub.

...