{ "kind": "ReplicationController", "apiVersion": "v1", "metadata": { "name": "hollow-node", "labels": { "name": "hollow-node" } }, "spec": { "replicas": {{numreplicas}}, "selector": { "name": "hollow-node" }, "template": { "metadata": { "labels": { "name": "hollow-node" } }, "spec": { "volumes": [ { "name": "kubeconfig-volume", "secret": { "secretName": "kubeconfig" } }, { "name": "kernelmonitorconfig-volume", "configMap": { "name": "node-configmap" } }, { "name": "logs-volume", "hostPath": { "path": "/var/logs" } }, { "name": "kernellog-volume", "hostPath": { "path": "/var/log" } }, { "name": "no-serviceaccount-access-to-real-master", "emptyDir": {} } ], "containers": [ { "name": "hollow-kubelet", "image": "gcr.io/{{project}}/kubemark:latest", "ports": [ {"containerPort": 4194}, {"containerPort": 10250}, {"containerPort": 10255} ], "env": [ { "name": "CONTENT_TYPE", "valueFrom": { "configMapKeyRef": { "name": "node-configmap", "key": "content.type" } } }, { "name": "NODE_NAME", "valueFrom": { "fieldRef": { "fieldPath": "metadata.name" } } } ], "command": [ "/bin/sh", "-c", "./kubemark.sh --morph=kubelet --name=$(NODE_NAME) --kubeconfig=/kubeconfig/kubelet.kubeconfig $(CONTENT_TYPE) --v=2 1>>/var/logs/kubelet_$(MY_POD_NAME).log 2>&1" ], "volumeMounts": [ { "name": "kubeconfig-volume", "mountPath": "/kubeconfig", "readOnly": true }, { "name": "logs-volume", "mountPath": "/var/logs" } ], "resources": { "requests": { "cpu": "50m", "memory": "100M" } }, "securityContext": { "privileged": true } }, { "name": "hollow-proxy", "image": "gcr.io/{{project}}/kubemark:latest", "env": [ { "name": "CONTENT_TYPE", "valueFrom": { "configMapKeyRef": { "name": "node-configmap", "key": "content.type" } } }, { "name": "NODE_NAME", "valueFrom": { "fieldRef": { "fieldPath": "metadata.name" } } } ], "command": [ "/bin/sh", "-c", "./kubemark.sh --morph=proxy --name=$(NODE_NAME) --kubeconfig=/kubeconfig/kubeproxy.kubeconfig $(CONTENT_TYPE) --v=2 1>>/var/logs/kube_proxy_$(MY_POD_NAME).log 2>&1" ], "volumeMounts": [ { "name": "kubeconfig-volume", "mountPath": "/kubeconfig", "readOnly": true }, { "name": "logs-volume", "mountPath": "/var/logs" } ], "resources": { "requests": { "cpu": "20m", "memory": "100M" } } }, { "name": "hollow-node-problem-detector", "image": "gcr.io/google_containers/node-problem-detector:v0.3", "env": [ { "name": "NODE_NAME", "valueFrom": { "fieldRef": { "fieldPath": "metadata.name" } } } ], "command": [ "/node-problem-detector", "--kernel-monitor=/config/kernel.monitor", "--apiserver-override=https://{{master_ip}}:443?inClusterConfig=false&auth=/kubeconfig/npd.kubeconfig", "--alsologtostderr", "1>>/var/logs/npd_$(NODE_NAME).log 2>&1" ], "volumeMounts": [ { "name": "kubeconfig-volume", "mountPath": "/kubeconfig", "readOnly": true }, { "name": "kernelmonitorconfig-volume", "mountPath": "/config", "readOnly": true }, { "name": "kernellog-volume", "mountPath": "/log", "readOnly": true }, { "name": "no-serviceaccount-access-to-real-master", "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount", "readOnly": true }, { "name": "logs-volume", "mountPath": "/var/logs" } ], "resources": { "requests": { "cpu": "20m", "memory": "20Mi" } }, "securityContext": { "privileged": true } }] } } } }