primo
This commit is contained in:
276
add-on/Istruzioni_kubeedge.txt
Normal file
276
add-on/Istruzioni_kubeedge.txt
Normal file
@@ -0,0 +1,276 @@
|
||||
Cloudside:
|
||||
|
||||
wget https://github.com/kubeedge/kubeedge/releases/download/v1.17.0/keadm-v1.17.0-linux-amd64.tar.gz
|
||||
tar -zxvf keadm-v1.17.0-linux-amd64.tar.gz
|
||||
cp keadm-v1.17.0-linux-amd64/keadm/keadm /usr/local/bin/keadm
|
||||
|
||||
keadm init --advertise-address="89.105.78.161" --kubeedge-version=v1.22.0 --kube-config=/root/.kube/config
|
||||
|
||||
keadm manifest generate --advertise-address="89.105.78.161" --kube-config=/root/.kube/config > kubeedge-cloudcore.yaml
|
||||
|
||||
patch:
|
||||
|
||||
cloudcore.yaml: |
|
||||
apiVersion: cloudcore.config.kubeedge.io/v1alpha2
|
||||
commonConfig:
|
||||
monitorServer:
|
||||
bindAddress: 127.0.0.1:9091
|
||||
tunnelPort: 10354
|
||||
featureGates:
|
||||
requireAuthorization: false
|
||||
kind: CloudCore
|
||||
|
||||
kubectl apply -f kubeedge-cloudcore.yaml -n kubeedge
|
||||
kubectl apply -f edgenodeport.yaml -n kubeedge
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Edge Side:
|
||||
export KUBEEDGE_VERSION=v1.22.0
|
||||
export CLOUD_MASTER_IP=34.132.113.155
|
||||
export EDGE_NODE_NAME=edge-node-02
|
||||
|
||||
|
||||
Step 1 : Download & unpack containerd package
|
||||
Containerd versions can be found in this location : https://github.com/containerd/containerd/releases
|
||||
|
||||
Download :
|
||||
wget https://github.com/containerd/containerd/releases/download/v1.6.14/containerd-1.6.14-linux-amd64.tar.gz
|
||||
Unpack :
|
||||
sudo tar Cxzvf /usr/local containerd-1.6.14-linux-amd64.tar.gz
|
||||
|
||||
Step 2 : Install runc
|
||||
Runc is a standardized runtime for spawning and running containers on Linux according to the OCI specification
|
||||
|
||||
wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64
|
||||
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
|
||||
|
||||
Step 3: Download and install CNI plugins :
|
||||
wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
|
||||
sudo mkdir -p /opt/cni/bin
|
||||
sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz
|
||||
|
||||
Step 4: Configure containerd
|
||||
|
||||
Create a containerd directory for the configuration file
|
||||
config.toml is the default configuration file for containerd
|
||||
Enable systemd group . Use sed command to change the parameter in config.toml instead of using vi editor
|
||||
Convert containerd into service
|
||||
|
||||
sudo mkdir /etc/containerd
|
||||
containerd config default | sudo tee /etc/containerd/config.toml
|
||||
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
|
||||
sudo curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service
|
||||
|
||||
Step 4.1
|
||||
remove SystemdCgroup = true line from /etc/containerd/config.toml.
|
||||
|
||||
Step 4.2
|
||||
mkdir -p /etc/cni/net.d/
|
||||
|
||||
$ cat >/etc/cni/net.d/10-containerd-net.conflist <<EOF
|
||||
{
|
||||
"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
|
||||
|
||||
|
||||
Step 5: Start containerd service
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now containerd
|
||||
sudo systemctl status containerd
|
||||
|
||||
step 6: install crictl
|
||||
VERSION="v1.35.0" # check latest version in /releases page
|
||||
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
|
||||
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
|
||||
rm -f crictl-$VERSION-linux-amd64.tar.gz
|
||||
|
||||
edge-cleanup.sh:
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
echo "==== EDGE NODE CLEANUP START ===="
|
||||
DATE=$(date)
|
||||
echo "Timestamp: $DATE"
|
||||
|
||||
# -------------------------------
|
||||
# 1. Kill processi orfani (safe)
|
||||
# -------------------------------
|
||||
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
|
||||
|
||||
# -------------------------------
|
||||
# 2. Cleanup containerd (safe)
|
||||
# -------------------------------
|
||||
echo "[2] Cleaning containerd..."
|
||||
|
||||
if command -v crictl &> /dev/null; then
|
||||
echo "Using crictl..."
|
||||
|
||||
# rimuove solo container stopped
|
||||
crictl ps -a --state Exited -q | xargs -r crictl rm || true
|
||||
|
||||
# rimuove pod sandbox non più validi
|
||||
crictl pods --state NotReady -q | xargs -r crictl rmp || true
|
||||
|
||||
# pulizia immagini dangling (SAFE)
|
||||
crictl rmi --prune || true
|
||||
else
|
||||
echo "crictl not found, skipping..."
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# 3. Restart containerd
|
||||
# -------------------------------
|
||||
echo "[3] Restarting containerd..."
|
||||
systemctl restart containerd
|
||||
|
||||
# -------------------------------
|
||||
# 4. Cleanup kubelet (soft)
|
||||
# -------------------------------
|
||||
echo "[4] Cleaning kubelet state (soft)..."
|
||||
|
||||
# Rimuove solo pod non più esistenti
|
||||
find /var/lib/kubelet/pods -mindepth 1 -maxdepth 1 -type d -mtime +1 -exec rm -rf {} + || true
|
||||
|
||||
# -------------------------------
|
||||
# 5. Restart kube services
|
||||
# -------------------------------
|
||||
echo "[5] Restarting kubelet + edgecore..."
|
||||
|
||||
systemctl restart kubelet || true
|
||||
systemctl restart edgecore || true
|
||||
|
||||
# -------------------------------
|
||||
# 6. Verifica connessione CloudCore
|
||||
# -------------------------------
|
||||
echo "[6] Checking connectivity to CloudCore..."
|
||||
|
||||
CLOUD_IP="89.105.78.161"
|
||||
PORT="10002"
|
||||
|
||||
if timeout 5 bash -c "</dev/tcp/$CLOUD_IP/$PORT"; then
|
||||
echo "Cloud reachable"
|
||||
else
|
||||
echo "WARNING: Cloud NOT reachable"
|
||||
fi
|
||||
|
||||
# -------------------------------
|
||||
# 7. Verifica porte MQTT locali
|
||||
# -------------------------------
|
||||
echo "[7] Checking MQTT port..."
|
||||
|
||||
ss -tulnp | grep 1883 || echo "WARNING: Mosquitto not listening"
|
||||
|
||||
echo "==== EDGE NODE CLEANUP DONE ===="
|
||||
|
||||
|
||||
|
||||
|
||||
/etc/systemd/system/edge-cleanup.service:
|
||||
|
||||
|
||||
[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
|
||||
|
||||
|
||||
|
||||
|
||||
chmod +x /usr/local/bin/edge-cleanup.sh
|
||||
systemctl daemon-reload
|
||||
systemctl enable edge-cleanup
|
||||
|
||||
|
||||
export KUBEEDGE_VERSION=v1.22.0
|
||||
export CLOUD_MASTER_IP=194.110.57.153
|
||||
export EDGE_NODE_NAME=edge-node-02
|
||||
|
||||
curl -L 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/
|
||||
|
||||
sudo keadm join \
|
||||
--cloudcore-ipport=${CLOUD_MASTER_IP}:10000 \
|
||||
--edgenode-name=${EDGE_NODE_NAME} \
|
||||
--token=f871f93cffd630c906bf381dae4496544a111075071abfec060e2db4ab417b6e.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NzUyOTM2NjJ9.xvMdgApjtPDpPm-GShmR6ghjBgvFTJsJf6JTJLeSK08 \
|
||||
--kubeedge-version=${KUBEEDGE_VERSION}
|
||||
|
||||
kubectl taint nodes edge-node-02 edgenode=true:NoExecute
|
||||
|
||||
|
||||
test sensor:
|
||||
|
||||
sudo apt-get install mosquitto-clients
|
||||
|
||||
sensor.sh
|
||||
#!/bin/bash
|
||||
|
||||
BROKER="localhost"
|
||||
TOPIC="sensors/home/livingroom"
|
||||
|
||||
while true; do
|
||||
TEMP=$(awk -v min=20 -v max=30 'BEGIN{srand(); print min+rand()*(max-min)}')
|
||||
HUM=$(awk -v min=40 -v max=80 'BEGIN{srand(); print min+rand()*(max-min)}')
|
||||
|
||||
PAYLOAD=$(printf '{"temperature": %.2f, "humidity": %.2f}' $TEMP $HUM)
|
||||
|
||||
echo "Sending: $PAYLOAD"
|
||||
|
||||
mosquitto_pub -h $BROKER -t $TOPIC -m "$PAYLOAD"
|
||||
|
||||
sleep 5
|
||||
done
|
||||
|
||||
|
||||
verifica :
|
||||
mosquitto_sub -h localhost -t sensors/home/livingroom
|
||||
Reference in New Issue
Block a user