VMware Workstation Pro 16
Ubuntu 22.04.1
Docker 20.10.12
所有Kubernetes相关 1.21.10
四台虚拟机,并且两两之间能ping通。其中一个当作master,另三个是work node。
下表为对应的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.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。当然,想叫啥都行。
3.4.2
sudo gedit /etc/hosts #修改host文件
所有机器都要做,只加第二行就可以,修改并保存。
3.4.3
#暂时关闭,每次开机都要再关
sudo swapoff -a
#建议使用这一种,永久关闭
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab
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时要用到。
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
sudo 加上前面红框复制那一大串
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
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的输入框里,可得到如下界面:
k8s安装完毕,将继续安装kubeedge,欢迎指正与交流。2022.10.27晚
|主节点|192.168.120.99|
|从节点|192.168.120.100|
#分别在master和edge上修改主机名称
hostnamectl set-hostname master
hostnamectl set-hostname edge
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
#先把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传输到虚拟机中
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
#最好挂梯子
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system
kubectl get nodes
#新建目录
mkdir /etc/kubeedge/
#解压
cd /etc/kubeedge/
#权限
chmod 777 /etc/kubeedge/
#解压
tar -zxvf keadm-v1.10.0-linux-amd64.tar.gz
cd /etc/kubeedge/keadm-v1.10.0-linux-amd64/keadm
#将其配置进入环境变量,方便使用
cp keadm /usr/sbin/
cd /etc/kubeedge/keadm-v1.10.3-linux-amd64/keadm
sudo keadm init --advertise-address=192.168.120.99 --kubeedge-version=1.10.0
踩的坑:配置文件问题。
上图是我一直的报错。
我正确的初始化命令是:
sudo keadm init --advertise-address="192.168.120.101" --kubeedge-version=1.10.3 --kube-config=/home/levent/.kube/config
请认真看报错的原因!!!
ps -ef|grep cloudcore
journalctl -u cloudcore.service -xe
#或
vim /var/log/kubeedge/cloudcore.log
netstat -tpnl
systemctl status cloudcore
#启动cloudcore
systemctl start cloudcore
#设置开机自启动
systemctl enable cloudcore.service
#查看cloudcore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled cloudcore.service
sudo keadm gettoken
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
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=
#启动edgecore
systemctl start edgecore
#设置开机自启
systemctl enable edgecore.service
#查看edgecore开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled edgecore
#查看状态
systemctl status edgecore
#查看日志
journalctl -u edgecore.service -b
#主节点查看
kubectl get nodes
kubectl get pod -n kube-system
主节点
(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
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
#边缘节点
curl 127.0.0.1:10550/api/v1/services
#如果返回值是空列表,或者响应时长很久(接近 10s)才拿到返回值,说明你的配置可能有误,请仔细检查。
#云端
kubectl get nodes -o wide
kubectl get pods -o wide -A
#都是ready和running即为成功