一、系统配置与安装docker (云边节点都操作执行) 1、禁用开机自启动防火墙 1 2 systemctl stop firewalld systemctl disable firewalld
2、关闭selinux 1 2 sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0
3、关闭swap 1 2 sed -ri 's/.*swap.*/#&/' /etc/fstab swapoff -a
4、在各节点添加hosts与githubusercontent解析 1 2 3 4 5 6 7 cat >> /etc/hosts << EOF 192.168.2.201 master1 192.168.2.202 master2 192.168.2.203 master3 192.168.2.205 node1 199.232.68.133 raw.githubusercontent.com EOF
5、安装docker 1 2 3 4 5 6 7 8 9 10 yum install -y wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce-18.06.1.ce-3.el7 systemctl enable docker && systemctl start docker cat > /etc/docker/daemon.json << EOF { "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] } EOF
二、安装cloud节点 1、安装kubeadm、kubelet、kubectl 1 2 3 4 5 6 7 8 9 10 11 cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 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 yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 ipvsadm
2、将桥接的IPv4流量传递到iptables的链 1 2 3 4 5 6 7 8 9 10 11 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness=0 EOF sysctl --system modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf
加载ipvs相关内核模块 如果重新开机,需要重新加载(可以写在 /etc/rc.local 中开机自动加载)
1 2 3 4 5 modprobe ip_vs modprobe ip_vs_rr modprobe ip_vs_wrr modprobe ip_vs_sh modprobe nf_conntrack_ipv4
查看是否加载成功
3、部署kubernetes Master 1 2 3 4 5 6 7 8 9 10 11 12 13 14 systemctl enable kubelet kubeadm init --apiserver-advertise-address=192.168.2.201 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 apiserver-advertise-address地址对应修改为master ip 执行成功后需要执行如下命令 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 并复制保存最后的join命令 kubeadm join 192.168.2.201:6443 --token uzm4y0.t1x8tuurgtnybsht \ --discovery-token-ca-cert-hash sha256:feaf0da3bf0d6ff6cdaeff51b4f9145a138061831a4350815312b2d21ea5ab07
4、部署网络插件CNI 1 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system等待所有pod都为running状态
5、下载配置golang环境 1 2 wget https://golang.google.cn/dl/go1.15.3.linux-amd64.tar.gz tar -zxvf go1.15.3.linux-amd64.tar.gz -C /usr/local
配置golang环境 vi /etc/profile
1 2 3 4 5 6 7 8 # golang env export GOROOT=/usr/local/go export GOPATH=/data/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin source /etc/profile mkdir -p /data/gopath && cd /data/gopath mkdir -p src pkg bin
6、下载KubeEdge源码 1 git clone https://github.com/kubeedge/kubeedge $GOPATH/src/github.com/kubeedge/kubeedge
#git指令安装: yum install -y git #下载失败可以使用
1 git clone https://gitee.com/mirrors/KubeEdge.git $GOPATH/src/github.com/kubeedge/kubeedge
切换分支
1 cd $GOPATH/src/github.com/kubeedge/kubeedge && git checkout -b release-1.5 remotes/origin/release-1.5
7、编译kubeadm 1 2 cd $GOPATH/src/github.com/kubeedge/kubeedge make all WHAT=keadm
编译后的二进制文件在./_output/local/bin下,单独编译cloudcore与edgecore的方式如下:
1 make all WHAT=cloudcore && make all WHAT=edgecore
8、提前下载安装包kubeedge-v1.5.0-linux-amd64.tar.gz 1 2 mkdir /etc/kubeedge cd /etc/kubeedge && wget https://ghproxy.com/https://github.com/kubeedge/kubeedge/releases/download/v1.5.0/kubeedge-v1.5.0-linux-amd64.tar.gz
arm版下载链接:
1 wget https://ghproxy.com/https://github.com/kubeedge/kubeedge/releases/download/v1.5.0/kubeedge-v1.5.0-linux-arm64.tar.gz
9、创建cloud节点 1 2 3 cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin ./keadm init --advertise-address="192.168.2.201" --advertise-address参数为cloud节点ip
10、添加系统服务 1 2 3 4 5 cp $GOPATH/src/github.com/kubeedge/kubeedge/build/tools/cloudcore.service /etc/systemd/system/cloudcore.service cp $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin/cloudcore /etc/kubeedge/cloudcore systemctl daemon-reload systemctl enable cloudcore systemctl start cloudcore
三、安装edge节点 1、edge端mosquitto安装 添加EPEL软件库 下载mosquitto
1 2 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install mosquitto
2、提前下载安装包kubeedge-v1.5.0-linux-amd64.tar.gz 1 2 mkdir /etc/kubeedge cd /etc/kubeedge && wget https://ghproxy.com/https://github.com/kubeedge/kubeedge/releases/download/v1.5.0/kubeedge-v1.5.0-linux-amd64.tar.gz
3、创建edge节点 在cloud节点执行获取token
1 2 3 cd $GOPATH/src/github.com/kubeedge/kubeedge/_output/local/bin/ ./keadm gettoken 示例:627a75341b826dc5187e5ca16a7ad2a8b5ebf25b2351e2bab4f5a7db2ad2a8ec.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MDkxNTU0NTV9.2fgxRXTlXO6GnecGmpJD2jhIX-QyVZy84IPHQQ1ewFc
将cloud端的keadm拷贝到edge端加入集群
1 scp keadm root@192.168.2.203:/root
执行
1 ./keadm join --cloudcore-ipport=<cloud所在的ip>:10000 --edgenode-name=<edge名字(自己取)> --kubeedge-version=1.5.0 --token=<前面获取的token值>
示例:
1 ./keadm join --cloudcore-ipport=192.168.2.200:10000 --edgenode-name=node1 --kubeedge-version=1.5.0 --token=3a0a30db83552cf96e195027aa84a34602ee41db9913dcde09ad2235d295b49e.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MTMwMTgxMDZ9.UaGcyIeTvzQ7vnJEhhZuimG_u_OXtKkitfZSctH74nU
四、安装后残留问题解决 1、开启使用kubectl logs: 主节点执行
1 2 3 4 5 6 7 cp $GOPATH/src/github.com/kubeedge/kubeedge/build/tools/certgen.sh /etc/kubeedge/ cd /etc/kubeedge/ /etc/kubeedge/certgen.sh stream export CLOUDCOREIPS="192.168.2.201" iptables -t nat -A OUTPUT -p tcp --dport 10350 -j DNAT --to $CLOUDCOREIPS:10003
修改如下文件
1 2 3 4 5 6 7 8 9 10 11 vi /etc/kubeedge/config/cloudcore.yaml cloudStream: enable: true streamPort: 10003 tlsStreamCAFile: /etc/kubeedge/ca/streamCA.crt tlsStreamCertFile: /etc/kubeedge/certs/stream.crt tlsStreamPrivateKeyFile: /etc/kubeedge/certs/stream.key tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crt tlsTunnelCertFile: /etc/kubeedge/certs/server.crt tlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.key tunnelPort: 10004
重启CloudCore服务
边缘节点执行
修改如下文件,server项改为主节点ip
1 2 3 4 5 6 7 8 9 10 11 vi /etc/kubeedge/config/edgecore.yaml edgeStream: enable: true handshakeTimeout: 30 readDeadline: 15 server: 192.168.0.139:10004 tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crt tlsTunnelCertFile: /etc/kubeedge/certs/server.crt tlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.key writeDeadline: 15
vi /etc/kubeedge/edgecore.service加入
1 Environment="CHECK_EDGECORE_ENVIRONMENT=false"
重启edgecore服务