买了一台R720,具体硬件上的安装部署可能后面会单独出一期

前置工作

用了以下脚本来控制风扇噪音

https://github.com/qwqVictor/fancontrol

这样可以在达到某个温度的时候交由自动控制

然后我选择通过这个项目实现DDNS

NewFuture/DDNS: 自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM…) (github.com)

我是在DNSPOD上面购买的域名,api密钥要选择DNSPod Token而不是腾讯云api密钥

ps:可以通过这个命令获得当前ipmi的ipv6地址

ipmitool -I lanplus -H {ip} -U {user} -P {password} lan6 print | grep -v '::/' | grep -B 4 'active' | grep -A 3 'Address 0' | grep ss: | rev | cut -d ' ' -f 1 | rev | cut -d '/' -f 1

然后是同步时间/时区

ntpdate -u ntp.sjtu.edu.cn
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

kubernetes基础结构

用sealos进行简单的k8s安装

sealos init \
	--master 192.168.1.100  \
	--node 192.168.1.101 \
	--pkg-url /root/kube1.22.0.tar.gz \
	--pk /root/maoserver \
	--version v1.22.0

安装helm

打开ipv6的支持

这一步被折磨惨了,打算新开一篇来单独讲讲,其实已经装到traefik才发现遗漏了这一步,各种试水导致了k8s的第二次安装

允许master部署pod

kubectl taint nodes k8s-master node-role.kubernetes.io/master-

安装longhorn

当然这些弄完之后就可以跑步进入traefik环节了(尽管之中经历了例如掉盘之类的事件,然后换根sata线又莫名其妙的好了)

traefik 这里我们要做一些端口上的改动,因为电信封了80 443

根据values文件我们创建以下yaml替换values值

deployment:
  kind: DaemonSet
ports:
  web:
    nodePort: 30080
  websecure:
    nodePort: 30443 
service:
  ipFamilyPolicy: PreferDualStack

执行如下安装:

helm repo add traefik https://helm.traefik.io/traefik
helm repo update
helm install traefik traefik/traefik -f traefik-values.yaml --namespace=traefik-v2 --create-namespace

之后安装kubesphere

最后安装一下tls

因为在腾讯云注册的域名,所以相对最点点点的方式就是直接拿腾讯云的免费证书了(虽然不能泛域名解析

kubectl create secret tls tls-secret --key tls.key --cert tls.crt -n  {namespace}

之后 ingressroute 的模板:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: name
  namespace: namespace
spec:
  entryPoints:
    - websecure
  routes:
  - match: Host(`foo.com`)
    kind: Rule
    services:
    - name: name
      port: 80
  tls:
    secretName: tls-secret