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