primo
This commit is contained in:
164
add-on/install_edgenode.sh
Normal file
164
add-on/install_edgenode.sh
Normal file
@@ -0,0 +1,164 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Configurazione (override con variabili d'ambiente prima di eseguire lo script)
|
||||
KUBEEDGE_VERSION="${KUBEEDGE_VERSION:-v1.22.0}"
|
||||
CLOUD_MASTER_IP="${CLOUD_MASTER_IP:-89.105.78.161}"
|
||||
EDGE_NODE_NAME="${EDGE_NODE_NAME:-edge-node-02}"
|
||||
KUBEEDGE_TOKEN="${KUBEEDGE_TOKEN:-26477f03e3d0209870acdf724478f1d875e1328f8ea3408d74f3d7d109ad02be.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzQ5OTI1NzB9.YxfikSixBrX7bvQxgxXYpbwLJHg0SAQ9mQ7kblBWQrk}"
|
||||
|
||||
CONTAINERD_VERSION="1.6.14"
|
||||
RUNC_VERSION="1.1.3"
|
||||
CNI_VERSION="1.1.1"
|
||||
|
||||
echo "==== EDGE NODE INSTALL START ===="
|
||||
echo "KUBEEDGE_VERSION=${KUBEEDGE_VERSION}"
|
||||
echo "CLOUD_MASTER_IP=${CLOUD_MASTER_IP}"
|
||||
echo "EDGE_NODE_NAME=${EDGE_NODE_NAME}"
|
||||
echo "KUBEEDGE_TOKEN=${KUBEEDGE_TOKEN}"
|
||||
if ! command -v sudo >/dev/null 2>&1; then
|
||||
echo "Errore: sudo non trovato"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
trap 'rm -rf "${TMP_DIR}"' EXIT
|
||||
|
||||
echo "[1/8] Download e installazione containerd ${CONTAINERD_VERSION}"
|
||||
cd "${TMP_DIR}"
|
||||
wget -q "https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz"
|
||||
sudo tar Cxzvf /usr/local "containerd-${CONTAINERD_VERSION}-linux-amd64.tar.gz"
|
||||
|
||||
echo "[2/8] Download e installazione runc ${RUNC_VERSION}"
|
||||
wget -q "https://github.com/opencontainers/runc/releases/download/v${RUNC_VERSION}/runc.amd64"
|
||||
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
|
||||
|
||||
echo "[3/8] Download e installazione CNI plugins ${CNI_VERSION}"
|
||||
wget -q "https://github.com/containernetworking/plugins/releases/download/v${CNI_VERSION}/cni-plugins-linux-amd64-v${CNI_VERSION}.tgz"
|
||||
sudo mkdir -p /opt/cni/bin
|
||||
sudo tar Cxzvf /opt/cni/bin "cni-plugins-linux-amd64-v${CNI_VERSION}.tgz"
|
||||
|
||||
echo "[4/8] Configurazione containerd"
|
||||
sudo mkdir -p /etc/containerd
|
||||
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
|
||||
sudo sed -i '/SystemdCgroup = true/d' /etc/containerd/config.toml
|
||||
sudo curl -fsSL https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service
|
||||
|
||||
echo "[5/8] Configurazione rete CNI"
|
||||
sudo mkdir -p /etc/cni/net.d
|
||||
cat <<'EOF' | sudo tee /etc/cni/net.d/10-containerd-net.conflist >/dev/null
|
||||
{
|
||||
"cniVersion": "1.0.0",
|
||||
"name": "containerd-net",
|
||||
"plugins": [
|
||||
{
|
||||
"type": "bridge",
|
||||
"bridge": "cni0",
|
||||
"isGateway": true,
|
||||
"ipMasq": true,
|
||||
"promiscMode": true,
|
||||
"ipam": {
|
||||
"type": "host-local",
|
||||
"ranges": [
|
||||
[{
|
||||
"subnet": "10.88.0.0/16"
|
||||
}],
|
||||
[{
|
||||
"subnet": "2001:db8:4860::/64"
|
||||
}]
|
||||
],
|
||||
"routes": [
|
||||
{ "dst": "0.0.0.0/0" },
|
||||
{ "dst": "::/0" }
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "portmap",
|
||||
"capabilities": {"portMappings": true}
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
echo "[6/8] Avvio e abilitazione containerd"
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now containerd
|
||||
|
||||
echo "[7/8] Installazione keadm ${KUBEEDGE_VERSION}"
|
||||
cd "${TMP_DIR}"
|
||||
curl -fsSL "https://github.com/kubeedge/kubeedge/releases/download/${KUBEEDGE_VERSION}/keadm-${KUBEEDGE_VERSION}-linux-amd64.tar.gz" | tar -xz
|
||||
sudo mv "keadm-${KUBEEDGE_VERSION}-linux-amd64/keadm/keadm" /usr/local/bin/
|
||||
|
||||
echo "[8/8] Join edge node al cloud master"
|
||||
sudo keadm join \
|
||||
--cloudcore-ipport="${CLOUD_MASTER_IP}:10000" \
|
||||
--edgenode-name="${EDGE_NODE_NAME}" \
|
||||
--token="${KUBEEDGE_TOKEN}" \
|
||||
--kubeedge-version="${KUBEEDGE_VERSION}"
|
||||
|
||||
echo "Creazione script di cleanup edge"
|
||||
cat <<'EOF' | sudo tee /usr/local/bin/edge-cleanup.sh >/dev/null
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "==== EDGE NODE CLEANUP START ===="
|
||||
echo "Timestamp: $(date)"
|
||||
|
||||
echo "[1] Checking orphan processes..."
|
||||
ORPHANS=$(ps -eo pid,ppid,cmd | awk '$2 == 1 {print $1}')
|
||||
for PID in ${ORPHANS}; do
|
||||
if [ "${PID}" != "1" ]; then
|
||||
echo "Killing orphan PID: ${PID}"
|
||||
kill -9 "${PID}" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
|
||||
echo "[2] Cleaning containerd..."
|
||||
if command -v crictl >/dev/null 2>&1; then
|
||||
crictl ps -a --state Exited -q | xargs -r crictl rm || true
|
||||
crictl pods --state NotReady -q | xargs -r crictl rmp || true
|
||||
crictl rmi --prune || true
|
||||
else
|
||||
echo "crictl not found, skipping..."
|
||||
fi
|
||||
|
||||
echo "[3] Restarting containerd..."
|
||||
systemctl restart containerd || true
|
||||
|
||||
echo "[4] Cleaning kubelet state (soft)..."
|
||||
find /var/lib/kubelet/pods -mindepth 1 -maxdepth 1 -type d -mtime +1 -exec rm -rf {} + || true
|
||||
|
||||
echo "[5] Restarting kubelet + edgecore..."
|
||||
systemctl restart kubelet || true
|
||||
systemctl restart edgecore || true
|
||||
|
||||
echo "[6] Checking MQTT port..."
|
||||
ss -tulnp | grep 1883 || echo "WARNING: Mosquitto not listening"
|
||||
|
||||
echo "==== EDGE NODE CLEANUP DONE ===="
|
||||
EOF
|
||||
|
||||
sudo chmod +x /usr/local/bin/edge-cleanup.sh
|
||||
|
||||
echo "Creazione service systemd edge-cleanup"
|
||||
cat <<'EOF' | sudo tee /etc/systemd/system/edge-cleanup.service >/dev/null
|
||||
[Unit]
|
||||
Description=Edge Node Cleanup
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/local/bin/edge-cleanup.sh
|
||||
RemainAfterExit=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable edge-cleanup
|
||||
|
||||
echo "==== EDGE NODE INSTALL DONE ===="
|
||||
Reference in New Issue
Block a user