#创作者激励# 领航计划(二)- 正题-部署安装KubeEdge 原创

Piwriw.
发布于 2023-3-3 18:20
浏览
0收藏

领航计划(二)- 正题-部署安装KubeEdge

前言部分

  • 今天的主题是部署安装KubeEdge,这将会是入门的重要门槛,因为实在是安装总是会出现一些不经意的错误,下面是经过几次验证的安装步骤,很多都支持了一些简单的shell脚本的安装解决了一定了安装失败的问题,希望可以帮助到你

KubeEdge 部署环境

  • 在云端方面,我们需要:Kubernetes 集群
    • Kubernetes:在CPU:2G,运行内存2G以上(建议可以的话还是运行内存在4G以上,CPU4G)
  • 在边缘,我们需要:
    容器运行时,现在我们支持:
    • Docker
    • Containerd
    • Cri-o
    • Virtlet
    • MQTT服务器(可选)
  • 建议公网开放端口:9443、10252、10251、5353、20006、2701、9376、12345、2379、2380、6443、10000-10004
  • 出现无法访问,第一时间考虑是否未开放相应端口号

1. 安装Docker

Docker

  • 一键shell脚本安装:安装实例中Docker版本19.03.5
 yum install -y yum-utils \
device-mapper-persistent-data \
lvm2


yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo



yum install docker-ce-19.03.5 docker-ce-cli-19.03. containerd.io -y


systemctl start docker
systemctl enable docker

验证Docker

  • 输入docker version

配置Docker

  • 配置Docker

      1. 修改exec-opts
      1. 添加Docker镜像"registry-mirrors": ["https://dockerproxy.com" ]
  • 一键脚本

touch /etc/docker/daemon.json
echo '{ "exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://dockerproxy.com" ] }' > /etc/docker/daemon.json
service docker restart
# 开机自动启动,防止需要手动启动
systemctl enable docker.service

2. 安装K8S集群

一键Shell脚本安装

  • K8S安装版本:19.4
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
 
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
 
sysctl --system
yum install -y wget
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache
 
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install -y kubelet-1.19.4 kubectl-1.19.4 kubeadm-1.19.4
systemctl enable kubelet

部署启动K8S集群

  • 需要指定kubernetes-version和–apiserver-advertise-address
  • apiserver-advertise-address:服务器内网地址
kubeadm init --apiserver-advertise-address=xxx  --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

安装提示完成安装K8S

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署flannel网络插件

  • 问题描述:当你不部署容器网络的时候,可能会出coredns一直处于pengding 模式
    • 适用情况:执行kubectl describe po <peoblem podid> -n <peoblem podid> 之后描述内容:warning 缺少一个xx 文件的
# 获取安装文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 执行生成flannel 容器
kubectl apply -f kube-flannel.yml 

其他问题

有master污点,无法调度

  • 使用kubectl describe po <po> -n <namespace>,查看描述类似kubectl taint nodes k8s-master1 node-role.kubernetes.io/master=:NoSchedule node/k8s-master1 tainted
  • 解决:允许调度到master kubectl taint nodes --all node-role.kubernetes.io/master-

3. 安装KubeEdge

一键Shell脚本安装云端

  • 环境:下载KubeEgev.12.1版本
  • –advertise-address 公网ip
  • 出现cloudcore install过慢
    • 事先拉取docker镜像
    • exmaple:docker pull kubeedge/cloudcore:v1.12.1
  • kubeedge\keadm weget可能受到网络限制,下载过慢可以手动下载,放入服务器并且注释wget
  • 建议先修改好hostname:hostnamectl set-hostname <newhostname>hostnamectl set-hostname cloud-01
wget https://github.com/kubeedge/kubeedge/releases/download/v1.12.1/keadm-v1.12.1-linux-amd64.tar.gz
tar zxvf keadm-v1.12.1-linux-amd64.tar.gz
chmod +x keadm-v1.12.1-linux-amd64/keadm/keadm
mv keadm-v1.12.1-linux-amd64/keadm/keadm /usr/local/bin
## --advertise-address 公网ip
keadm init --advertise-address=xxx --set iptablesManager.mode="external" --profile version=v1.12.1
kubectl get pod -n kubeedge

# 安装metrics-server
#kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# 添加 --kubelet-insecure-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"}]'

# daemon patch
# 禁止 kubectl-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"}]}]}}}}]'

验证安装

  • keadm version
  • kubectl get pod -n kubeedge:有二个podcloudcore.... and cloud-iptables-manager... 后面是我们在启动cloudcore的时候指定了iptablesManager.mode="external"

边缘节点安装

  • 边缘节点可能加入过慢:
    • 事先拉取docker 镜像,版本之间不互通,这边是kubeEdge 是v1.12.1版本下的的版本对应关系
    • example:docker pull eclipse-mosquitto:1.6.15 and kubeedge/installation-package
  • 建议先修改好hostname:hostnamectl set-hostname <newhostname>hostnamectl set-hostname edge-01
    1. 回到第一步安装Docker
    1. 安装keadm 命令:
wget https://github.com/kubeedge/kubeedge/releases/download/v1.12.1/keadm-v1.12.1-linux-amd64.tar.gz
tar zxvf keadm-v1.12.1-linux-amd64.tar.gz
chmod +x keadm-v1.12.1-linux-amd64/keadm/keadm
mv keadm-v1.12.1-linux-amd64/keadm/keadm /usr/local/bin
    1. 获取云端token:在云端节点执行keadm gettoken
    1. join 云端:keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1
    • TOKEN:云端获取的token
    • SERVER:云端节点的公网ip:10000 端口,一般kubeedge使用10000
    1. 在加入的时候,可以在云端使用kubectl get nodes -A -w,在边缘启动成功之后,需要等待一会云端的k8s 才会显示加入节点,看到节点处于ready模式

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2023-3-3 19:42:43修改
1
收藏
回复
举报
回复
    相关推荐