metrics-server-deployment.yaml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. apiVersion: v1
  2. kind: ServiceAccount
  3. metadata:
  4. name: metrics-server
  5. namespace: kube-system
  6. labels:
  7. kubernetes.io/cluster-service: "true"
  8. addonmanager.kubernetes.io/mode: Reconcile
  9. ---
  10. apiVersion: v1
  11. kind: ConfigMap
  12. metadata:
  13. name: metrics-server-config
  14. namespace: kube-system
  15. labels:
  16. kubernetes.io/cluster-service: "true"
  17. addonmanager.kubernetes.io/mode: EnsureExists
  18. data:
  19. NannyConfiguration: |-
  20. apiVersion: nannyconfig/v1alpha1
  21. kind: NannyConfiguration
  22. ---
  23. apiVersion: apps/v1
  24. kind: Deployment
  25. metadata:
  26. name: metrics-server-v0.3.3
  27. namespace: kube-system
  28. labels:
  29. k8s-app: metrics-server
  30. kubernetes.io/cluster-service: "true"
  31. addonmanager.kubernetes.io/mode: Reconcile
  32. version: v0.3.3
  33. spec:
  34. selector:
  35. matchLabels:
  36. k8s-app: metrics-server
  37. version: v0.3.3
  38. template:
  39. metadata:
  40. name: metrics-server
  41. labels:
  42. k8s-app: metrics-server
  43. version: v0.3.3
  44. annotations:
  45. scheduler.alpha.kubernetes.io/critical-pod: ''
  46. seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
  47. spec:
  48. priorityClassName: system-cluster-critical
  49. serviceAccountName: metrics-server
  50. containers:
  51. - name: metrics-server
  52. image: k8s.gcr.io/metrics-server-amd64:v0.3.3
  53. command:
  54. - /metrics-server
  55. - --metric-resolution=30s
  56. # These are needed for GKE, which doesn't support secure communication yet.
  57. # Remove these lines for non-GKE clusters, and when GKE supports token-based auth.
  58. - --kubelet-port=10255
  59. - --deprecated-kubelet-completely-insecure=true
  60. - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
  61. ports:
  62. - containerPort: 443
  63. name: https
  64. protocol: TCP
  65. - name: metrics-server-nanny
  66. image: k8s.gcr.io/addon-resizer:1.8.5
  67. resources:
  68. limits:
  69. cpu: 100m
  70. memory: 300Mi
  71. requests:
  72. cpu: 5m
  73. memory: 50Mi
  74. env:
  75. - name: MY_POD_NAME
  76. valueFrom:
  77. fieldRef:
  78. fieldPath: metadata.name
  79. - name: MY_POD_NAMESPACE
  80. valueFrom:
  81. fieldRef:
  82. fieldPath: metadata.namespace
  83. volumeMounts:
  84. - name: metrics-server-config-volume
  85. mountPath: /etc/config
  86. command:
  87. - /pod_nanny
  88. - --config-dir=/etc/config
  89. - --cpu={{ base_metrics_server_cpu }}
  90. - --extra-cpu=0.5m
  91. - --memory={{ base_metrics_server_memory }}
  92. - --extra-memory={{ metrics_server_memory_per_node }}Mi
  93. - --threshold=5
  94. - --deployment=metrics-server-v0.3.3
  95. - --container=metrics-server
  96. - --poll-period=300000
  97. - --estimator=exponential
  98. # Specifies the smallest cluster (defined in number of nodes)
  99. # resources will be scaled to.
  100. - --minClusterSize={{ metrics_server_min_cluster_size }}
  101. volumes:
  102. - name: metrics-server-config-volume
  103. configMap:
  104. name: metrics-server-config
  105. tolerations:
  106. - key: "CriticalAddonsOnly"
  107. operator: "Exists"