部署安装KubeEdge
Kubeedge - 2: 部署安装KubeEdge
KubeEdge 部署环境
- 在云端方面,我们需要:Kubernetes 集群
- Kubernetes:在CPU:2G,运行内存2G以上
- 在边缘,我们需要:
容器运行时,现在我们支持:- 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
- 修改
exec-opts
- 修改
- 添加Docker镜像
"registry-mirrors": ["https://dockerproxy.com" ]
- 添加Docker镜像
一键脚本
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 |
部署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
**: 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....
andcloud-iptables-manager...
后面是我们在启动cloudcore的时候指定了iptablesManager.mode="external"
边缘节点安装
- 边缘节点可能加入过慢:
- 事先拉取docker 镜像,版本之间不互通,这边是kubeEdge 是v1.12.1版本下的的版本对应关系
- example:
docker pull eclipse-mosquitto:1.6.15
andkubeedge/installation-package
- **建议先修改好hostname:hostnamectl set-hostname
**: hostnamectl set-hostname edge-01
- 回到第一步安装Docker
- 安装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
- 安装keadm 命令:
- 获取云端token:在云端节点执行
keadm gettoken
- 获取云端token:在云端节点执行
- join 云端:
keadm join --token=$TOKEN --cloudcore-ipport=$SERVER --kubeedge-version=1.12.1
- TOKEN:云端获取的token
- SERVER:云端节点的公网ip:10000 端口,一般kubeedge使用10000
- join 云端:
- 在加入的时候,可以在云端使用
kubectl get nodes -A -w
,在边缘启动成功之后,需要等待一会云端的k8s 才会显示加入节点,看到节点处于ready模式
- 在加入的时候,可以在云端使用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论