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/

相关推荐
Smile丶凉轩1 分钟前
微服务即时通讯系统的实现(客户端)----(1)
微服务·云原生·架构
南慕小白4 分钟前
云原生后端
云原生
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
@东辰2 小时前
【golang-技巧】-自定义k8s-operator-by kubebuilder
开发语言·golang·kubernetes
小安运维日记2 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚2 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
小扳2 小时前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
politeboy3 小时前
关于k8s中镜像的服务端口被拒绝的问题
云原生·容器·kubernetes
weixin_438197383 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
皮锤打乌龟10 小时前
(干货)Jenkins使用kubernetes插件连接k8s的认证方式
运维·kubernetes·jenkins