最全最新:Unbunu本地部署K8S集群,安装kubedge

1. 版本:

VMware Workstation Pro 16
Ubuntu 22.04.1
Docker 20.10.12
所有Kubernetes相关 1.21.10

2. 前期准备:

四台虚拟机,并且两两之间能ping通。其中一个当作master,另三个是work node。

最全最新:Unbunu本地部署K8S集群,安装kubedge_第1张图片

下表为对应的IP

名称 IP
master 192.168.120.101/24
node1 192.168.120.102/24
node2 192.168.120.103/24
node3 192.168.120.104/24

3. 开干吧!对master和work node都要进行的操作:

3.1 对Docker(k8s的一部分)

sudo apt-get install docker.io #安装docker
docker --version #看看docker版本
sudo usermod -aG docker $USER
#启用docker
sudo systemctl start docker
sudo systemctl enable docker

3.2 curl

su root #进入根目录
#如果显示Authentication failure,就用sudo passwd root重置密码
sudo apt-get update
sudo apt install -y curl
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add

3.3 添加安装源并安装

接着3.2在根目录上输入以下内容

sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"

指定安装版本:

sudo apt-get install kubeadm=1.21.10-00 kubelet=1.21.10-00 kubectl=1.21.10-00 -y

3.4 设置主机名

3.4.1

sudo hostnamectl set-hostname 名字#(用master,node1,node2替换)

比如我在弄第三个work node,我就输入sudo hostnamectl set-hostname node3,下图是输入命令后的改变。如果你在弄master,就输入sudo hostnamectl set-hostname master。当然,想叫啥都行。

最全最新:Unbunu本地部署K8S集群,安装kubedge_第2张图片

3.4.2

sudo gedit /etc/hosts #修改host文件

所有机器都要做,只加第二行就可以,修改并保存。

最全最新:Unbunu本地部署K8S集群,安装kubedge_第3张图片

3.4.3

#暂时关闭,每次开机都要再关
sudo swapoff -a
#建议使用这一种,永久关闭
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab

4. 对master:

4.1 初始化master

sudo kubeadm init \
--apiserver-advertise-address=192.168.120.101 \
--control-plane-endpoint=master \ #与3.4.2的图对应
--image-repository  registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.21.10 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
#版本是1.20.10,master的固定IP是192.168.120.101/24,见开头。

下图就是成功了,记得把这段话复制下来,node加入master时要用到。

最全最新:Unbunu本地部署K8S集群,安装kubedge_第4张图片

4.2 网络插件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml

5. 对每个node:

sudo 加上前面红框复制那一大串

下图即为成功
最全最新:Unbunu本地部署K8S集群,安装kubedge_第5张图片

6. 验证

 kubectl get nodes

下图即为成功,必须都是ready。

在这里插入图片描述

#一些情况下,kubectl命令可能报8080.。。的错误,可以先输入
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
#Reference: https://huaweicloud.csdn.net/63311273d3efff3090b513c4.html?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Eactivity-2-119736586-blog-124730955.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Eactivity-2-119736586-blog-124730955.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=3
#或者
sudo chmod a+r /etc/kubernetes/admin.conf
sudo kubectl get pods -A

最全最新:Unbunu本地部署K8S集群,安装kubedge_第6张图片

7. DashBoard可视化

1

sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

2

sudo kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
# 将type: ClusterIP 改为 type: NodePort
#键盘insert, esc, :wq

3

sudo kubectl get svc -A |grep kubernetes-dashboard

在这里插入图片描述

即可登录任一node的ip : 输出的端口号,我的是https://192.16.120.102:31291

4

创建一个.yaml文件,并kubectl apply,以下为文件的内容:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard

5

#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"

将输出的内容复制到token的输入框里,可得到如下界面:

最全最新:Unbunu本地部署K8S集群,安装kubedge_第7张图片

8. 结语

k8s安装完毕,将继续安装kubeedge,欢迎指正与交流。2022.10.27晚

9、从0开始安装kubeedge

10、主节点和从节点都干的事

1. 我的ip以及更改histname

|主节点|192.168.120.99|
|从节点|192.168.120.100|
#分别在master和edge上修改主机名称
hostnamectl set-hostname master
hostnamectl set-hostname edge

2. Docker

sudo apt-get -y update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

#安装GPG证书,如果不安装则没有权限从软件源下载Docker
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 写入软件源信息(通过这个软件源下载Docker):
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

#安装docker
apt-get install docker.io
docker --version
sudo gedit /etc/docker/daemon.json

#主节点添加:
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://quay-mirror.qiniu.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"]    
}
#从节点添加:
#因为kubelet cgroup driver指定cgroupfs,不然报错。
{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://quay-mirror.qiniu.com"
  ],
  "exec-opts": ["native.cgroupdriver=cgroupfs"]  
}
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl restart edgecore
#查看修改后的docker Cgroup的参数
docker info | grep Cgroup

3. 下载kubeedge相关

#先把keadm-v1.10.0-linux-amd64.tar.gz和kubeedge-v1.10.0-linux-amd64.tar.gz下载到宿主机
#我的版本是1.10.0
https://github.com/kubeedge/kubeedge/releases
#再用xftp传输到虚拟机中

11、主节点

1. kubelet, kubeadm, kubectl

apt-get update && apt-get install -y apt-transport-https
#下载镜像源密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
#添加 k8s 镜像源
cat </etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet=1.21.5-00 kubeadm=1.21.5-00 kubectl=1.21.5-00
#初始化
#只需要改apiserver-advertise-address,填master的ip地址
kubeadm init \
  --apiserver-advertise-address=192.168.120.99 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.21.5 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16
