kubeedge1.17.0部署

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

部署有问题的话,评论区直接说,我也是小白



一、k8s部署(主节点,从节点配置)

 虚拟机配置ubutun18.04
 

软件vim下载

apt install vim

虚拟机IP网址固定

gedit /etc/netplan/01-network-manager-all.yaml

这里是ubutu18.04 网址固定
 

network:
  version: 2
  ethernets:
    ens33: # 网卡名称
      dhcp4: no
      addresses:
        - 192.168.182.178/24 # ip地址 
      gateway4: 192.168.182.2 # 网关 
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

然后

netplan apply

试一下百度能通吗如果报错网络设置有错

ping www.baidu.com

修改虚拟机名字

gedit /etc/hostname

禁用永久禁用SELinux 

SELINUX=disabled

关闭swap

sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab

开启6443端口

ufw allow 6443

查看防火墙状态

sudo ufw status

开启IPv4转发

sudo cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

设置时间同步

选择 Asia ShangHai

sudo dpkg-reconfigure tzdata

安装Docker

sudo apt-get update
sudo apt-get -y install docker.io

修改docker启动项:

sudo mkdir /etc/docker
sudo gedit /etc/docker/daemon.json

选择相面镜像,有时候镜像拉不下来 换下镜像源

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
  }
  },
  "experimental": true,
  "features": {
    "buildkit": true
  },
  "registry-mirrors": [
      "https://ghcr.ikubernetes.xyz",
      "https://cloudsmith.ikubernetes.xyz",
      "https://docker.ikubernetes.xyz",
      "https://quey.ikubernetes.xyz",
      "https://gcr.ikubernetes.xyz",
      "https://k8s-gcr.ikubernetes.xyz",
      "https://k8s..ikubernetes.xyz"
  ],
  "data-root": "/var/lib/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "500m",
    "max-file": "60"
  }
}

"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"

重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

查看docker版本和状态

sudo docker version
sudo systemctl status docker

安装cri-dockerg 官网https://github.com/Mirantis/cri-dockerd/releases

选择一个版本

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.15/cri-dockerd_0.3.15.3-0.ubuntu-bionic_amd64.deb
sudo dpkg -i cri-dockerd_0.3.15.3-0.ubuntu-bionic_amd64.deb

调整启动参数

sudo sed -i -e 's#ExecStart=.*#ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8#g' /lib/systemd/system/cri-docker.service

设置开机自启动

sudo systemctl daemon-reload
sudo systemctl enable cri-docker

查看cri-docker状态

sudo systemctl status cri-docker

安装kubelet(主节点)

下载一些网络插件

 sudo apt-get update && sudo apt-get install -y apt-transport-https
   apt install curl
 curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
 cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
 
        deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
 EOF
apt-get update
apt-get install kubelet kubeadm kubectl

安装指定版本

apt install kubelet=1.28.2-00 kubectl=1.28.2-00 kubeadm=1.28.2-00

防止自动更新

sudo apt-mark hold kubelet kubeadm kubectl
sudo mkdir /etc/sysconfig
sudo gedit /etc/sysconfig/kubelet

在里面添加内容

KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock

启动kubelet

sudo systemctl enable --now kubelet 

主节点初始化查看初始化的镜像

sudo kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

拉取镜像

sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock

初始化 主机IP地址换成自己的 kubelet 换成自己的版本这里是1.28.2

kubeadm init --control-plane-endpoint=192.168.74.140 --kubernetes-version=v1.28.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket unix:///run/cri-dockerd.sock --upload-certs --image-repository registry.aliyuncs.com/google_containers

初始化成功后

To start using your cluster, you need to run the following as a regular user:
 
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/
 
Then you can join any number of worker nodes by running the following on each as root:
 
kubeadm join 192.168.0.5:6443 --token rt0fpo.4axz6.....m1ihf \
    --discovery-token-ca-cert-hash sha256:ac20e89e8bf43b56......516a41305c1c1fd5c7 

看到三行代表初始化成功,在root环境下然后运行这三条指令

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

然后部署网络插件这里是flannel(有时候镜像拉不下来)可以单独把镜像拉下来 

wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

下载后

kubectl apply -f kube-flannel.yml

