K3s部署及研究

K3s部署及研究

K3s和K8s详解

什么是 Kubernetes (K8s)?

Kubernetes(简称 K8s)是一个开源的容器编排平台。它用于管理容器化应用的自动部署、扩展和操作。Kubernetes 能帮助开发者和运维人员简化应用的管理,保证应用高可用、易扩展和稳定运行。

通俗来说,可以把 Kubernetes 想象成一个工厂的自动化生产线:

  • 容器 就像工厂里的产品(比如一个应用或服务)。
  • Kubernetes 就是管理和协调这些产品生产的自动化系统。它负责确保每个产品都按照标准生产,及时处理故障,按需扩展生产量,以及将产品送到合适的位置。

什么是 K3s?

K3s 是一种轻量级的 Kubernetes 发行版,由 Rancher Labs 开发。它针对资源有限的环境进行了优化,比如物联网设备、边缘计算设备、小型服务器等。

通俗来说,可以把 K3s 想象成一个简化版的 Kubernetes:

  • K3s 就是缩减和优化后的 Kubernetes,专门用于小型或资源受限的环境。
  • 更轻量、更简单:K3s 通过去除不必要的功能和组件,使得安装和运行更加轻便和高效。
  • 一键安装:K3s 的安装过程非常简单,甚至可以在单个命令中完成。

对比 K8s 和 K3s

  1. 安装和配置

    • K8s:通常需要较多的配置和设置,适用于企业级大规模应用。
    • K3s:一键安装,配置简单,非常适合初学者和小规模应用。
  2. 资源消耗

    • K8s:较高的资源消耗,适用于拥有充足资源的大型数据中心。
    • K3s:资源消耗少,适用于资源受限的环境,如物联网设备、边缘计算节点等。
  3. 功能

    • K8s:功能齐全,支持各种复杂的场景和需求。
    • K3s:保留了核心功能,去除了某些高级功能,以简化和优化性能。
  4. 应用场景

    • K8s:适用于需要管理大量容器化应用的大型企业和复杂场景。
    • K3s:适用于中小型项目、开发测试环境、边缘计算、物联网等。

举个例子

  • 如果你是一家大型企业,需要管理数百个应用,保证它们的高可用性和可扩展性,那么 Kubernetes(K8s)是你的最佳选择。
  • 如果你是一名开发者,想要在家里的树莓派上运行一些简单的容器化应用,或者在资源有限的设备上进行开发测试,那么 K3s 会更加适合你。

总之,Kubernetes 是一个功能强大的容器编排工具,而 K3s 则是其简化和优化的版本,适用于特定的资源受限场景。

1.准备两台CentOS7主机


一台为172.21.12.176,一台为172.21.12.135

2.准备安装环境

2.1安装系统环境:操作系统初始化配置(所有节点)

bash 复制代码
# 2).关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 3).关闭SeLinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 4)设置主机名
hostnamectl set-hostname <hostname>

# 5)修改hosts文件
cat >> /etc/hosts << EOF
172.21.12.176 k3s-node1
172.21.12.135 k3s-node2
EOF

# 6)修改resolv.conf,解决域名解析失败的问题
cat >> /etc/resolv.conf << EOF
nameserver 8.8.8.8
nameserver 114.114.114.114
EOF

# 7).配置yum源
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 8)同步时间
yum install ntpdate -y
ntpdate time.windows.com

注意:

1)如果安装yum源时报错:

已加载插件:fastestmirror,langpacksLoading mirror speeds from cached hostfileCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=7\&arch=x86_64\&repo=os\&infra=stock error was14:curl#6 -"Could not resolve host: mirrorlist.centos.org;未知的错误"

原因:yum镜像源的问题,更换镜像源即可,如若这步不成功,则卸载yum重装即可。

如果还是不行则是镜像源的问题,修改yum的镜像源地址:

