By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
K3s K8s    2024-04-15 17:36:06    6    0    0

在使用tailscale混合组网时,部分只有IPv6的节点无法访问docker、github等源站获取镜像,导致无法部署pod。尽管可以使用warp-cli让本机获取访问IPv4网络资源的能力,但仍然无法让这些只有IPv6的节点在k3s集群内部正确拉取IPv4 only的Image镜像。

解决方案:

为了解决这个问题,可以采取以下步骤:

  1. 使用docker部署monius/docker-warp-socks并开放socks端口;
  2. 使用环境变量来配置节点的网络设置;
  3. 重启k3s或k3s-agent,应用设置;

在只有IPv6的节点上执行以下命令:

  1. docker run --privileged --restart=always -itd \
  2. --name warp_socks \
  3. --cap-add NET_ADMIN \
  4. --cap-add SYS_MODULE \
  5. --sysctl net.ipv6.conf.all.disable_ipv6=0 \
  6. --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  7. -v /lib/modules:/lib/modules \
  8. -p 127.0.0.1:9091:9091 \
  9. monius/docker-warp-socks
  10. echo 'HTTP_PROXY="http://your-proxy-ip:your-proxy-port"' >> /etc/environment
  11. echo 'HTTPS_PROXY="http://your-proxy-ip:your-proxy-port"' >> /etc/environment
  12. echo 'NO_PROXY="localhost,127.0.0.1,192.168.0.0/16"' >> /etc/environment
  13. source /etc/environment
  14. systemctl restart k3s
  15. systemctl restart k3s-agent

通过以上步骤,可以为只有IPv6的节点单独指定获取镜像image pull代理,从而解决无法正

2024-03-28 14:28:36    17    0    0

起因

由于 LXC 容器无法使用 overlay2​ 存储层,为了保持与 Docker 的兼容性,默认存储层一直采用 vfs​。vfs 存储层的劣势很明显,目前的 lxc 虽然只部署 7 个 Docker 项目,但 /var/lib/docker​ 目录空间占用高达 70GB,因此迫切需要为 vfs 存储层寻找替代品,查阅众多资料后发现 fuse-overlayfs​ 可以解决这个问题,但lxc有些系统无法通过apt直接安装 fuse-overlayfs,因此就有了这篇文章,详细记录了 lxc 切换 vfs 存储层驱动为 fuse-overlayfs​ 的详细过程。

Docker 存储层

Docker容器分层

Docker 容器采用分层结构,其层级如同洋葱般逐一累加(layers、RUN、COPY、ADD)。这意味着 Dockerfile 中的每个命令将在容器内创建一个新层。每一层仅存储相较于上一层新增的修改内容,从而实现容器间的层级共享,降低存储空间占用和下载时间。然而,需要注意的是,这些层是可以访问的,因此不可通过增加额外层级来保护敏感信息。

在典型的系统环境中,Docker 使用联合文件系统(基于 MergerFS)透明地合并了所需的层级。Docker 将此称为 overlay2(默认存储驱动程序)。这样就创建了一个由所有层级共同组成的单个文件系统,而无需复制文件。容器看到的是一个完整的文件系统,但它实质是由多个文件系统组合而成。

LXC中的容器分层

