kubeedge安装-centos7
一、主节点安装
1、环境准备
# 修改安装策略
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 禁用 swap
sudo swapoff -a
sudo sed -i '/\sswap\s/s/^/#/' /etc/fstab
# 加载内核模块
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# 设置网络参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
# 安装必要的工具
sudo yum install -y yum-utils
# 添加 Docker CE 官方仓库(CentOS 7 专用)
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 如果遇到 GPG 密钥错误,可以添加
sudo rpm --import https://download.docker.com/linux/centos/gpg
# 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 创建 Docker 配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {"max-size": "100m"},
"storage-driver": "overlay2",
"registry-mirrors": [
"https://dockerhub.timeweb.cloud"
]
}
EOF
# 启动 Docker
sudo systemctl daemon-reload
sudo systemctl enable docker --now
# 安装 RPM 包
sudo yum install -y cri-dockerd-0.3.10-3.el7.x86_64.rpm
# 修改配置文件
sudo sed -i '/^ExecStart=/ s|--container-runtime-endpoint fd://|--pod-infra-container-image registry.k8s.io/pause:3.9|' /usr/lib/systemd/system/cri-docker.service
# 覆盖现有crictl配置
sudo tee /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///var/run/cri-dockerd.sock
image-endpoint: unix:///var/run/cri-dockerd.sock
timeout: 5
debug: false
EOF
# 重新加载 systemd
sudo systemctl daemon-reload
# 启动服务
sudo systemctl enable --now cri-docker
# 检查配置
cat /etc/crictl.yaml
# 测试连接
sudo crictl ps
4、安装k8s
# 安装版本v1.28.2,v1.29.0存在兼容性问题
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF
# 安装 kubeadm/kubelet/kubectl v1.28.0
sudo yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0 --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
# 初始化 Master 节点
# 生成初始化配置文件
kubeadm config print init-defaults > kubeadm.yaml
# 修改关键配置,下面的<MASTER_IP>修改为自己的节点IP
sed -i 's/advertiseAddress: 1.2.3.4/advertiseAddress: <MASTER_IP>/' kubeadm.yaml
sed -i 's/name: node/name: k8s-master/' kubeadm.yaml
cat <<EOF >> kubeadm.yaml
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
# 将criSocket的值改为:unix:///var/run/cri-dockerd.sock
sudo sed -i 's|unix:///var/run/cri-dockerd.sock|unix:///run/containerd/containerd.sock|g' kubeadm.yaml
# 初始化集群
sudo kubeadm init --config=kubeadm.yaml --upload-certs | tee kubeadm-init.log
# 配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 安装calico
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml
# 验证 Calico 安装
kubectl get pods -n kube-system -w
5、安装keadm
wget https://github.com/kubeedge/kubeedge/releases/download/v1.19.2/keadm-v1.19.2-linux-amd64.tar.gz
tar -xvf keadm-v1.19.2-linux-amd64.tar.gz
cd keadm-v1.19.2-linux-amd64/keadm
sudo cp keadm /usr/local/bin/
# 初始化云端
# 如在master节点安装需移除污点
kubectl taint nodes k8smaster node-role.kubernetes.io/control-plane:NoSchedule-
# 初始化,下面的<MASTER_IP>修改为自己的节点ip
sudo keadm init \
--kube-config=$HOME/.kube/config \
--advertise-address=<MASTER_IP> \
--kubeedge-version=1.19.2 \
--set cloudcore.image.repository=registry.cn-hangzhou.aliyuncs.com/kubeedge/cloudcore \
--set cloudcore.image.tag=v1.19.2
sudo keadm init --advertise-address=<MASTER_IP> --kube-config=$HOME/.kube/config --set iptablesManager.mode="external" --kubeedge-version=1.19.2
# 打标签防止云端的一些damonset pod调度到边缘端
kubectl get daemonset -n kube-system |grep -v NAME |awk '{print $1}' | xargs -n 1 kubectl patch daemonset -n kube-system --type='json' -p='[{"op": "replace","path": "/spec/template/spec/affinity","value":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node-role.kubernetes.io/edge","operator":"DoesNotExist"}]}]}}}}]'
# 安装metrics-server,便于查看边缘节点的pod日志
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# 如果镜像拉不下来(可选)
docker pull registry.aliyuncs.com/google_containers/metrics-server:v0.7.2
docker tag registry.aliyuncs.com/google_containers/metrics-server:v0.7.2 registry.k8s.io/metrics-server/metrics-server:v0.7.2
# 忽略metrics-server的tls证书校验
kubectl patch deploy metrics-server -n kube-system --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value":"--kubelet-insecure-tls"}]'
二、边缘点安装
1、环境准备
重复主节点上的步骤1-3,即环境准备、安装docker、安装 cri-dockerd
2、安装cni
sudo mkdir -p /opt/cni/bin
sudo tar -C /opt/cni/bin -xzvf cni-plugins-linux-arm64-v1.1.1.tgz
sudo mkdir -p /etc/cni/net.d
sudo vim /etc/cni/net.d/10-containerd-net.conflist
{
"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}
}
]
}
3、安装keadm
sudo rm -rf /etc/kubeedge/
# CLOUD_CORE_IPPORT,主节点+默认端口号10000,如10.32.6.65:10000
# EDGE_NODE_NAME 自定义边缘节点名称,不可重复
sudo ./keadm join \
--cloudcore-ipport=${CLOUD_CORE_IPPORT} \
--token=${TOKEN} \
--kubeedge-version=1.19.2 \
--edgenode-name=${EDGE_NODE_NAME} \
--remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock \
--cgroupdriver=systemd
另有一键离线安装包可私信领取