我配置了自定义指标。
当我跑步时:
kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/my-namespace/deployments.extensions/sample-app/queue_length" | jq
我有:
...
"items": [
{
"describedObject": {
"kind": "Deployment",
"namespace": "my-namespace",
"name": "sample-app",
"apiVersion": "extensions/v1beta1"
},
"metricName": "queue_length",
"timestamp": "2018-10-09T18:14:15Z",
"value": "30"
}
]
...
Run Code Online (Sandbox Code Playgroud)
因此,我想使用此指标扩展部署:
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
name: sample-app
namespace: my-namespace
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: sample-app
minReplicas: 1
maxReplicas: 10
metrics:
- type: Object
object:
metricName: queue_length
target:
apiVersion: extensions/v1beta1
kind: Deployment
name: sample-app
targetValue: 20
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,也许我必须指定- type: Object一些不同的地方。
我尝试更改kind为Deployments,Deployments.extension,Deployments.extensions等,但是我不断收到错误消息FailedGetScale …
我想执行相当于
kubectl get all -l app=myapp -n mynamespace
或者
kubectl label all -l version=1.2.0,app=myapp track=stable --overwrite
使用客户端去
我查看了动态包,但它似乎需要GroupVersionResource,这对于 Service 对象和 Deployment 对象来说是不同的。此外,当我通过schema.GroupVersionResource{Group: "apps", Version: "v1"}它时没有找到任何东西,当我通过schema.GroupVersionResource{Version: "v1"}它时它只找到命名空间对象并且也不查找标签,尽管我提供了标签选项:
resource := schema.GroupVersionResource{Version: "v1"}
listOptions := metav1.ListOptions{LabelSelector: fmt.Sprintf("app=%s", AppName), FieldSelector: ""}
res, listErr := dynamicClient.Resource(resource).Namespace("myapps").List(listOptions)
Run Code Online (Sandbox Code Playgroud)
我还查看了运行时包,但没有发现任何有用的东西。看了一下是怎么kubectl实现的,有点想不通,抽象层次太多了。