Kubectl部署
配置文件
Helm部署
添加helm库
1 | # 添加库 |
配置 values.yaml
1 | auth: |
部署
1 | helm install -f values.yaml redis bitnami/redis --namespace --create-namespace |
参考
kubernetes环境部署单节点redis - 紫色飞猪 - 博客园 (cnblogs.com)
配置文件
添加helm库
1 | # 添加库 |
配置 values.yaml
1 | auth: |
部署
1 | helm install -f values.yaml redis bitnami/redis --namespace --create-namespace |
参考
kubernetes环境部署单节点redis - 紫色飞猪 - 博客园 (cnblogs.com)
清华 https://mirrors.tuna.tsinghua.edu.cn
腾讯 https://mirrors.tencent.com
华为 https://mirrors.huaweicloud.com
中国科技大学 https://mirrors.ustc.edu.cn
华中科技大学 http://mirror.hust.edu.cn
网易 http://hub-mirror.c.163.com
中国科技大学 https://docker.mirrors.ustc.edu.cn (不可用)
道客 https://docker.m.daocloud.cn (参考官方文档)
腾讯 https://mirror.ccs.tencentyun.com
华为 https://mirror.swr.myhuaweicloud.com
阿里云 https://registry.cn-hangzhou.aliyuncs.com
[^注]: 阿里可申请私有加速,需注册账号,注册后地址修改为 https://{私有ID}.mirror.aliyuncs.com。详细信息参考官方文档
阿里 https://registry.aliyuncs.com/google_containers
中科大 https://gcr.mirrors.ustc.edu.cn (2022.8之后不再更新镜像,校外访问返回403)
华为 https://mirror.swr.myhuaweicloud.com
道客 https://m.daocloud.io/k8s.gcr.io 文档
道客 https://m.daocloud.io/quay.io 参考支持镜像列表
道客 https://m.daocloud.io/ghcr.io 参考支持镜像列表
ArtifactHub https://artifacthub.io/
华为 https://mirrors.huaweicloud.com/helm/
bitnami https://charts.bitnami.com/bitnami
Google https://gcr.io/kubernetes-helm
Docker(/etc/docker/daemon.json )
1 | { |
Containerd(/etc/containerd/config.toml)
1 |
|
K3s中Containerd容器(/var/lib/rancher/k3s/agent/etc/containerd/config.toml)
K3s 默认的 containerd 配置文件目录为/var/lib/rancher/k3s/agent/etc/containerd/config.toml,但直接操作 containerd 的配置文件去设置镜像仓库或加速器相比于操作 docker 要复杂许多。K3s 为了简化配置 containerd 镜像仓库的复杂度,K3s 会在启动时检查/etc/rancher/k3s/中是否存在 文件,如果存在该文件,就会根据 registries.yaml 的内容转换为 containerd 的配置并存储到/var/lib/rancher/k3s/agent/etc/containerd/config.toml,从而降低了配置 containerd 镜像仓库的复杂度。
1 | mirrors: |
containerd 与 docker 都有默认仓库,并且都为 docker.io
。如果配置中未指定 mirror 为 docker.io
,重启 containerd 后会自动加载 docker.io
配置。与 docker 不同的是,containerd 可以修改 docker.io
对应的 endpoint( 默认为 https://registry-1.docker.io ),而 docker 无法修改。
docker 中可以通过 registry-mirrors
设置镜像加速地址。如果 pull 的镜像不带仓库地址(项目名+镜像名:tag
),则会从默认镜像仓库去拉取镜像。如果配置了镜像加速地址,会先访问镜像加速仓库,如果没有返回数据,再访问默认吧镜像仓库。
k3s完整配置文件
1 | mirrors: |
镜像转换
1 |
|
转换为gcr.io镜像
1 | docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5 |
K8S批量下载docker images
1 | kubeadm config images list |
1 |
|
更新版
1 |
|
或(V1.3以上)
1 | kubeadm init --image-repository registry.aliyuncs.com/google_containers \ |
参考 K3s安装
组件 | 端口 | 说明 |
---|---|---|
MySQL | 3306(NodePort) | Gitea、Harbor等组件的依赖,与PostgreSQL二选一即可。安装参考K3s安装MySQL |
PostgreSQL | 5432(NodePort) | Gitea、Harbor等组件的依赖,与MySQL二选一即可。安装参考K3s安装PostgreSQL |
Cert-Manager | 无 | 证书管理服务,有公网域名推荐使用,内网部署可生成自签名证书 |
Harbor | 443(Traefik) | 私有镜像库,镜像缓存。安装参考K3s安装 |
Gitea | (3000)NodePort,(22)NodePort | 源代码仓库,ssh与宿主机ssh端口冲突,需要协调 |
Drone | 8080(NodePort) | 基于Docker的自动编译服务,与Gitea Runner二选一即可。 |
暂无 | ||
SonarQube | 8000(NodePort) | 静态代码审查。 |
暂无 |
参考 K3s部署MySQL
1 | # k3s使用 local-path 部署 |
1 | # k3s使用 local-path 部署 |
1 |
1 |
1 |
1 |
1 |
Traefik Proxy Documentation - Traefik
k3s 部署gitea+drone_golang k3s-CSDN博客
Harbor 结合 Traefik 的 HA 安装配置-腾讯云开发者社区-腾讯云 (tencent.com)
Traefik - Kubernetes 配置TCP/HTTP服务-腾讯云开发者社区-腾讯云 (tencent.com)
Drone CI使用docker插件构建和推送镜像 - wosperry - 博客园 (cnblogs.com)
在 Kubernetes 上部署 Drone 持续集成环境 | Hanggi - NGNL
Gitea 与 Drone 集成实践:完全基于 Docker 搭建的轻量级 CI/CD 系统 - Gitea - 博客园 (cnblogs.com)
1 | # master安装 |
其中<k3s-server-ip>
是K3s服务器的IP地址,<token>
是由K3s服务器生成的唯一令牌。您可以使用以下命令在K3s服务器上获取此令牌:
1 | sudo cat /var/lib/rancher/k3s/server/node-token |
1 | # 1.设置 kubeconfig 文件路径用于对 Kubernetes 集群的访问。 |
1 | sudo systemctl stop k3s.service |
1 | #安装helm |
1 | # 查看集权所有资源 |
1 | # 创建2副本的whoami应用,默认1副本 |
K3s 默认的 containerd 配置文件目录为/var/lib/rancher/k3s/agent/etc/containerd/config.toml,但直接操作 containerd 的配置文件去设置镜像仓库或加速器相比于操作 docker 要复杂许多。K3s 为了简化配置 containerd 镜像仓库的复杂度,K3s 会在启动时检查/etc/rancher/k3s/中是否存在 registries.yaml 文件,如果存在该文件,就会根据 registries.yaml 的内容转换为 containerd 的配置并存储到/var/lib/rancher/k3s/agent/etc/containerd/config.toml,从而降低了配置 containerd 镜像仓库的复杂度。
K3s 镜像仓库配置文件由两大部分组成:mirrors 和 configs:
containerd 使用了类似 K8S 中 svc 与 endpoint 的概念,svc 可以理解为访问名称,这个名称会解析到对应的 endpoint 上。也可以理解 mirror 配置就是一个反向代理,它把客户端的请求代理到 endpoint 配置的后端镜像仓库。mirror 名称可以随意填写,但是必须符合 IP 或域名的定义规则。并且可以配置多个 endpoint,默认解析到第一个 endpoint,如果第一个 endpoint 没有返回数据,则自动切换到第二个 endpoint,以此类推。
1 | mirrors: |
配置非安全(http)私有仓库,只需要在 endpoint 中指定 http 协议头的地址即可。
在没有 TLS 通信的情况下,需要为 endpoints 指定 http://,否则将默认为 https。
1 | mirrors: |
1 | mirrors: |
1 | mirrors: |
如果后端仓库使用的是自签名的 ssl 证书,那么需要配置 CA 证书 用于 ssl 证书的校验。
1 | mirrors: |
如果镜像仓库配置了双向认证,那么需要为 containerd 配置 ssl 证书用于 镜像仓库对 containerd 做认证。
1 | mirrors: |
Containerd 与 docker 都有默认仓库,均为 docker.io 。如果配置中未指定 mirror 为 docker.io,containerd 后会自动加载 docker.io 配置。与 docker 不同的是,containerd 可以修改 docker.io 对应的 endpoint(默认为 https://registry-1.docker.io),而 docker 无法修改。
Docker 中可以通过 registry-mirrors 设置镜像加速地址。如果 pull 的镜像不带仓库地址(项目名+镜像名:tag),则会从默认镜像仓库去拉取镜像。如果配置了镜像加速地址,会先访问镜像加速仓库,如果没有返回数据,再访问默认的镜像仓库。
Containerd 目前没有直接配置镜像加速的功能,但 containerd 中可以修改 docker.io 对应的 endpoint,所以可以通过修改 endpoint 来实现镜像加速下载。因为 endpoint 是轮询访问,所以可以给 docker.io 配置多个仓库地址来实现 加速地址+默认仓库地址。如下配置示例:
1 | mirrors: |
参考
系统启动后风扇忽高忽低,进入IPMI后台可以看到,看到传感器日志里大量的告警
造成此问题的原因是风扇转速过低,触发了超微的风扇转速允许的下限,从而强制满速运转,而在满速后主板又很快发现没有问题,且此时温度较低,风扇开始降速,直到降速到下限以下,重复此过程。
在进入IPMI后台管理界面后风扇速度有四种智能模式可调
Standard: zone0和zone1 风速为50%
Optimal: 风速为30%
Full: 风速为100%
Heavy IO: zone0 为50%,zone1 为75%
1 | apt install ipmitool # Ubuntu/Debian指令 |
1 | # 风扇名可以看告警里边的对应风扇名 |
ipmitool windows 版 下载地址
1 | ipmitool -H [IPMI网口IP地址] -U [IMPI账户] -P [IPMI密码] sensor thresh FAN1 lower 100 125 125 |
如果你运行上面的命令后,风扇转速回落后马上又返回原样,这表明服务器的自动调速覆盖了你手动设置的转速。你需要切换服务器风扇策略为全速(Full Speed),在这个策略下服务器不会使用自动调节转速,因此也不会覆盖你手动设置的转速。
运行下面的命令切换到全速模式(也可以进入IPMI界面调整):
1 | ipmitool -H [IPMI网口IP地址] -U [IMPI账户] -P [IPMI密码] 0x30 0x45 0x01 0x01 |
1.解决超微 SuperMicro 主板风扇反复高低转速问题 - 哔哩哔哩 (bilibili.com)
1 | [common] |
1 | sudo vim /etc/systemd/system/frps.service |
启动文件
1 | [Unit] |
1 | [common] |
使用Rufus制作启动U盘.
参考 Linux硬盘分区
1 | mkdir /mnt/gentoo |
1 | # 发送stage3 |
1 | mount --types proc /proc /mnt/gentoo/proc |
1 | cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ |
选择中国源,这一步是非必须的,提供的make.conf里已经有中国的所有源了
1 | # 方式1 |
1 | # 修改二进制源地址为国内源 |
如果启用二进制源需要在USE
中添加 getbinpkg binpkg-request-signature
1 | genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab |
生成的fstab格式如下
1 | UUID=...... /boot/efi vfat noauto,defaults,noatime,umask=0077 0 2 |
从现在开始,所有的动作将立即在新 Gentoo Linux 环境里生效。
1 | chroot /mnt/gentoo /bin/bash |
1 | emerge-webrsync |
^注意: gentoo handbook上提到可以使用emerge -rsync升级软件包数据库到最近2小时的最新版,这是没有必要的,而且下载的速度会极其慢,所以不推荐这样做。单用emerge-webrsync就可以同步数据库到最近3~4天内的最新版了。
1 | eselect profile list #查看profile予设值 |
1 | # 安装cpuid2cpuflags |
1 | emerge --ask ccache |
在portage/make.conf中添加
1 | FEATURES="ccache -test" # 在USE中 ${FEATURES} |
1 | emerge --ask aria2 |
在portage/make.conf中添加配置
1 | FETCHCOMMAND="/usr/bin/aria2c -d \${DISTDIR} -o \${FILE} \ |
1 | nano /mnt/gentoo/etc/portage/make.conf |
^注意: 设置编译标志 -march=native (如果你知道自己处理器的代号,就用自己的处理器代号替换这里的native 比如我的是skylake,如果不确定就使用native)
[^ 注意]: 设置 MAKEOPTS=”-j8” 来定义安装软件时并行编译的数量 这个数字等于你的CPU线程数(也称为逻辑CPU数)参考MAKEOPTS WiKi
完整的配置文件如下(转自Gentoo安装流程分享(step by step),第一篇之基本系统的安装,修改了下注释格式,删除不用的部分)
1 | # These settings were set by the catalyst build script that automatically |
强烈要求你禁用Nouveau驱动!!能省掉以后很多莫名其妙的麻烦!
1 | mkdir /etc/modprobe.d/ |
即便在编译内核前就已经设置内核禁用Nouveau驱动了,但是内核安装时还是会默认把nouveau驱动作为内核模块自动加载。启用了nouveau驱动模块的内核会出现各式各样的莫名其妙的数不清的问题,所以为了避免以后出现这些问题,必须禁用nouveau模块。
某些驱动程序在工作之前需要在系统上安装其他固件。这通常是网络接口的情况,尤其是无线网络接口。此外,在使用开源驱动程序时,来自AMD,Nvidia和Intel等供应商的现代视频芯片通常需要外部固件文件。大多数固件都封装在sys-kernel / linux-firmware中:
1 | emerge --ask --quiet sys-kernel/linux-firmware |
除了独立显卡硬件和网络接口之外,CPU 可能也需要固件更新。通常这种固件被称为微码(microcode)。有时需要更新版本的微码来修补 CPU 硬件中的不稳定性、安全问题或其他复杂的错误。
AMD CPU 的微码更新在前面提到的 sys-kernel/linux-firmware 软件包内分发。Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,并且需要单独安装
1 | # Intel CPU 执行 |
安装内核源码
1 | emerge --ask sys-kernel/gentoo-sources |
三种方法安装内核
安装系统时可选择安装二进制内核,系统安装完后再配置编译内核,参考 配置Linux内核 - Gentoo Wiki
全自动安装
当为基于 amd64 的系统安装和编译内核时,Gentoo 推荐使用 sys-kernel/gentoo-sources 软件包
1 | emerge --ask sys-kernel/installkernel |
混合安装(推荐方式)
生成内核配置文件
将genkernel的默认内核配置文件“generated-config”复制过来,里面已经设置好了绝大部分应用场景以及绝大部分硬件驱动的配置,非常方便,值得借过来使用,只需要在自己手动配置内核的时候将其加载,在其基础上做一点点轻微的修改或完全不修改都可以,对内核新手极其友好!
1 | emerge --ask sys-kernel/genkernel |
^注意: 首先先要加载(“Load”)刚才生成的genkernel默认内核配置文件“1.config”,然后在其基础上只需按需作轻微的修改即可(我是只修改了CPU架构为“Core 2/newer Xeon”,Preemption Model:“Low-Latency Desktop”,Timer frequecy 1000hz,Timer tick handling:“tickless idle”,Cputime accounting:“Simple tick based cputime accounting”,去掉了不需要的文件系统支持,去掉了对AMD CPU的支持,禁用Nouveau驱动)。“Support for extended (non-PC) x86 platforms”这一项取消掉。 之后“Save”你的设置,并且“Exit”即可。
^注意: 如果想在以后支持jack低延迟实时音频组件(Jack-Audio-Connection-Kit),则还需要vim 1.config,手动设置“CONFIG_CGROUPS=y”、“CONFIG_CGROUP_SCHED=y”、“CONFIG_RT_GROUP_SCHED=y”,然后重新make menuconfig载入保存1.config一遍,接下来再编译内核。
^注意: 使用nvidia显卡闭源驱动,还需要将内核配置中“CONFIG_I2C_NVIDIA_GPU”这一项禁用,否则会和官方nvidia-drivers冲突!!!
全手动安装
1 | emerge sys-apps/pciutils |
使用二进制内核
1 | # 安装二进制内核 |
用dracut生成内核的initramfs,快速且方便,新手友好
1 | emerge --ask sys-kernel/dracut |
或者使用genkernel生成内核的initramfs
1 | cp /usr/src/linux/1.config /etc/kernels/kernel-config-<内核版本号>-gentoo-x86_64 |
1 | ls /usr/share/zoneinfo |
1 | nano -w /etc/locale.gen #将以下几项取消注释,如果没有手动输入 |
1 | #查看可用系统时区和地区配置 |
1 | sudo emerge --ask bash-completion |
1 | # 无线 |
安装配置networkmanager
最方便支持多种联网方式的工具是NetworkManager,基本满足所有需求,但同时它的依赖有点多。如果使用桌面换进的话建议安装。
1 | nano -w /etc/portage/make.conf: |
1 | # 系统日志 |
安装sudo
1 | emerge app-admin/sudo |
把 %wheel ALL=(ALL) ALL
这一行去掉注释
添加用户
1 | useradd -m -G users,wheel,usb,portage,video,audio -s /bin/bash [用户名] |
设置密码
1 | # 设置root密码 |
添加grub配置
1 | nano -w /etc/portage/make.conf: |
安装grub2
1 | emerge --ask sys-boot/grub:2 |
grub安装到硬盘并生成开机启动项
1 | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Gentoo |
1 | mount -o remount,rw /sys/firmware/efi/efivarsos-prober |
如果出现No space left on device,请运行以下命令,之后再重复上述步骤
1 | mount -t efivarfs efivarfs /sys/firmware/efi/efivars |
grub默认配置添加自定义配置,可提高intel cpu的稳定性和性能
1 | nano -w /etc/default/grub: |
1 | rm /stage3-*.tag.ge |
如果开启不正常参考挂载文件系统(不要执行分区和mkfs操作),可重新chroot进入系统修改错误的配置。
1 | # 旧教程中使用 x11-drivers/xf86-video-intel(Intel显卡),这个驱动已没人更新维护 |
^注意: 以后每次重新编译安装内核kernel后,均须要运行一遍“emerge @module-rebuild”,重新编译安装nvidia驱动模块加载到内核之中,否则nvidia驱动无法加载!!!
1 | # 安装LightDM,使用KDE可忽略 |
1 | # 安装KDE桌面可忽略上边LightDM |
1 | # awesome 平铺式桌面 |
1 | # 选择profile |
1 |
|
1 | emerge --ask media-fonts/arphicfonts |
1 | # 输入法主题框架 |
1 | # 使用常规(基于源)更新 |
emerge 使用二进制包选项说明
选项 | 说明 |
---|---|
–usepkg (-k) | 尝试使用本地可用的 packages 目录中的二进制包。如果未找到二进制包,将执行常规(基于源)安装。 |
–usepkgonly (-K) | 类似 –usepkg (-k) ,但如果找不到二进制包,则失败。 |
–getbinpkg (-g) | 从远程二进制包主机下载二进制包。如果未找到二进制包,将执行常规(基于源)安装。 |
–getbinpkgonly (-G) | 类似于 –getbinpkg (-g) ,但如果无法下载二进制包,则会失败 |
1 | sudo emerge --ask media-video/mpv |
参考文章
Gentoo AMD64 Handbook - Gentoo Wiki
开始使用gentoo linux——gentoo安装笔记(上)
开始使用gentoo linux——gentoo安装笔记(下)
Gentoo安装流程分享(step by step),第二篇之KDE Plasma桌面的安装配置 - 知乎 (zhihu.com)
gentoo linux配置intel和nvidia双显卡电脑,使用prime方案 - 简书 (jianshu.com)
github https://github.com/astaxie/beego
优点:
缺点:
github https://github.com/labstack/echo
优点:
缺点:
官网 https://gin-gonic.github.io/gin
github https://github.com/gin-gonic/gin
优点:
缺点:
github https://github.com/kataras/iris
优点:
缺点: