使用kubectl进行多集群管理
平常使用跳板机来管理, 经常多个环境多套集群, 那么如何用一个kubectl如何管理这些集群.
使用不同的kubeconfig管理使用不同的Linux用户每个Linux用户的 ~/.kube/config 配置不同即可, 比如创建一个uat用户,一个prod用户, 分别配置不同的config文件
使用环境变量config文件放到当前目录下
1KUBECONFIG=config-uat kubectl get pod
环境变量也可以写成全局的在.bashrc里面
1export KUBECONFIG=config-uat
使用参数同使用环境变量
1kubectl get pod --kubeconfig=config-uat
使用一个kubeconfig准备确保每个kubeconfig里面部分参数唯一性,可以手动修改一下
合并配置文件假设一个配置文件名为: uat, 另一个为: prod
1KUBECONFIG=uat:prod kubectl config view --flatten > merged-kubeconfig
验证合并结果完成合并后,可以使用以下命令验证 ...
Kubernetes使用存储挂载单个文件
一般来说, 挂载存储都是把一个PV挂载到一个路径, 挂载后此路径下原来的文件就会不见, 只能看到挂载后的文件, 和在Linux下挂载磁盘是一样的. 那么现在有个需求:
需求此服务是java程序, 数据库使用的是内嵌的h2 database, 下图中的两个文件就是数据库的文件. 这两个文件是存在于根目录下的, 假设此程序数据库文件是代码写死的(真实情况是: 数据库路径是可以更改的), 现在要部署到kubernetes中, 并对数据库做持久化.
使用subpath根据之前挂载configmap到单个文件的经验, 我们应该使用subpath来挂载, 先创建好pvc, yml如下
1234567891011apiVersion: v1kind: PersistentVolumeClaimmetadata: name: metabase-pvcspec: storageClassName: managed-nfs-storage accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
st ...
使用kubeadm部署一套高可用k8s 1.26集群 for AlmaLinux9
基于AlmaLinux9使用kubeadm搭建集群, ubuntu部署文档, 有疑问的地方可以看官方文档
准备机器
我的机器详情如下, 配置至少为4C4G
hostname
IP
作用
public
10.0.0.3
ingress和apiserver的负载均衡,nfs存储
master1
10.0.0.11
k8s master节点
master2
10.0.0.12
k8s master节点
master3
10.0.0.13
k8s master节点
worker1
10.0.0.21
k8s worker节点
worker2
10.0.0.22
k8s worker节点
每台机器都做域名解析,或者绑定hosts(直接使用ip地址会有警告)
123456vim /etc/hosts10.0.0.3 public kube-apiserver10.0.0.11 master110.0.0.12 master210.0.0.13 master3
每台机器都关闭防火墙和SELinux
负载均衡机器必须要关闭,因为6443不是nginx的标 ...
前后端跨域问题
啥是跨域跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。
跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。
出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。
为什么会跨域说到跨域不得不谈的就是浏览器的同源策略,跨域也是因为浏览器这个机制引起的,这个机制的存 ...
将ova或qcow2导入到PVE虚拟机
比如我们从VMware Workstation导出的虚拟机镜像(ova或者ovf), 如果我想要导入到proxmox中, proxmox默认是不支持导入OVA虚拟机的, 可以通过转换虚拟机虚拟磁盘的方法将虚拟磁盘附加到现有的pve虚拟机中.
提取vmdk虚拟磁盘文件这一步如果是ova, 则需要用解压缩软件解压一下, 如果是ovf, 直接就能看到vmdk文件
转换虚拟磁盘文件使用工具 qemu-img 进行转换, 如果是导入到pve, 可以不转换, 使用qm命令会自动转换的.
12345# 从另一台PVE导出qcow2可以这样qemu-img convert -p -O qcow2 -c /dev/mapper/pve-vm--110--disk--0 VM110.qcow2# 从vmdk文件转换可以这样 -c 是压缩qemu-img convert -c -f vmdk myvm-disk1.vmdk -O qcow2 myvm-disk1.qcow2
在PVE上创建新的虚拟机此步骤需要记录一下虚拟机的ID
上传虚拟磁盘文件到PVEpve本质上就是debian linux, 你可以 ...
使用tailscale打通内网
家里有一台群晖nas, 通过quickconnect连接太慢了, 并且有些操作不能通过quickconnect, 比如直接smb挂载目录
群晖nas安装群晖国内应用商店已经下架了这个APP, 你可以尝试着在应用中心搜索tailscale, 如果可以搜索到, 就直接安装即可. 搜索不到的话, 可以使用离线安装的方式:
到官网下载离线SPK包:https://pkgs.tailscale.com/stable/#spks根据你的系统架构来下载包, intel cpu 下载x86_64架构的包. 然后进入群晖软件中心, 点击手动安装, 上传spk包安装
第一次打开tailscale 需要登录, 登录页面不支持quickconnect远程连接, 所以建议在家配置好tailscale
windows安装安装成功后, 右键任务栏图标,点击login登录tailscale账号
登录成功后,可以在官网https://login.tailscale.com/admin/machines 查看到所有的设备和IP地址等信息。
访问方式tailscale可以使用ip地址来访问,或者使用tailscale的d ...
查看kubernetes节点的硬件配置
kubectl describe node 可以查看到信息, 这里使用jq进行一下数据处理格式化.
1kubectl get node -o json | jq '.items[] | "===========================================", "机器名: \(.metadata.labels."kubernetes.io/hostname") ", "CPU: \(.status.capacity.cpu) 核", "内存大小: \(.status.capacity.memory)"'
输出结果类似于:
爷的青春结束了
前言回忆是抓不到的月光握紧就变黑暗,回忆是美好的,但不要沉迷于回忆,不要尝试安装模拟器去回忆之前的老游戏啦,会浪费现在的时间,童年是找不回来了,过好当下吧。一个在线体验老游戏的网址: https://zaixianwan.app
为啥写这篇文章时间过的太快, 看着身边的东西都变了样,有时候突然想起很久以前玩过的游戏,但是怎么也想不起名字,就算想起来了,搜索引擎都搜不到相关的文章,只能勉强搜到一些包浆了的图,所以还是记录下来,对自己的过去做个记录。
俄罗斯方块机磁带机和CD机小学时候听的磁带机,听的最多的就是刀郎的歌,什么《2002年的第一场雪》啦。
CD机,听的第一首歌是 林俊杰 - 就是我
FC游戏机FC游戏机指的是任天堂的红白机, 但是在中国普及开来的时候已经是盗版遍地了, 不仅仅是机器盗版, 还有很多盗版游戏, 还记得外星科技等等开发的那些塞尔达?
模拟器网上到处都是, 很多都是在线玩的. 比如 https://zaixianwan.app
一个背景音乐下载网站: https://www.zophar.net/music/
开源nfs编辑器: https://famistudi ...
找出占用Kubernetes节点磁盘的Pod
有部分开发不规范导致日志写入容器, 在k8s环境下导致节点磁盘空间占用过高, 解决方案有:
通过监控告警来提前预防
挂载磁盘, 容器日志写入磁盘
使用自动清理脚本
kubectl查询每个pod占用磁盘空间1kubectl get --raw /api/v1/nodes/10.20.20.12/proxy/stats/summary | jq '.pods[] | "PodName: \(.podRef.name)", "usedBytes: \(.containers[].rootfs.usedBytes)", "======================================================"'
输出结果如图:
Docker相关操作查看容器磁盘占用12345# 节点上查看磁盘使用情况,并安装从大到小排序,可以看到各个容器的占用磁盘空间。docker ps -a --format "table {{.Size}}\t ...
Linux里安装crontab并运行
常见的linux发行版都自带了crontab服务, 但是我们常用的容器镜像是没有的, 不要问我为什么要在容器里运行crontab…Linux定时执行任务crontabLinux的crontab无法执行的一些问题
CentOS/RedHat系列安装1yum install -y cronie
配置文件位置后面的root是用户名
1/var/spool/cron/root
启动命令12345# 后台运行crond# 前台运行crond -f
Ubuntu/Debian系列安装1sudo apt-get install -y cron
配置文件位置后面的root是用户名
1/var/spool/cron/crontabs/root
启动命令12345# 后台运行cron# 前台运行cron -f
Alpine安装官方镜像自带了
配置文件位置后面的root是用户名
1/etc/crontabs/root
启动命令12345# 前台运行crond -f# 后台运行crond