在 LXC 中运行 Docker 时,默认的 overlay2 存储驱动程序不可用,因为 LXC 无法挂载这些高级的 overlay 文件系统(它们是内核构建的)。相反,LXC 使用 vfs,虽然较简单,但也存在一些重大问题。vfs 不会像 overlay2 那样仅更改写入磁盘,而是对现有的整个文件系统进行深度复制,以便在上一层基础上创建下一层。这意味着容器会消耗更多的空间,因为许多基础操作系统文件将在每个层中重复出现,从而显著增加磁盘使用率。因此,多个容器也无法共享相同的底层。强制使用 overlay2 也不会改善这种情况:

  1. ERRO[2021-09-30T09:24:56.9
k3s k8s rancher etcd    2023-12-08 15:05:22    51    0    0

定位问题

rancher部署的k3s集群无法加入新的etcd节点,查询日志发现报错,etcd群组中出现本应该已被删除的节点prepaid-de,此节点已经被删除,但却错误的留在了etcd member list中,导致etcd服务无法正常验证。

解决思路

移除已经无效的节点prepaid-de,恢复etcd集群的可用性。

解决方案

在k3s集群主控节点安装etcdctl工具。 

一、安装etcdctl

方法一:可以使用apt install命令直接进行安装

apt install etcd-client

方法二:下载对应etcd版本的etcdctl工具手动安装

首先查询获取etcd的版本

curl -L --cacert /var/lib/rancher/k3s/server/tls/etcd/server-ca.crt --cert /var/lib/rancher/k3s/server/tls/etcd/server-client.crt --key /var/lib/rancher/k3s/server/tls/etcd/server-client.key <https://127.0.0.1:2379/version>

修改ETCD-VER=v 之后的版本号为之前获取到的数字,运行以下命令安装对应版本etcdctl

ETCD_VER=v3.5.0
# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gzrm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gztar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.
2023-12-08 15:04:59    545    0    0

默认LXC容器不允许docker嵌套。要启动虚拟化嵌套功能,需要按照以下步骤在proxmox的母鸡上进行后续操作。

本教程使用新创建的虚拟机进行讲解 (假设创建了 CT100) :

cd /etc/pve/lxc

需要先停止lxc容器,之后对配置文件进行修改

nano 100.conf

在cores字段下加入以下代码:

features: nesting=1,fuse=1,
2023-12-08 15:04:59    3578    0    0

当创建kvm虚拟机后忘记密码、某些文件丢失或损坏无法继续使用虚拟机,宿主机挂载镜像来解决这样的难题。

1 raw格式

方法一

对于未分区镜像文件直接使用loop:

第一步:

file image.img 查看什么格式

第二步:
mount -o loop p_w_picpath.img /mnt/p_w_picpath

lxc容器在这一步,已经可以直接挂载文件到指定位置了

已分区的镜像文件:
如果已知分区的起始位置
mount -o loop,offset=32256 p_w_picpath.img /mnt/p_w_picpath
方法二:

使用losetup + kpartx
losetup /dev/loop0 p_w_picpath.img
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt/p_w_picpath
kpartx命令的作用,是让Linux内核读取一个设备上的分区表,然后生成代表相应分区的设备。
kpartx -l p_w_picpathfile 可以查看一个映像文件中的分区,使用 kpartx -a p_w_picpathfile 命令后,就可以通过 /dev/mapper/loop0pX (其中X是 分区号)来访问映像。

2 qcow2格式
对于qcow2格式需要使用qemu-nbd这个工具,如果没有请用yum安装.
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 p_w_picpath.img
mount /dev/nbd0p1 /mnt/p_w_picpath

3 如果是LVM格式的镜像:
vgscan
vgchange -ay
mount /dev/VolGroupName/LogVolName /mnt/p_w_picpath

4 最后使用结束需释放资源:
umount /mnt/p_w_picpath
vgchange -an VolGroupName
killall qemu-nbd
kpartx -d /dev/loop0
losetup -d /dev/loop0

 

2023-12-08 15:04:59    511    0    0

图片[1]-KIMSUFI使用proxmox开【IPv4nat+IPv6】小鸡-科技密码

活动昨天跟风入手了KIMSUFI-LE独服,配置和价格都很不错。唯一槽点是机器只有下行是G口,上行被限制在了100M。听说有几率中奖开到上下都是G口,还听说有几率IPV6的上下行都是G口(仅IPV4限速)。结果我开的机器2个奖都没中(′⌒`)。

 

写这个教程主要是给IPV6中奖者开小鸡一个参考。IPv4设置较简单,这里只设置了小鸡可以访问IPv4外网,并没有给小鸡分配端口转发(

2023-12-08 15:04:59    108    0    0

启动救援模式,开启qemu虚拟机挂载本机系统

apt -y update
apt -y install qemu qemu-kvm

wget http://download.proxmox.com/iso/proxmox-ve_7.1-1.iso

qemu-system-x86_64 \
-enable-kvm \
-nodefaults \
-cdrom /root/proxmox-ve_7.1-1.iso \
-hda /dev/sda \
-hdb /dev/sdb \
-cpu host \
-smp 4 \
-m 8G \
-net nic \
-net user \
-vga std \
-vnc 0.0.0.0:0 \
-usbdevice tablet \
-k en-us​

使用VNC连接ip:5900,通过root登陆后排出故障项