#系统让干,干就完事了
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#系统让干,干就完事了
export KUBECONFIG=/etc/kubernetes/admin.conf

2. 网络插件flannel

#最好挂梯子
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3. 检查k8s是否成功

kubectl get pods -n kube-system
kubectl get nodes

4. 开始kubeedge

  1. 将之前下载好的文件传输到此文件夹中,并解压。
#新建目录
mkdir /etc/kubeedge/
#解压
cd /etc/kubeedge/

#权限
chmod 777 /etc/kubeedge/

#解压
tar -zxvf keadm-v1.10.0-linux-amd64.tar.gz
  1. 添加环境变量
cd /etc/kubeedge/keadm-v1.10.0-linux-amd64/keadm

#将其配置进入环境变量,方便使用
cp keadm /usr/sbin/
  1. 初始化
cd /etc/kubeedge/keadm-v1.10.3-linux-amd64/keadm

sudo keadm init --advertise-address=192.168.120.99 --kubeedge-version=1.10.0

踩的坑:配置文件问题。
最全最新:Unbunu本地部署K8S集群,安装kubedge_第8张图片
上图是我一直的报错。
我正确的初始化命令是:

sudo keadm init --advertise-address="192.168.120.101" --kubeedge-version=1.10.3 --kube-config=/home/levent/.kube/config

请认真看报错的原因!!!

正确运行的截图:
最全最新:Unbunu本地部署K8S集群,安装kubedge_第9张图片

  1. 检查cloudcore是否启动
ps -ef|grep cloudcore
  1. 查看日志
journalctl -u cloudcore.service -xe
#或
vim /var/log/kubeedge/cloudcore.log
  1. 查看端口(要有这两个端口)
netstat -tpnl

最全最新:Unbunu本地部署K8S集群,安装kubedge_第10张图片

  1. 查看启动状态
systemctl status cloudcore

最全最新:Unbunu本地部署K8S集群,安装kubedge_第11张图片

  1. 设置开机启动
#启动cloudcore
systemctl start cloudcore

#设置开机自启动
systemctl enable cloudcore.service

#查看cloudcore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled cloudcore.service
  1. get token为接下来边缘节点join做准备
sudo keadm gettoken

12、只边缘节点干的事

1.

sudo mkdir /etc/kubeedge/
将kubeedge-v1.10.0-linux-amd64.tar.gz和keadm-v1.10.0-linux-amd64.tar.gz 放到此目录下。
#解压
sudo tar -zxvf keadm-v1.10.0-linux-amd64.tar.gz

2. 加入

cd keadm-v1.10.0-linux-amd64/keadm/

#join token是上面生成的token
#cloudcoreipport的端口号不用改

sudo keadm join --cloudcore-ipport=192.168.120.99:10000 --edgenode-name=node --kubeedge-version=1.10.0 --token=

3. 检查

#启动edgecore      
systemctl start edgecore    

#设置开机自启
systemctl enable edgecore.service  

#查看edgecore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled edgecore

#查看状态     
systemctl status edgecore 

#查看日志
journalctl -u edgecore.service -b

最全最新:Unbunu本地部署K8S集群,安装kubedge_第12张图片

4. 主节点查看

#主节点查看
kubectl get nodes
kubectl get pod -n kube-system

最全最新:Unbunu本地部署K8S集群,安装kubedge_第13张图片

12. 安装EdgeMesh

  1. 主节点

    (1). 安装helm

#方法一
https://link.csdn.net/?target=https%3A%2F%2Fget.helm.sh%2Fhelm-v3.7.0-linux-amd64.tar.gz
#方法二
apt-get
#检查
helm version

(2). 使用helm安装kubemesh

helm install edgemesh --namespace kubeedge \
--set agent.psk=bhEgGRR/6kb/0nVhsLLCDaqhvYLReGfnjfcrEyZa1W4= \
--set agent.relayNodes[0].nodeName=master,agent.relayNodes[0].advertiseAddress="{192.168.120.101}" \
--set agent.relayNodes[1].nodeName=node1,agent.relayNodes[1].advertiseAddress="{192.168.120.105}" https://raw.githubusercontent.com/kubeedge/edgemesh/main/build/helm/edgemesh.tgz
# Get PSK cipher: openssl rand -base64 32 

(3). 修改配置

sudo gedit /etc/kubeedge/config/cloudcore.yaml

modules:
  ..
  cloudStream:
    enable: true
    streamPort: 10003
  ..
  dynamicController:
    enable: true
..
systemctl restart cloudcore
  1. 边缘节点
    (1). 修改配置文件
sudo gedit /etc/kubeedge/config/edgecore.yaml
modules:
  ..
  edged:
    clusterDNS: 169.254.96.16
    clusterDomain: cluster.local
  ..
  edgeStream:
  enable: true
  handshakeTimeout: 30
  ..
  edgeMesh:
    enable: false
  ..
  metaManager:
    metaServer:
      enable: true
..
# edgeMesh那行没有可以手动添加
# clusterDNS 设置的值 '169.254.96.16' 来自于 commonConfig 中 bridgeDeviceIP 的默认值,正常情况下无需修改,非得修改请保持两者一致。
sudo systemctl restart edgecore
  1. 检验是否安装成功
#边缘节点
curl 127.0.0.1:10550/api/v1/services
#如果返回值是空列表,或者响应时长很久(接近 10s)才拿到返回值,说明你的配置可能有误,请仔细检查。

最全最新:Unbunu本地部署K8S集群,安装kubedge_第14张图片

#云端
kubectl get nodes -o wide
kubectl get pods -o wide -A
#都是ready和running即为成功

最全最新:Unbunu本地部署K8S集群,安装kubedge_第15张图片

你可能感兴趣的:(kubernetes,ubuntu,1024程序员节)