环境

rocky8.8 + docker

1. k8s + calico 安装

官网:在 Linux 上以 All-in-One 模式安装 KubeSphere

前置工作

安装socat,conntrack,关闭防火墙,关闭swap,关闭selinux。(云端、edge端均需要)
安装docker参考之前使用 KubeKey 从0搭建 k8s+ kubeovn 三节点标准集群 - Lixx Blog - 李晓旭的博客配置镜像加速

# 安装 socat,conntrack
dnf install socat
dnf install conntrack

# 关闭防火墙
systemctl stop firewalld.service 
systemctl disable firewalld.service
systemctl status firewalld.service 

# 关闭swap
# 查看当前状态
free -m
# 临时关闭swap
swapoff -a
# 临时关闭后临时开启
swapon -a
# 永久关闭
vim /etc/fstab 把加载swap分区的那行记录注释掉即可
reboot

# 关闭selinux
# 查看状态 三个方法都可以
1. cat /etc/selinux/config  
SELinux共有3个状态enforcing (执行中)、permissive (不执行但产生警告)、disabled(关闭)
2. getenforce
3. /usr/sbin/sestatus -v
# 临时关闭
#setenforce 0设置为permissive模式;setenforce 1 设置为enforcing模式; setenforce 0
setenforce 0
# 永久关闭
1. 手动 vim /etc/selinux/config  enforcing 改为 disabled
2. sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config

安装k8s集群

export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
chmod +x kk
#单节点安装
./kk create cluster

2. openyurt安装

主节点

官网参考:在Kubernetes上安装 | OpenYurt
GitHub - openyurtio/openyurt-helm: OpenYurt components helm charts网络不好可以收到下载helm文件手动安装

# docker为容器运行时(CRI)
iptables -w -P FORWARD ACCEPT
sed -i 's#^After=network-online.target firewalld.service$#After=network-online.target firewalld.service containerd.service#g' \
/lib/systemd/system/docker.service

# 1 添加仓库 ,网络不好可以
helm repo add openyurt https://openyurtio.github.io/openyurt-helm
helm search repo openyurt
# 2 安装 yurt-manager
helm upgrade --install yurt-manager -n kube-system openyurt/yurt-manager
kubectl get pod -n kube-system | grep yurt-manager
kubectl get svc -n kube-system | grep yurt-manager
# 3 安装 yurthub 相关配置,以 Kubernetes 服务器地址`https://1.2.3.4:6443`为例,`kubectl config view`来查找
# 注意:建议环境统一用域名(hostname),当云端为公网ip时,edge端需配置hosts文件。本地可以用ip,但尽量不使用。
helm upgrade --install yurt-hub -n kube-system --set kubernetesServerAddr=https://1.2.3.4:6443 openyurt/yurthub
kubectl get yss -n kube-system
# 4 安装跨网络域通信组件 Raven,遇到镜像拉不下来,手动edit daemonset.apps/raven-agent-ds, 版本修改为main——image: openyurt/raven-agent:main
helm upgrade --install raven-agent -n kube-system openyurt/raven-agent
kubectl get pod -n kube-system | grep raven-agent

# 注,如果网络不好,手动去openyurt helm github官网下载对应文件,然后解压进入对应目录。命令对应如下,去除openyurt/yurthub。
helm upgrade --install yurt-hub -n kube-system --set kubernetesServerAddr=https://192.168.137.215:6443 openyurt/yurthub
helm upgrade --install yurt-hub -n kube-system --set kubernetesServerAddr=https://192.168.137.215:6443  .  # 本地执行

edge节点

当云端节点为公网地址时,edge端必须配置hosts文件,避免yurthub启动失败。

# 添加 "exec-opts": ["native.cgroupdriver=systemd"]
[root@rocky8-edge ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://ymjcp0nc.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

节点接入:节点接入 | OpenYurt

# yurtadm join 执行以下命令加入边缘节点,ip为master节点ip
_output/local/bin/linux/amd64/yurtadm join 192.168.137.215:6443 --token=5w5cf2.9p6mqni57x7132vt --node-type=edge --discovery-token-unsafe-skip-ca-verification --v=5
# token获取,在主节点执行,查看是否有可用token,没有进行创建
kubeadm token list
kubeadm token create

手动编译yurtadm:本地构建和测试 | OpenYurt,或者下载官方二进制文件:Releases · openyurtio/openyurt · GitHub

# 1. go环境安装
dnf install go
# 2.go 镜像源配置,启用 Go Modules 功能 
go env -w GO111MODULE=on
# 配置 GOPROXY 环境变量,七牛 CDN
go env -w  GOPROXY=https://goproxy.cn,direct
go env | grep GOPROXY
GOPROXY="https://goproxy.cn"
# 2. 下载代码https://github.com/openyurtio/openyurt, 注意要用linux环境下载,win下载编译会报错
# 该命令会根据本机的操作系统和架构编译yurtadm,并把编译出来的可执行二进制文件放在_output目录下
make build WHAT=cmd/yurtadm

参考: