Ubuntu18.04的k8s搭建笔记 Docker+Kubernetes+KubeEdge

1. Docker安装

1.1 安装docker
参考1

1.2 安装cri-dockerd
参考2
cri-dockerd-0.3.4-3.el7.x86-64.rpm快速下载地址
下载解压后

cd cri-dockerd
sudo alien -i cri-dockerd-0.3.4-3.el7.x86_64.rpm

设置自启动

sudo systemctl enable cri-docker.socket cri-docker

启动

sudo systemctl start cri-docker.socket cri-docker 

查看cri-dockerd状态

sudo systemctl status cri-docker.socket

2. cloud节点配置Kubernetes

参考https://www.dandelioncloud.cn/article/details/1588409652935380994、https://blog.csdn.net/qq_53014769/article/details/127809159、https://blog.csdn.net/zt15732625878/article/details/124366267

  • 关闭swap
swapoff -a
# free命令,swap行全为0说明没有swap分区
free -m
# 修改配置文件,把swap相关的注释掉
sudo vi /etc/fstab
# 把下面第一行中原来的1改成0,然后注掉第二行(前面加'#')
UUID=d23c2ed6-0135-42b6-8713-45712158e67d /               ext4    errors=remount-ro 0       0
# /swapfile                                 none            swap    sw              0       0
  • 关闭防火墙
sudo ufw disable
sudo ufw status

2.1 ip配置

  • 将虚拟机网络适配器设为NAT模式

  • 在虚拟网络编辑器的NAT设置中查看VMnet8网关地址,IP应设为同一网段下的地址
    编辑-虚拟网络编辑器-NAT设置

  • 也可以打开物理机cmd,输入ipconfig查看其以太网适配器VMnet8的IP地址

  • 安装net-tools

apt install net-tools
  • 看一下自己网卡的名称
ip a
ifconfig #两个都可以
  • Ubuntu18的网络配置写在/etc/netplan/01-network-manager-all.yaml或者类似名称的yaml文件里,每个服务器均可能不同所以先ls /etc/netplan看一下文件名称
  • 源文件备份
cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
  • 将配置写入文件
sudo vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  ethernets:
   ens33:      #改成自己的网卡名称
      dhcp4: no  #关闭动态分配
      addresses: [192.168.148.11/24]   ##这里修改成自己所需的IP地址
      gateway4: 192.168.148.2   ##根据虚拟网络编辑器设置网关
      nameservers:
              addresses: [114.114.114.114,8.8.8.8]#DNS服务器地址
      #optional:true
  version: 2
  • 应用这些修改
netplan apply
  • 修改hostname和host
vim /etc/hostname
cloud-master
vim /etc/hosts
192.168.148.11 cloud-master

2.2 kubernetes安装配置

  • 添加信任APT证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
  • 配置k8s源仓库
 echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >>/etc/apt/sources.list.d/kubernetes.list
  • 更新源并安装kubelet、kubeadm、kubectl
sudo apt-get update && sudo apt-get install -y kubeadm kubectl kubelet
sudo apt-get install kubeadm=1.22.2-00 kubectl=1.22.2-00 kubelet=1.22.2-00 

在这里插入图片描述

  • 设置开机启并启动kubelet,一定要关闭swap否则不会成功
systemctl enable kubelet && systemctl start kubelet
  • 配置k8s环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=192.168.148.11 --node-name=cloud-master --kubernetes-version=v1.22.2 --cri-socket unix:///var/run/cri-dockerd.sock --ignore-preflight-errors=all

kubeadm init 命令中的参数解释:
--node-name=k8s-master: 指定k8s集群中Master节点的名称,和上面/etc/hosts配置中名称一致。
--image-repository=registry.aliyuncs.com/google_containers: 指定容器镜像的仓库地址。
--cri-socket=unix:///var/run/cri-dockerd.sock: 指定容器运行时的 CRI(Container Runtime Interface)套接字路径(Docker 的配置文件路径通常是 /etc/docker/daemon.json,CRI 套接字路径通常不会在 Docker 的配置文件中直接指定。Kubernetes一般会使用默认的 Docker 套接字路径 /var/run/docker.sock)。
--apiserver-advertise-address: 指定Kubernetes API Server的地址,即Master节点的IP地址。和上面/etc/hosts配置中的IP一致
--pod-network-cidr=10.244.0.0/16: 指定 Pod 网络的 CIDR(Classless Inter-Domain Routing)地址范围。默认使用这个即可。
--service-cidr=10.96.0.0/12: 指定服务网络的 CIDR 地址范围(需要选择一个未被使用的 CIDR 地址范围),一般默认使用这个即可。
--kubernetes-version: 指定Kubenetes版本,如果不指定该参数,会从google网站下载最新的版本信息。

#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

成功的结果

  • 查看集群状态

此时kubectl get nodes发现节点状态notready,这是因为还没安装网络插件
节点状态

#下载flannel插件的yaml文件
cd ~ && mkdir flannel && cd flannel
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#启动
kubectl apply -f ~/flannel/kube-flannel.yml

flannel安装启动后节点状态变为ready
2.3 KubeEdge安装配置
参考1参考2参考3

  1. 云端
  • Golang环境搭建
wget https://studygolang.com/dl/golang/go1.12.14.linux-amd64.tar.gz
tar -zxvf go1.14.4.linux-amd64.tar.gz -C /usr/local

添加环境变量vim ~/.bashrc,在~/.bashrc文件末尾添加:

export GOROOT=/usr/local/go
export GOPATH=/home/zora/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存后记得执行 source ~/.bashrc

  • 安装keadm
在这里插入代码片
  • 下载源代码并编译
mkdir -p /home/zora/gopath && cd /home/zora/gopath
mkdir -p src pkg bin
git clone https://gitee.com/ly10208/kubeedge.git $GOPATH/src/github.com/kubeedge/kubeedge
cd $GOPATH/src/github.com/kubeedge/kubeedge
make all WHAT=keadm
  • 部署cloudcore
#通过Keadm安装CloudCore

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
#查看运行情况
systemctl status cloudcore 
  • KubeEdge installation
    在这里插入图片描述
keadm init --advertise-address=192.168.148.11

报错timed out waiting for the condition:删除master节点污点参考1参考2

kubectl get all -nkubeedge #检查运行状态及获取cloudcore的pod名称
kubectl describe pod cloudcore-6fffcc974f-q85sn -nkubeedge #查看pod描述信息,最后一行是存在的问题
kubectl describe nodes cloud-master | grep Taints #查看污点信息
kubectl taint nodes --all node-role.kubernetes.io/master- #删除master节点污点

在这里插入图片描述

  • 检查节点状态,都是ready,cloudcore有两行就对啦
ps -ef | grep cloudcore
kubectl get all -n kubeedge
kubectl get deployment -n kubeedge

在这里插入图片描述

  • 得到token边缘端会用到
keadm gettoken
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值