基本情况
手头只有低配服务器一台(2核2G),既要又要还想要,既要做日常的学习练习,又要部署一些稳定的中间件服务做本地调试,还想要逐步部署一些Demo服务或博客,又不想太花功夫每次部署重新打镜像。
要达到目的,首先要做到部署组件和服务的资源隔离,又得实现自动化,那么需要实现一套CICD流水线和线上K8S集群。
综合资源考量,Docker实现组件和服务间隔离,K8S太重量级,使用K3S作为自己的线上容器运维平台,今天先把K3S搭起来。
遇到的环境问题
基于阿里云轻量级服务器
curl下载k3s安装脚本失败,原因是yum对应的python版本问题,之前有重新安装python3,查资料重新安装yum即可解决
考虑到服务器本身没有什么数据,不如重置系统来得快,于是重置系统,系统重置后,ip没变,ssh登录发现报错
原因是.ssh/know_hosts中,存储了访问ip对应的公钥,服务器系统更新后,秘钥对变了
使用ssh-keygen -R {ip}命令,删除ip对应的秘钥配置,继续登录,好嘛,又被拒绝,查看服务器信息,系统重置后,登录密码也需要重置
安装Docker
# 更新yum
yum -y update
# 安装yum-utils
yum install -y yum-utils
# 安装docker-ce docker-ce-cli containerd.io
yum install -y docker-ce docker-ce-cli containerd.io
# 设置存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 启动docker
systemctl start docker
安装k3s
使用国内源安装
curl -L rancher-mirror.rancher.cn/k3s/k3s-ins… | INSTALL_K3S_MIRROR=cn sh -
安装过程中,多次没有执行完就退出
去掉curl的-s和-f参数,显示下载和运行中的错误信息,依然没有效果,不确定具体原因,重开一个终端窗口执行命令,成功
验证k3s
准备yaml配置文件,创建namespace、service,并通过Deployment创建pod
# 创建namespace
apiVersion: v1
kind: Namespace
metadata:
name: k8s-springboot
---
# 创建Service(NodePort类型,与节点做端口映射)
apiVersion: v1
kind: Service
metadata:
name: springboot-demo-nodeport
namespace: k8s-springboot
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30001
selector:
app: springboot-demo
---
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: springboot-demo
namespace: k8s-springboot
spec:
selector:
matchLabels:
app: springboot-demo
replicas: 1
template:
metadata:
labels:
app: springboot-demo
spec:
containers:
- name: springboot-demo
image: huzhihui/springboot:1.0.0
ports:
- containerPort: 8080
修改防火墙配置,放开nodeport对应端口30001
启用配置
# 启动配置
kubectl apply -f k8s-springboot.yaml
# 查看pod运行状态
kubectl get pods --all-namespaces
访问{ip}/30001,可以正常访问,证明k3s启动成功
修改k3s运行环境为docker
此处排个雷,按下述教程修改,k3s不能正常启动,对应行报错
执行脚本,卸载k3s
/usr/local/bin/k3s-uninstall.sh
指定k3s运行环境为docker,重新安装k3s
curl -L rancher-mirror.rancher.cn/k3s/k3s-ins… | INSTALL_K3S_MIRROR=cn sh -s server --docker
发现只需在server后增加--docker 即可
参考
安装k3s & 验证 juejin.cn/post/701621…