sealos私有化部署Kubernetes
以debian为例
首先修改虚拟主机IP获取方式为静态IP地址:
示例:修改 vim /etc/network/interfaces
为以下内容(所有节点都需修改):
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.62.131 #当前主机IP地址
netmask 255.255.255.0 #当前子网掩码
gateway 192.168.62.2 #当前网关IP地址
dns-nameservers 192.168.62.2 当前DNS服务器IP地址
修改各个主机名:
查看主机名 hostname
,修改主机名文件 vim /etc/hostname
如:k8s-master
(所有节点都需修改)
修改各个主机host映射
示例:修改 vim /etc/hosts
如
192.168.62.131 k8s-master
192.168.62.132 k8s-worker1
192.168.62.133 k8s-worker2
使用sealos一键安装k8s集群
- 安装依赖:
sudo apt install -y iptables ebtables socat
- 下载对应系统sealos包,debian是以deb结尾的:
wget https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.deb
- 下载后使用:
apt install ./sealos_5.0.1_linux_amd64.deb
安装 - 一键安装如下命令:主节点为
192.168.62.131
,从节点为192.168.62.132
192.168.62.133
,从节点ssh密码为password-root
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
--masters 192.168.62.131\
--nodes 192.168.62.132,192.168.62.133 -p password-root
安装成功如图所示:
其他命令
增加节点
- 增加node节点
192.168.64.21与192.168.64.19
:sealos add --nodes 192.168.64.21,192.168.64.19
- 增加master节点
192.168.64.21与192.168.64.19
:sealos add --masters 192.168.64.21,192.168.64.19
删除节点
- 删除node节点
192.168.64.21与192.168.64.19
:sealos delete --nodes 192.168.64.21,192.168.64.19
- 删除master节点
192.168.64.21与192.168.64.19
:sealos delete --masters 192.168.64.21,192.168.64.19
清理k8s集群
sealos reset
离线安装k8s
离线环境只需要提前导入镜像,其它步骤与在线安装一致。
首先在有网络的环境中导出集群镜像:
- 拉取镜像:
sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9
- 保存镜像为压缩包
kubernetes.tar
sealos save -o kubernetes.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9
- 方式1:将kubernetes.tar 拷贝到其他离线环境,使用
load
导入集群镜像
sealos load -i kubernetes.tar
- 查看现有镜像
sealos images
- 离线安装:
- 单机部署方式
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9
- 集群部署方式
- 单机部署方式
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.29.9 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
--masters 192.168.64.2,192.168.64.22,192.168.64.20 \
--nodes 192.168.64.21,192.168.64.19 -p [your-ssh-passwd]
- 方式2:
- 快速启动 K8s 单节点:
sealos run kubernetes.tar
集群同理
使用kubectl管理k8s集群
类别 | 命令 | 功能描述 | 示例 |
---|---|---|---|
基本命令 | |||
create | 创建资源 | 根据文件、目录或URL创建资源,支持单个或多个文件。 | kubectl create -f ./nginx.yaml kubectl create -f ./dir kubectl create -f xxx.git.io/vxxzso.yaml |
run | 运行镜像 | 在集群中运行指定镜像,支持终端交互、多个副本等。 | kubectl run -i --tty busybox --image=busybox kubectl run nginx --image=nginx kubectl run mybusybox --image=busybox --replicas=5 |
explain | 获取资源文档 | 查看指定资源的文档说明,如pod、service等。 | kubectl explain pods,svc |
get | 查询资源 | 获取资源信息(如node、pod、service等),支持多种格式和过滤。 | kubectl get nodes kubectl get pods -o wide --all-namespaces kubectl get namespaces kube-system -o yaml |
edit | 编辑资源 | 在服务端直接编辑资源配置。 | kubectl edit svc/docker-registry |
delete | 删除资源 | 根据文件、名称或标签删除资源,支持强制删除和包含未初始化资源。 | kubectl delete -f ./pod.json kubectl delete pod,service baz foo kubectl delete pods prometheus-7fcfcb9f89-qkkf7 --grace-period=0 --force |
cp | 文件拷贝 | 在容器与宿主机之间拷贝文件或目录。 | kubectl cp default/venus-registry-web-8cd94fc99-fws4b:demo.txt demo.txt kubectl cp demo.txt default/venus-registry-web-8cd94fc99-fws4b:demo.txt |
部署命令 | |||
rollout | 查看/回退修订版本 | 查看部署的历史修订版本或回退到指定版本。 | kubectl rollout history deployment nginx-deployment kubectl rollout undo deployment nginx-deployment --to-revision=1 |
scale | 调整副本数 | 手动扩展或缩减副本数量。 | kubectl scale rc rc-nginx-3 --replicas=4 |
autoscale | 自动调整副本数 | 根据负载自动调整副本数,指定最小和最大范围。 | kubectl autoscale rc rc-nginx-3 --min=1 --max=4 |
集群管理命令 | |||
cluster-info | 查看集群信息 | 显示集群的详细信息。 | kubectl cluster-info kubectl cluster-info dump |
top | 查看资源使用情况 | 显示节点或pod的CPU、内存等资源使用情况。 | kubectl top node k8s-node kubectl top pod -n logging |
cordon | 标记节点不可调度 | 将节点标记为不可调度状态。 | kubectl cordon k8s-node |
uncordon | 标记节点可调度 | 将节点标记为可调度状态。 | kubectl uncordon k8s-node |
drain | 排除节点 | 排除节点上的pod,准备维护。 | kubectl drain k8s-node |
故障排查和诊断 | |||
describe | 显示资源详细信息 | 查看资源(如pod、node)的详细状态和事件。 | kubectl describe pod xxx kubectl describe nodes |
logs | 查看容器日志 | 查看pod中容器的日志,支持指定容器、行数和实时输出。 | kubectl logs -f kube-dns-699984412-vz1q6 -n kube-system kubectl logs --tail=10 nginx |
exec | 执行容器命令 | 在容器中执行shell命令,支持交互模式和多容器指定。 | kubectl exec -it codeleak-github-cron-1567581840-zsqpc /bin/bash kubectl exec nginx-pod -c my-container -- ls / |
高级命令 | |||
apply | 应用配置 | 根据文件或标准输入更新资源配置。 | kubectl apply -f rc-nginx.yaml `cat pod.json |
设置命令 | |||
label | 管理资源标签 | 添加、修改或删除资源的标签,支持覆盖和批量操作。 | kubectl label nodes node01 disk=ssd kubectl label pods tomcat app=tomcat kubectl label pods tomcat app- |
annotate | 管理Annotations | 更新资源的Annotations信息。 | kubectl annotate pods foo description='my frontend' |
其他命令 | |||
version | 查看版本信息 | 显示客户端和服务端的版本信息。 | kubectl version |
api-versions | 查看API版本 | 显示服务端支持的API版本。 | kubectl api-versions |
api-resources | 查看资源类型 | 显示服务端支持的资源类型。 | kubectl api-resources |