K3s 1.26版本构建跨公有云的云原生环境

2023年 9月 23日 170.6k 0

K3s是什么?

K3s 是轻量级的 Kubernetes,是一个完全兼容的 Kubernetes 发行版,占用内存小,非常适合在有限的资源下部署体验云原生环境。
更多参考:官方文档

为什么选择K3s?

笔者趁着腾讯云、天翼云等云服务做活动时,入手了2台轻量级云服务器。在实操K8s相关技术知识时,总觉得用虚拟机缺少了真实环境下的体验。而事实也证明,当尝试用公有云搭建K8s环境时,就遇到了跨Node访问网络不通的问题。

选择K3s的原因:

  • 占用更少的资源:对于2核4G的云服务器,部署一个K8s master节点内存直接就去了一半,更别说搭建Harbor、Gitlab等CICD相关的环境
  • 跨公有云搭建容器集群:公有云暴露的公网IP不在机器网卡上,使用K8s Calico搭建网络环境时,会存在跨Node访问网络不通问题
  • 麻雀虽小五脏俱全:与K8s体验一致,该有的它都有。

快速开始

环境准备

云服务器可以选择Centos7.x系统,这个版本比较成熟,坑会少一些。swap内存交换、firewalld防火墙是默认关闭的。
高版本K8s/K3s默认不再使用Docker,这里我们也可以不安装Docker。

配置hostname

注意每台机器的hostname不要出现相同的名称

# 分别在2台云服务器上执行
hostnamectl set-hostname tenxunyun
hostnamectl set-hostname tianyiyun
# 修改完可以执行一下su 切换刷新hostname

开启iptables转发支持

cat ~/.bashrc
echo "alias klogt='kubectl logs --tail'" >>~/.bashrc

source ~/.bashrc

简写可以按自己的习惯自定义,上面自动了输入k 就是kubectl,kd就是查看pod详情的命令开头,klogt是查看pod日志最后多少行的命令开头

kubectl常用命令和简写

kubectl get po -A #查看全部pod
kubectl get pod -o wide #查看pod在哪个ip、node上启动
kubectl get svc -n default #查看default命名空间的service
kubectl describe pod xxx -n xxx #查看pod详情,一般分析启动失败时使用
kubectl logs --tail 20 xxxPod -n xxx #查看pod最后20行日志
kubectl get sts,deploy,ds,cm,ing,rs,secret #查看各种资源情况
# 查看secret中data中password属性的原始内容
k get secret -ngitlab my-gitlab-postgresql-password -o jsonpath='{.data.password}' | base64 --decode 
kubectl get pod -n dev -w # 监听pod变化
k explain deploy.spec.template.spec.containers #查看某类资源下可配置项

k label nodes master1 nodetype=base # 给node加标签
kubectl label pod nginx -n dev version=1.0 #给pod加标签
kubectl get pod -n dev --show-labels # 查看pod 标签
kubectl label pod nginx -n dev version=2.0 --overwrite # 更新标签
kubectl get pod -l "version=2.0" -n dev --show-labels # 筛选
kubectl get pod -l "version!=2.0" -n dev --show-labels # 筛选
kubectl label pod nginx -n dev version- # 删除标签
k delete po -ndev -l 'app in (bookkeeping,usercenter)' #集合筛选

K8s中很多资源都有简写,可以通过下面命令查看全部资源和简写
kubectl api-resources

查看K3s日志

有时候安装、运行出现报错,可以通过查看日志分析
journalctl -u k3s -e #查看server节点日志
journalctl -u k3s-agent -e #查看agent节点日志
如果在加入节点时报错:failed to get CA certs: Get "https://127.0.0.1:6444/cacerts
可能是没有关闭防火墙,在每个节点执行一下:systemctl stop firewalld

停止、卸载K3s

K3s的命令在/usr/local/bin目录
./k3s-killall.sh 停止K3s server节点全部容器
./k3s-agent-uninstall.sh 卸载K3s agent节点环境
./k3s-uninstall.sh 卸载K3s server节点环境

清理磁盘空间

如果发现磁盘空间被占用的太多,可以删除不用的镜像
k3s crictl rmi --prune

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论