60 lines
1.5 KiB
YAML
60 lines
1.5 KiB
YAML
#cloud-config
|
|
merge_how: dict(recurse_array)+list(append)
|
|
write_files:
|
|
- path: /usr/local/bin/kube-register
|
|
permissions: "0755"
|
|
owner: root
|
|
content: |
|
|
#!/bin/sh
|
|
|
|
. /etc/sysconfig/heat-params
|
|
master_url=http://${KUBE_MASTER_IP}:8080
|
|
myip=$(ip addr show eth0 |
|
|
awk '$1 == "inet" {print $2}' | cut -f1 -d/)
|
|
|
|
# wait for master api
|
|
until curl -o /dev/null -sf "${master_url}/healthz"; do
|
|
echo "waiting for kubernetes master"
|
|
sleep 1
|
|
done
|
|
|
|
if [ "$1" = "-u" ]; then
|
|
echo "unregistering minion $myip"
|
|
kubectl -s ${master_url} delete node/$myip
|
|
else
|
|
echo "registering minion $myip"
|
|
cpu=$(($(nproc) * 1000))
|
|
memory=$(awk '/MemTotal: /{print $2 * 1024}' /proc/meminfo)
|
|
|
|
cat <<EOF | kubectl create -s ${master_url} -f-
|
|
apiVersion: v1
|
|
id: $myip
|
|
kind: Node
|
|
resources:
|
|
capacity:
|
|
cpu: $cpu
|
|
memory: $memory
|
|
metadata:
|
|
name: $myip
|
|
spec:
|
|
externalID: $myip
|
|
EOF
|
|
fi
|
|
- path: /etc/systemd/system/kube-register.service
|
|
permissions: "0644"
|
|
owner: root
|
|
content: |
|
|
[Unit]
|
|
Description=Register/unregister this node with the Kubernetes master
|
|
Requires=kubelet.service
|
|
After=kubelet.service
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
ExecStart=/usr/local/bin/kube-register
|
|
ExecStop=/usr/local/bin/kube-register -u
|
|
|
|
[Install]
|
|
WantedBy=kubelet.service
|