Include standard plugin install
This commit is contained in:
parent
3c6ab8c4b8
commit
88ad00ae93
@ -2,6 +2,9 @@
|
|||||||
"cniVersion": "1.0.0",
|
"cniVersion": "1.0.0",
|
||||||
"name": "mycelium-network",
|
"name": "mycelium-network",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
{
|
||||||
|
"type": "loopback"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "mycelium-cni",
|
"type": "mycelium-cni",
|
||||||
"myceliumInterface": "mycelium"
|
"myceliumInterface": "mycelium"
|
||||||
|
67
README.md
67
README.md
@ -10,15 +10,22 @@ This CNI plugin integrates with the Mycelium overlay network to provide IPv6 con
|
|||||||
|
|
||||||
- Mycelium daemon running on the host
|
- Mycelium daemon running on the host
|
||||||
- Go 1.21+
|
- Go 1.21+
|
||||||
|
- Standard CNI plugins (for loopback and other basic functionality)
|
||||||
- Root privileges for installation
|
- Root privileges for installation
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Download dependencies and build the plugin
|
# 1. Install standard CNI plugins (required for loopback)
|
||||||
|
CNI_VERSION="v1.3.0"
|
||||||
|
wget https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz
|
||||||
|
sudo mkdir -p /opt/cni/bin
|
||||||
|
sudo tar -xzf cni-plugins-linux-amd64-${CNI_VERSION}.tgz -C /opt/cni/bin/
|
||||||
|
|
||||||
|
# 2. Download dependencies and build the plugin
|
||||||
make build
|
make build
|
||||||
|
|
||||||
# Install plugin and configuration
|
# 3. Install plugin and configuration
|
||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -26,13 +33,16 @@ make install
|
|||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
The plugin uses a CNI configuration file (`10-mycelium.conflist`) that specifies the Mycelium interface name:
|
The plugin uses a CNI configuration file (`10-mycelium.conflist`) that includes the loopback plugin and specifies the Mycelium interface name:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"cniVersion": "1.0.0",
|
"cniVersion": "1.0.0",
|
||||||
"name": "mycelium-network",
|
"name": "mycelium-network",
|
||||||
"plugins": [
|
"plugins": [
|
||||||
|
{
|
||||||
|
"type": "loopback"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "mycelium-cni",
|
"type": "mycelium-cni",
|
||||||
"myceliumInterface": "mycelium"
|
"myceliumInterface": "mycelium"
|
||||||
@ -49,6 +59,32 @@ The plugin uses a CNI configuration file (`10-mycelium.conflist`) that specifies
|
|||||||
|
|
||||||
## Usage with Kubernetes
|
## Usage with Kubernetes
|
||||||
|
|
||||||
|
### For k3s
|
||||||
|
|
||||||
|
k3s requires special setup since it uses Flannel CNI by default:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Install k3s without default CNI
|
||||||
|
curl -sfL https://get.k3s.io | sh -s - --flannel-backend=none --disable-network-policy
|
||||||
|
|
||||||
|
# OR modify existing k3s installation
|
||||||
|
sudo systemctl edit k3s
|
||||||
|
# Add these lines:
|
||||||
|
# [Service]
|
||||||
|
# ExecStart=
|
||||||
|
# ExecStart=/usr/local/bin/k3s server --flannel-backend=none --disable-network-policy
|
||||||
|
|
||||||
|
# 2. Install CNI plugins and Mycelium CNI plugin (follow installation steps above)
|
||||||
|
|
||||||
|
# 3. Copy CNI config to k3s location
|
||||||
|
sudo cp /etc/cni/net.d/10-mycelium.conflist /var/lib/rancher/k3s/agent/etc/cni/net.d/
|
||||||
|
|
||||||
|
# 4. Restart k3s
|
||||||
|
sudo systemctl restart k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
### For standard Kubernetes
|
||||||
|
|
||||||
### 1. Setup Mycelium on all nodes
|
### 1. Setup Mycelium on all nodes
|
||||||
|
|
||||||
First, install Mycelium on all Kubernetes nodes:
|
First, install Mycelium on all Kubernetes nodes:
|
||||||
@ -88,12 +124,19 @@ sudo systemctl enable --now mycelium
|
|||||||
On each Kubernetes node:
|
On each Kubernetes node:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Install standard CNI plugins first (if not already done)
|
||||||
|
CNI_VERSION="v1.3.0"
|
||||||
|
wget https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz
|
||||||
|
sudo mkdir -p /opt/cni/bin
|
||||||
|
sudo tar -xzf cni-plugins-linux-amd64-${CNI_VERSION}.tgz -C /opt/cni/bin/
|
||||||
|
|
||||||
# Download dependencies, build and install the plugin
|
# Download dependencies, build and install the plugin
|
||||||
make build
|
make build
|
||||||
sudo make install
|
sudo make install
|
||||||
|
|
||||||
# Verify installation
|
# Verify installation
|
||||||
ls -la /opt/cni/bin/mycelium-cni
|
ls -la /opt/cni/bin/mycelium-cni
|
||||||
|
ls -la /opt/cni/bin/loopback
|
||||||
ls -la /etc/cni/net.d/10-mycelium.conflist
|
ls -la /etc/cni/net.d/10-mycelium.conflist
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -202,8 +245,19 @@ Check common issues:
|
|||||||
sudo systemctl status mycelium
|
sudo systemctl status mycelium
|
||||||
ip -6 addr show mycelium
|
ip -6 addr show mycelium
|
||||||
|
|
||||||
# Check CNI logs
|
# Check CNI logs (kubelet for standard k8s, k3s for k3s)
|
||||||
journalctl -u kubelet | grep -i cni
|
journalctl -u kubelet | grep -i cni
|
||||||
|
# OR for k3s:
|
||||||
|
journalctl -u k3s | grep -i cni
|
||||||
|
|
||||||
|
# Verify CNI plugins are installed
|
||||||
|
ls -la /opt/cni/bin/loopback
|
||||||
|
ls -la /opt/cni/bin/mycelium-cni
|
||||||
|
|
||||||
|
# Check CNI configuration location
|
||||||
|
ls -la /etc/cni/net.d/10-mycelium.conflist
|
||||||
|
# OR for k3s:
|
||||||
|
ls -la /var/lib/rancher/k3s/agent/etc/cni/net.d/10-mycelium.conflist
|
||||||
|
|
||||||
# Verify network namespaces
|
# Verify network namespaces
|
||||||
sudo ip netns list
|
sudo ip netns list
|
||||||
@ -213,6 +267,11 @@ kubectl exec -it <pod> -- ip link show
|
|||||||
kubectl exec -it <pod> -- ip -6 route show
|
kubectl exec -it <pod> -- ip -6 route show
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Common errors and solutions:**
|
||||||
|
- `failed to find plugin "loopback"`: Install standard CNI plugins (see installation section)
|
||||||
|
- `failed to find interface mycelium`: Mycelium daemon not running or interface not created
|
||||||
|
- `no global IPv6 address found`: Mycelium not connected to network peers
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
Based on the docker-demo.sh script, this plugin:
|
Based on the docker-demo.sh script, this plugin:
|
||||||
|
Loading…
Reference in New Issue
Block a user