有时镜像会出现 拉不下来,导致 节点not ready 可以选择三方镜像源

二、kubeedge部署

1.离线部署(master和node节点都要安装)(1和2选择其中一个)

代码如下(示例):

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
root@master:~#   kubectl describe nodes master | grep Taints
Taints:             node-role.kubernetes.io/control-plane:NoSchedule
root@master:~# kubectl taint node master node-role.kubernetes.io/control-plane:NoSchedule-
node/master untainted

node-role.kubernetes.io/control-plane:NoSchedule 表示有污点
untainted表示污点已清除
kubectl taint node master node-role.kubernetes.io/control-plane:NoSchedule-

2.docker容器化部署

以kubeedge  1.17.0为例  运行不成功 镜像源的原因,拉去不下来镜像

运行下面代码之前,一定要清除主节点污点,

root@master:~#   kubectl describe nodes master | grep Taints
Taints:             node-role.kubernetes.io/control-plane:NoSchedule
root@master:~# kubectl taint node master node-role.kubernetes.io/control-plane:NoSchedule-
node/master untainted

node-role.kubernetes.io/control-plane:NoSchedule 表示有污点
untainted表示污点已清除
kubectl taint node master node-role.kubernetes.io/control-plane:NoSchedule-
docker run --rm kubeedge/installation-package:v1.17.0 cat /usr/local/bin/keadm > /usr/local/bin/keadm && chmod +x /usr/local/bin/keadm

3主节点初始化

keadm init --advertise-address="THE-EXPOSED-IP" --kubeedge-version=v1.17.0 --kube-config=/root/.kube/config

成功加载后会有一个界面。云端节点以运行或者可以查看pod 看下云节点pod是否在运行。

4.打标签(master节点)


后面为了防止flanne kube-proxy 调度到边节点 要打标签

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"}]}]}}}}]'
kubectl get daemonset -n kube-flannel |grep -v NAME |awk '{print $1}' | xargs -n 1 kubectl patch daemonset -n kube-flannel --type='json' -p='[{"op": "replace","path": "/spec/template/spec/affinity","value":{"nodeAffinity":{"requiredDuringSchedulingIgnoredDuringExecution":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node-role.kubernetes.io/edge","operator":"DoesNotExist"}]}]}}}}]'

主节点已部署好

三、edge节点部署

1.边缘节点部署
 

在此之前 边节点已部署好 docker 与cri -docker (如果没有加入成功)看下面注意事项

keadm reset && rm -rf /etc/kubeedge/ && keadm join --remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cloudcore-ipport=192.168.229.4:10000 --token=4fbd4f656d8ff66d0a1bf77e59d74d005509104b78db52da13cc8c81d9957332.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzQwNzI1MjN9.wXjADn1Lgpqyr6pW_SXJH_lMlIk3abte5gAUyoqfKG0 --kubeedge-version=1.17.0 

2.注意

加入边节点前 如果你这台虚拟机此前部署kubelet 

1.查看kube-proxy的进程

netstat -tulp

然后杀死进程号kube-proxy

kill -9 进程号pid

然后加入边缘节点

keadm reset && rm -rf /etc/kubeedge/ && keadm join --remote-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cloudcore-ipport=192.168.229.4:10000 --token=4fbd4f656d8ff66d0a1bf77e59d74d005509104b78db52da13cc8c81d9957332.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzQwNzI1MjN9.wXjADn1Lgpqyr6pW_SXJH_lMlIk3abte5gAUyoqfKG0 --kubeedge-version=1.17.0 --with-mqtt

加入节点后,边缘节点会not ready 那是边缘节点CNI插件未安装

这里有官网地址https://github.com/containernetworking/plugins/releases

wget https://github.com/containernetworking/plugins/releases/download/v1.6.0/cni-plugins-linux-amd64-v1.6.0.tgz
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.6.0.tgz
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

重启dockers  cri-docker  edgecore

systemctl restart docker 
systemctl restart cri-docker
systemctl restart edgecore

此时node节点就ready了

但kubectl logs pod 还没有还需要进一步配置;


参考

从零开始部署kebeedge

Ubuntu18.04 安装kubernetes v1.25.x 集群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值