安装K3s集群
K3S是一种轻量级的Kubernetes发行版,安装和运行只需要一个二进制文件。相比之下,K8S需要更多的步骤和资源来安装和部署,例如设置etcd集群、安装控制平面组件、加入工作节点等。这使得K3S更适合在低资源的设备上运行,如树莓派或边缘计算节点。另一方面,K8S适合在高性能的服务器或云环境中运行。
K3S和K8S都是Kubernetes的容器编排工具,它们都提供了一些核心功能,如调度、服务发现、负载均衡、网络策略等。然而,K3S相对于K8S来说,删除了一些不常用或不必要的功能,如云控制器管理器、存储类、动态卷供应等。同时,K3S还内置了一些额外的组件,如Traefik、Flannel、CoreDNS等,以简化配置和管理。而K8S则提供了Kubernetes的完整功能集,并且具有丰富的扩展机制,如自定义资源定义(CRD)、操作符(Operator)、服务网格(Service Mesh)等。这些扩展机制可以通过插件或第三方工具来实现更多的功能和场景。
K3S具有轻量化和简化的设计,能够快速启动和运行,同时占用内存和磁盘空间也较少。K3S采用sqlite作为默认的数据存储后端,以替代etcd,从而降低了复杂度和开销;
K3S与Kubernetes的兼容性很高,可以与许多兼容Kubernetes的应用和工具一起使用,如Helm、Istio、Prometheus等。但是,K3S也有其限制,它删除了一些功能或组件,因此可能无法支持一些特定的应用或场景,例如使用存储类或动态卷供应的应用。与之相比,K8S是一个完全兼容Kubernetes的容器编排系统,它拥有庞大的生态系统和社区支持,可以提供各种各样的解决方案和最佳实践。
环境准备
前置环境必须有三台虚拟服务器,彼此网络互通; 参考文章: kubernates 集群实战-概念
初始化服务器( 在每台云服务器上执行)
#检查是否 安装开放源 wget命令工具;
# 永久关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 永久关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 永久关闭swap
swapoff -a && sysctl -w vm.swappiness=0
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 使用 hostname 命令查看是否设置成功
# 在master添加hosts (注意只在master 执行)
cat >> /etc/hosts << EOF
10.0.4.16 k3s-master
10.0.4.15 k3s-node1
10.0.4.11 k3s-node2
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 生效
sysctl --system
# 时间同步 以下是centos 7 的同步方式
yum install ntpdate -y
ntpdate time.windows.com
# 时间同步 在CentOS8.0中默认不再支持ntp软件包,使用的是chrony。
systemctl stop chronyd #停止chronyd服务
systemctl start chronyd #开始chronyd服务
systemctl restart chronyd #重启chronyd服务
systemctl status chronyd #查看chronyd服务状态
systemctl enable chronyd #开机启动chronyd服务
systemctl disable chronyd #禁止开机启动chronyd服务
chronyc sources –v #查看时间同步源,查看时间同步进度
#结果解释: *说明时间同步完成,如果为?说明不成功,检查防火墙再看看chronyd有没有重启。
chronyc sourcestats -v #查看时间同步源状态:
timedatectl set-local-rtc 0 #硬件时间默认为UTC:
timedatectl set-ntp yes #启用NTP时间同步:
chronyc tracking #校准时间服务器:
网上设置方法:https://www.ecs086.com/news?id=210
查看命令 timedatectl
安装 docker
curl https://releases.rancher.com/install-docker/19.03.sh | sh
$ systemctl enable docker && systemctl start docker
$ docker --version
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
$ systemctl restart docker
主节点安装
curl -sfL https://get.k3s.io | sh -s - server --docker
配置
vim /etc/systemd/system/multi-user.target.wants/k3s.service
在这里我们需要修改ExecStart的值,将其修改为:
/usr/local/bin/k3s server --docker --no-deploy traefik
work 节点
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://10.0.4.16:6443 K3S_TOKEN=K1017dfeeb18a903c5e70d576c5c7e556c0bc83dfb48fddb299284dc45aaa248bd4::server:25771cc1cd17849ac3c071dcbd62bfba INSTALL_K3S_EXEC="--node-ip 10.0.4.15" sh -
解释:token 获取在master 执行
cat /var/lib/rancher/k3s/server/node-token
node-ip 为 当前work 节点ip
K3S_URL=https://10.0.4.16:6443 : 表示 master 节点ip
验证环境
在 master 节点上执行
kubectl get node