1、备份系统自带yum源配置文件
bash 复制代码
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、进入 /etc/yum.repos.d
bash 复制代码
cd /etc/yum.repos.d
3、删除文件
bash 复制代码
rm -f *.repo
4、设置
bash 复制代码
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
5、缓存
bash 复制代码
yum clean all
yum makecache

如下图成功。

如果运行卸载yum install -y yum-utils指令不成功则重新安装。

  1. 查看已安装的yum
bash 复制代码
rpm -qa|grep yum
  1. 删除已有的yum
bash 复制代码
rpm -aq|grep yum|xargs rpm -e --nodeps
  1. 下载以下安装包
bash 复制代码
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-2.7.5-89.el7.x86_64.rpm
bash 复制代码
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
bash 复制代码
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
bash 复制代码
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
bash 复制代码
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm

如果找不到以上版本,可以到https://mirrors.aliyun.com/centos/7/os/x86_64/Packages下载最新版本

下载完成之后安装

bash 复制代码
rpm -ivh python-2.7.5-89.el7.x86_64.rpm python-iniparse-0.4-9.el7.noarch.rpm --nodeps --force
bash 复制代码
rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm --nodeps --force
bash 复制代码
rpm -ivh yum-3.4.3-168.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm --nodeps --force

完成,重新使用yum命令即可。

2.安装docker

1)安装必要的依赖项

bash 复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

2)添加Docker稳定版仓库

bash 复制代码
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)安装Docker

bash 复制代码
sudo yum install -y docker-ce docker-ce-cli containerd.io

4)启动Docker服务

bash 复制代码
sudo systemctl start docker

5)设置Docker开机启动

bash 复制代码
sudo systemctl enable docker

Docker配置国内阿里镜像源,第一个https://jp8hrgkf.mirror.aliyuncs.com是我阿里账号下的个人镜像,可以自行百度怎么替换成自己的。

