metrics-server-deployment.yaml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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.6
  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.6
  33. spec:
  34. selector:
  35. matchLabels:
  36. k8s-app: metrics-server
  37. version: v0.3.6
  38. template:
  39. metadata:
  40. name: metrics-server
  41. labels:
  42. k8s-app: metrics-server
  43. version: v0.3.6
  44. annotations:
  45. seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
  46. spec:
  47. priorityClassName: system-cluster-critical
  48. serviceAccountName: metrics-server
  49. nodeSelector:
  50. kubernetes.io/os: linux
  51. containers:
  52. - name: metrics-server
  53. image: k8s.gcr.io/metrics-server-amd64:v0.3.6
  54. command:
  55. - /metrics-server
  56. - --metric-resolution=30s
  57. # These are needed for GKE, which doesn't support secure communication yet.
  58. # Remove these lines for non-GKE clusters, and when GKE supports token-based auth.
  59. - --kubelet-port=10255
  60. - --deprecated-kubelet-completely-insecure=true
  61. - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP
  62. ports:
  63. - containerPort: 443
  64. name: https
  65. protocol: TCP
  66. - name: metrics-server-nanny
  67. image: k8s.gcr.io/addon-resizer:1.8.7
  68. resources:
  69. limits:
  70. cpu: 100m
  71. memory: 300Mi
  72. requests:
  73. cpu: 5m
  74. memory: 50Mi
  75. env:
  76. - name: MY_POD_NAME
  77. valueFrom:
  78. fieldRef:
  79. fieldPath: metadata.name
  80. - name: MY_POD_NAMESPACE
  81. valueFrom:
  82. fieldRef:
  83. fieldPath: metadata.namespace
  84. volumeMounts:
  85. - name: metrics-server-config-volume
  86. mountPath: /etc/config
  87. command:
  88. - /pod_nanny
  89. - --config-dir=/etc/config
  90. - --cpu={{ base_metrics_server_cpu }}
  91. - --extra-cpu=0.5m
  92. - --memory={{ base_metrics_server_memory }}
  93. - --extra-memory={{ metrics_server_memory_per_node }}Mi
  94. - --threshold=5
  95. - --deployment=metrics-server-v0.3.6
  96. - --container=metrics-server
  97. - --poll-period=300000
  98. - --estimator=exponential
  99. # Specifies the smallest cluster (defined in number of nodes)
  100. # resources will be scaled to.
  101. - --minClusterSize={{ metrics_server_min_cluster_size }}
  102. volumes:
  103. - name: metrics-server-config-volume
  104. configMap:
  105. name: metrics-server-config
  106. tolerations:
  107. - key: "CriticalAddonsOnly"
  108. operator: "Exists"