hollow-node_template.yaml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. apiVersion: v1
  2. kind: ReplicationController
  3. metadata:
  4. name: hollow-node
  5. labels:
  6. name: hollow-node
  7. {{kubemark_mig_config}}
  8. spec:
  9. replicas: {{numreplicas}}
  10. selector:
  11. name: hollow-node
  12. template:
  13. metadata:
  14. labels:
  15. name: hollow-node
  16. {{kubemark_mig_config}}
  17. spec:
  18. initContainers:
  19. - name: init-inotify-limit
  20. image: busybox
  21. command: ['sysctl', '-w', 'fs.inotify.max_user_instances=1000']
  22. securityContext:
  23. privileged: true
  24. volumes:
  25. - name: kubeconfig-volume
  26. secret:
  27. secretName: kubeconfig
  28. - name: kernelmonitorconfig-volume
  29. configMap:
  30. name: node-configmap
  31. - name: logs-volume
  32. hostPath:
  33. path: /var/log
  34. - name: no-serviceaccount-access-to-real-master
  35. emptyDir: {}
  36. containers:
  37. - name: hollow-kubelet
  38. image: {{kubemark_image_registry}}/kubemark:{{kubemark_image_tag}}
  39. ports:
  40. - containerPort: 4194
  41. - containerPort: 10250
  42. - containerPort: 10255
  43. env:
  44. - name: CONTENT_TYPE
  45. valueFrom:
  46. configMapKeyRef:
  47. name: node-configmap
  48. key: content.type
  49. - name: NODE_NAME
  50. valueFrom:
  51. fieldRef:
  52. fieldPath: metadata.name
  53. command: [
  54. "/kubemark",
  55. "--morph=kubelet",
  56. "--name=$(NODE_NAME)",
  57. "--kubeconfig=/kubeconfig/kubelet.kubeconfig",
  58. "$(CONTENT_TYPE)",
  59. "--log-file=/var/log/kubelet-$(NODE_NAME).log",
  60. "--logtostderr=false",
  61. "--node-labels={{hollow_node_labels}}",
  62. {{hollow_kubelet_params}}
  63. ]
  64. volumeMounts:
  65. - name: kubeconfig-volume
  66. mountPath: /kubeconfig
  67. readOnly: true
  68. - name: logs-volume
  69. mountPath: /var/log
  70. resources:
  71. requests:
  72. cpu: {{hollow_kubelet_millicpu}}m
  73. memory: {{hollow_kubelet_mem_Ki}}Ki
  74. securityContext:
  75. privileged: true
  76. - name: hollow-proxy
  77. image: {{kubemark_image_registry}}/kubemark:{{kubemark_image_tag}}
  78. env:
  79. - name: CONTENT_TYPE
  80. valueFrom:
  81. configMapKeyRef:
  82. name: node-configmap
  83. key: content.type
  84. - name: NODE_NAME
  85. valueFrom:
  86. fieldRef:
  87. fieldPath: metadata.name
  88. command: [
  89. "/kubemark",
  90. "--morph=proxy",
  91. "--name=$(NODE_NAME)",
  92. "--kubeconfig=/kubeconfig/kubeproxy.kubeconfig",
  93. "$(CONTENT_TYPE)",
  94. "--log-file=/var/log/kubeproxy-$(NODE_NAME).log",
  95. "--logtostderr=false",
  96. {{hollow_proxy_params}}
  97. ]
  98. volumeMounts:
  99. - name: kubeconfig-volume
  100. mountPath: /kubeconfig
  101. readOnly: true
  102. - name: logs-volume
  103. mountPath: /var/log
  104. resources:
  105. requests:
  106. cpu: {{hollow_proxy_millicpu}}m
  107. memory: {{hollow_proxy_mem_Ki}}Ki
  108. - name: hollow-node-problem-detector
  109. image: k8s.gcr.io/node-problem-detector:v0.8.0
  110. env:
  111. - name: NODE_NAME
  112. valueFrom:
  113. fieldRef:
  114. fieldPath: metadata.name
  115. command:
  116. - /bin/sh
  117. - -c
  118. - /node-problem-detector --system-log-monitors=/config/kernel.monitor --apiserver-override="https://{{master_ip}}:443?inClusterConfig=false&auth=/kubeconfig/npd.kubeconfig" --alsologtostderr 1>>/var/log/npd-$(NODE_NAME).log 2>&1
  119. volumeMounts:
  120. - name: kubeconfig-volume
  121. mountPath: /kubeconfig
  122. readOnly: true
  123. - name: kernelmonitorconfig-volume
  124. mountPath: /config
  125. readOnly: true
  126. - name: no-serviceaccount-access-to-real-master
  127. mountPath: /var/run/secrets/kubernetes.io/serviceaccount
  128. readOnly: true
  129. - name: logs-volume
  130. mountPath: /var/log
  131. resources:
  132. requests:
  133. cpu: {{npd_millicpu}}m
  134. memory: {{npd_mem_Ki}}Ki
  135. securityContext:
  136. privileged: true
  137. # Keep the pod running on unreachable node for 15 minutes.
  138. # This time should be sufficient for a VM reboot and should
  139. # avoid recreating a new hollow node.
  140. # See https://github.com/kubernetes/kubernetes/issues/67120 for context.
  141. tolerations:
  142. - key: "node.kubernetes.io/unreachable"
  143. operator: "Exists"
  144. effect: "NoExecute"
  145. tolerationSeconds: 900