bash 复制代码
vi /etc/docker/daemon.json
json 复制代码
{
 "registry-mirrors": [
  "https://jp8hrgkf.mirror.aliyuncs.com",
  "https://dockerhub.azk8s.cn",
  "https://reg-mirror.qiniu.com"
 ],
 "insecure-registries": [],
 "exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker

bash 复制代码
systemctl daemon-reload && systemctl restart docker;

安装容器(所有节点)

安装 Containerd

bash 复制代码
yum install containerd -y
bash 复制代码
systemctl start containerd && systemctl enable containerd

部署 K3S Server

部署

bash 复制代码
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

执行kubectl get nodes

bash 复制代码
kubectl get nodes
bash 复制代码
# 相关命令
systemctl status k3s # 查看服务状态
systemctl stop k3s # 停止服务
systemctl start k3s # 启动服务
systemctl restart k3s # 重新启动服务
k3s-uninstall.sh # 卸载服务

如果执行kubectl get nodes报错

bash 复制代码
cat <<EOF >> /root/.bashrc
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
EOF

source /root/.bashrc

# 如果还不行
mkdir .kube/config
cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config

修改ip为主机的ip:172.21.12.176

bash 复制代码
vim etc/rancher/k3s/k3s.yaml

配置环境变量

bash 复制代码
vim /etc/profile
# k3s
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
export K3S_NETWORK_INTERFACE=enp0s3

查看集群是否正常

bash 复制代码
watch kubectl get node -o wide

检查是否正常安装

bash 复制代码
k3s check-config

调整启动参数

bash 复制代码
vim /etc/default/grub

添加 user_namespace.enable=1 参数

原始值

bash 复制代码
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

修改后

bash 复制代码
GRUB_CMDLINE_LINUX="user_namespace.enable=1 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"

安装K3S Node节点

查看主节点token

bash 复制代码
cat /var/lib/rancher/k3s/server/node-token

K10e2075a391292492ce3b260dc5d5e8e6a4ac3f8aa2cc2bb8b2b85eea3cc78c356::server:d65b7835c0af6bfac2cbd585b8d20ff7

查看k3s版本

获取主节点服务地址
bash 复制代码
kubectl cluster-info

获取服务地址,用于后续工作节点连接使用。

添加node节点

172.21.12.135机器上执行加入节点

bash 复制代码
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--docker" INSTALL_K3S_VERSION=v1.29.6+k3s2 K3S_URL=https://172.21.12.176:6443 K3S_TOKEN=K10e2075a391292492ce3b260dc5d5e8e6a4ac3f8aa2cc2bb8b2b85eea3cc78c356::server:d65b7835c0af6bfac2cbd585b8d20ff7 sh -
bash 复制代码
# 相关命令
systemctl status k3s # 查看服务状态
systemctl stop k3s # 停止服务
systemctl start k3s # 启动服务
systemctl restart k3s # 重新启动服务
k3s-agent-uninstall.sh # agent 节点卸载

出现错误

bash 复制代码
[INFO]  systemd: Starting k3s-agent
Job for k3s-agent.service failed because the control process exited with error code. See "systemctl status k3s-agent.service" and "journalctl -xe" for details.
bash 复制代码
# 配置kubectl配置文件
# node节点
mkdir ~/.kube
bash 复制代码
scp root@172.21.12.176:/etc/rancher/k3s/k3s.yaml ~/.kube/config
bash 复制代码
sed -i s'/127.0.0.1/172.21.12.176/' ~/.kube/config
bash 复制代码
vi /etc/rancher/k3s/k3s.yaml

再次在客户端节点执行kubectl get nodes出现错误

bash 复制代码
couldn't get current server API group list: Get "https://172.21.12.176:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate signed by unknown authority
Unable to connect to the server: tls: failed to verify certificate: x509: certificate signed by unknown authority

实在不行如果在主机没获得,在k3s的软件安装包下执行

bash 复制代码
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --token K10e2075a391292492ce3b260dc5d5e8e6a4ac3f8aa2cc2bb8b2b85eea3cc78c356::server:d65b7835c0af6bfac2cbd585b8d20ff7 --server https://172.21.12.176:6443' K3S_DATASTORE_ENDPOINT='mysql://root:123456@tcp(172.21.12.176:3306)/k3s' ./install.sh

最后在主节点上查看

查看节点状态

在主节点执行

bash 复制代码
watch kubectl get node -o wide

安装Kuboard面板

在主节点上安装

下载yaml文件

bash 复制代码
wget --no-check-certificate https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
1

安装面板

bash 复制代码
kubectl apply -f kuboard-v3.yaml
watch kubectl get pods -n kuboard -o wide

或者运行:

bash 复制代码
sudo docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 80:80/tcp \
  -p 10081:10081/udp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://172.21.12.176:80" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3.3.0.3

在浏览器中打开链接 "http://172.21.12.176:80"

输入初始用户名和密码,并登录

用户名: admin

密码: Kuboard123

http://172.21.12.176/sso/auth/default?req=okvbp7tprgylrqqn2gorm4hdp

kuboard官网

https://kuboard.cn/install/v3-upgrade.html#如果以-docker-run-运行-kuboard

安装教程:https://kuboard.cn/learning/

相关推荐
白手小弟1 小时前
docker部署Stirling-PDF
docker·容器·pdf
HoweWWW2 小时前
k8s 微服务 ingress-nginx 金丝雀发布
微服务·容器·kubernetes
向往风的男子2 小时前
【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(三十一)
学习·容器·kubernetes
HoweWWW2 小时前
k8s中的存储
linux·容器·kubernetes
djgxfc3 小时前
Docker概述
spring cloud·云原生·eureka
苏supper3 小时前
k8s的NodeIP、PodIP、ClusterIP、ExternalIP
kubernetes
夜猫逐梦3 小时前
【docker】阿里云使用docker,2024各种采坑
阿里云·docker·容器
c1tenj23 小时前
docker发布redis容器
redis·docker·容器
研究司马懿4 小时前
【云原生监控】Prometheus之PushGateway
云原生·prometheus·云原生监控·企业级监控系统·promesql
骇客野人8 小时前
【开端】docker基线漏洞修复
运维·docker·容器