KubeEdge备忘录 (用Virtual-Box重新开始) 2020-10-25 日常 暂无评论 1189 次阅读 [TOC] # KubeEdge备忘录 (用Virtual-Box重新开始) 不知道之前为啥非要用WSL和Hyper-V。kub WSL不能用systemctl命令,Hyper-V没网。这回用正经的虚拟机,Virtual-Box。 系统盘用的是`ubuntu-20.04.1-live-server-amd64.iso`,里面没有图形界面,没有net-tools,不过 ## 一、从装系统开始 在创建完虚拟机、装上磁盘、进入系统之前,在Virtual-Box的设置→网络→网卡,把第二个网卡设置为仅主机(Host-Only)网络。 否则宿主机ping不通虚拟机。 - 以root登录: 1. 设置root密码:`sudo passwd` 2. `sudo vim /etc/ssh/sshd_config`,将`PermitRootLogin prohibit-password`改为`PermitRootLogin yes` 创建`开机.bat`,让虚拟机在后台运行,不显示虚拟机界面: ``` D:\Common\VitrualBox\VBoxManage.exe startvm kubeedge --type headless ``` 创建`登录.bat`,通过ssh登录虚拟机: ``` ssh pro@192.168.56.101 ``` 创建`传文件.bat`,把 文件/文件夹 拖动到这个bat上面,就会发送到虚拟机的 /home/pro 目录里。 ``` @echo off set i=pro@192.168.56.101:/home/pro set j=%1% scp -r %j% %i% pause ``` ## 二、安装依赖 1. Docker ``` curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun ``` 等结束后,运行`docker run hello-world`,第一行是Hello from Docker说明安装成功。 配置Docker加速: ``` sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://lxwzyaa5.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker ``` 2. Golang 先用`传文件.bat`把宿主机网上下载的 go1.14.10.linux-amd64.tar.gz 传到虚拟机上 ``` tar -C /usr/local -xzf go1.14.10.linux-amd64.tar.gz mkdir -p /home/pro/go/{bin,pkg,src} ``` 修改环境变量:`vim /etc/profile`,在末尾添加: ``` export GOROOT=/usr/local/go export GOPATH=/home/pro/go export GOBIN=$GOPATH/bin export PATH=.:$GOBIN:$GOROOT/bin:$PATH ``` 修改完使用`source /etc/profile`生效。 设置国内能访问的代理地址 ``` go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn ``` 3. Go-Tools 先用`传文件.bat`把宿主机[从Github下载的 tools-master 文件夹](https://www.proup.club/usr/uploads/2020/10/3386799872.zip)传到虚拟机上 ``` mkdir -p $GOPATH/src/golang.org/x/ cp -r tools-master $GOPATH/src/golang.org/x/ mv tools-master/ tools/ ``` 4. 安装kubernetes 我的系统版本是Ubuntu20.04,以下两个方法不适用: 【×】这一个方法报错:error: unable to contact snap store ``` sudo apt-get install snap sudo snap install kubectl --classic sudo snap install kubelet --classic sudo snap install kubeadm --classic ``` 【×】这一个方法适合ubuntu-xenial(Ubuntu 16.04),不知道用在Ubuntu20.04上会不会有兼容问题。 ``` sudo apt install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main" sudo apt update sudo apt install -y kubelet kubeadm kubectl ``` 【√】正式的方法是在Github上下载最新的 [kubernetes](https://github.com/kubernetes/kubernetes/releases/tag/v1.18.10),传到虚拟机上 ``` tar -zxvf kubernetes.tar.gz kubernetes/cluster/get-kube-binaries.sh ``` 这个脚本会自根据你的系统架构,下载最新版Kubernetes的 Client 和 Server 的可执行程序。下载完成后手动安装: ``` cp kubernetes/client/bin/kubectl /bin cd kubernetes/server tar -zxvf kubernetes-server-linux-amd64.tar.gz cp -r kubernetes/server/bin/* /bin ``` 5. 安装kind ``` GO111MODULE="on" go get sigs.k8s.io/kind@v0.9.0 ``` 关于下载kind集群的的kind镜像: 【×】手动下载的办法是下不下来的,提示超时错误。 ``` docker pull kindest/node ``` 【×】直接用kind创建集群,就会自动检查(或许会下载)镜像,这一步也下载不来。 ``` kind create cluster ``` 【×】从[Github下载kind/node镜像](https://github.com/kubernetes-sigs/kind/releases) 没速度。用IDM下载,也是没速度。 【×】curl 下载第一个文件有速度,第二个文件没速度 ``` # Download the latest version of KinD curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.9.0/kind-$(uname)-amd64 # Make the binary executable chmod +x ./kind # Move the binary to your executable path sudo mv ./kind /usr/local/bin/ ``` 【√】这个可以。要指定版本号。 ``` docker pull kindest/node:v1.19.1 ``` > 虚拟机空间设小了。。。下载了半个小时,没解压空间了。 > > ``` > failed to register layer: Error processing tar file(exit status 1): write /var/lib/containerd/io.containerd.content.v1.content/blobs/sha256/5f99ddbbe849f2e59f7f30b3ce79ac602534c436c3a2947ec9c00a9b0feaae46: no space left on device > ``` > > 给虚拟机硬盘扩容 > > 具体看[给Ubuntu Server扩容(Virtual Box 虚拟机)](https://www.proup.club/index.php/archives/653/) > > 简单说起来6行代码: > > - ``` > D:\Common\VitrualBox\VBoxManage.exe modifymedium --resize 20480 "D:\VM\kubeedge\kubeedge.vdi" > ``` > > - `fdisk /dev/sda` ,`n`,`4`,`回车` ,`回车` ,`w` > > - ``` > pvcreate /dev/sda4 > ``` > > - ``` > vgextend ubuntu-vg /dev/sda4 > ``` > > - ``` > lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv > ``` > > - ``` > resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv > ``` > > 6. 安装KubeEdge 在[Github Kubeedge](https://github.com/kubeedge/kubeedge)下载好源码,解压,用`传文件.bat`传到虚拟机上,然后挪到$GOPATH/src/github.com/kubeedge/kubeedge里。 ``` mkdir -p $GOPATH/src/github.com/kubeedge/kubeedge mv /home/pro/kubeedge $GOPATH/src/github.com/kubeedge/kubeedge ``` ## 三、简单看一下环境 1. 创建k8s集群 ``` root@kubeedge:~# kind create cluster Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:v1.19.1) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 Set kubectl context to "kind-kind" You can now use your cluster with: kubectl cluster-info --context kind-kind Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂 root@kubeedge:~# kubectl cluster-info --context kind-kind Kubernetes master is running at https://127.0.0.1:38393 KubeDNS is running at https://127.0.0.1:38393/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. ``` 2. 看k8s节点 ``` root@kubeedge:~# kubectl get nodes NAME STATUS ROLES AGE VERSION kind-control-plane Ready master 14m v1.19.1 ``` ## 四、复制虚拟机 环境配好了。下一步是把配好的环境复制一份,作为云;原来的作为边缘。 1. VirtualBox软件 → 管理 → 导出虚拟电脑 → 选择kubeedge → 下一步 2. 选择要导出的文件地址,MAC地址设定为:“清除所有网卡的MAC地址” → 下一步 等kubeedge.ova创建好就行了。然后导入这个配置: 1. VirtualBox软件 → 管理 → 导入虚拟电脑 → 选择kubeedge.ova → 下一步 2. 名称改成Cloud → MAC地址设定:“为所有网卡重新生成MAC地址” → 导入 开机以后发现个问题:两台虚拟机的IP地址都是192.168.56.101。是因为虽然新虚拟机(Cloud)虚拟网卡的MAC地址变了,但系统中记录的MAC地址没变。 1. ``` cd /etc/netplan/ ``` 2. 用`ls` 看一下这个文件夹里的文件叫 00-installer-config.yaml 3. 宿主机用`ipconfig` 看到 WLAN 网卡的网关是172.2.2.1,虚拟机的网关也写这个。 4. `vim 00-installer-config.yaml` ,内容改成以下,然后保存退出。 ``` # This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: true enp0s8: addresses: [192.168.56.102/24] dhcp4: no optional: true gateway4: 172.2.2.1 nameservers: addresses: [172.2.2.1,114.114.114.114] version: 2 ``` 5. ``` netplan apply ``` 6. ``` dhclient -r dhclient ``` 7. 然后再`vim 00-installer-config.yaml` ,内容改回原来的,然后保存退出。 ``` # This is the network config written by 'subiquity' network: ethernets: enp0s3: dhcp4: true enp0s8: dhcp4: true version: 2 ``` 8. 然后再运行以下三个命令: ``` netplan apply dhclient -r dhclient ``` 这样Cloud服务器的IP地址就改好了。 Edge的地址:192.168.56.101 Cloud的地址:192.168.56.102 但是重启以后,Cloud的地址又变回192.168.56.101了,和Edge地址重复。 **新方法**:[VirtualBox中Ubuntu桥接DHCP始终取到相同IP地址问题](https://www.cnblogs.com/jyginger/p/12297548.html) 1. ``` chmod 755 /etc/machine-id ``` 2. ``` vim /etc/machine-id ``` 删掉一些字符,保存退出。 3. 重启 这就成了。重启以后,Cloud的IP就是192.168.56.103了。 为了之后方便,在Cloud里,`vim /etc/hostname` 把内容改成cloud,重启以后,命令行就能显示`root@cloud:~#`了。 这下可以改一下开机和ssh的脚本了: 开机.bat : ``` D:\Common\VitrualBox\VBoxManage.exe startvm kubeedge --type headless D:\Common\VitrualBox\VBoxManage.exe startvm Cloud --type headless pause ``` 登录边缘: ``` ssh root@192.168.56.101 pause ``` 登录云: ``` ssh root@192.168.56.103 pause ``` 标签: none 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