很早就开始接触了k8s
各种安装方式都折腾了很久, 到头来也很少实际的去用.
最近重拾k8s, 使用k3s来些实际的应用.
- 系统: Ubuntu 20.04 LTS
- 硬件: 树莓派4b 2G版
准备工作
打开cgroup
在/boot/firmware/cmdline.txt 中console前面添加cgroup_enable=memory cgroup_memory=1 然后重启生效
安装docker
这里我们使用docker做为后端.
sudo apt update sudo apt install docker.io
安装k3s
k3s 的安装很简单, 一个命令就可以搞定
# 这里我们把脚本下载下来方便下次重新配置
curl -o k3s.sh https://get.k3s.io
sudo ./k3s.sh --docker --resolv-conf /var/run/systemd/resolve/resolv.conf
查看k3s状态
拉取image会需要点时间,等待片刻等所有pods都ready, 就可以了.
sudo kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7448499f4d-k2tst 1/1 Running 0 22h
kube-system metrics-server-86cbb8457f-2dztq 1/1 Running 0 22h
kube-system helm-install-traefik-crd-ns8mj 0/1 Completed 0 22h
kube-system helm-install-traefik-nldqp 0/1 Completed 2 22h
kube-system traefik-6b84f7cbc-4bwcd 1/1 Running 0 22h
kube-system svclb-traefik-q97hs 2/2 Running 0 22h
kube-system local-path-provisioner-5ff76fc89d-fjcgz 1/1 Running 1 22h
安装配置Helm
curl -o helm-v3.7.2-linux-arm64.tar.gz https://get.helm.sh/helm-v3.7.2-linux-arm64.tar.gz
tar xvf helm-v3.7.2-linux-arm64.tar.gz
sudo cp linux-arm64/helm /usr/local/bin/
# 配置下helm认证
sudo cp /etc/rancher/k3s/k3s.yaml .kube/config
sudo chown $USER. .kube/config
# 查看已经安装的helm chart
helm ls -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
traefik kube-system 1 2021-12-13 13:50:48.900055461 +0000 UTC deployed traefik-9.18.201 2.4.8
traefik-crd kube-system 1 2021-12-13 13:50:27.247206569 +0000 UTC deployed traefik-crd-9.18.201
安装Aliyun-ddns
花了点时间把之前做的aliyun-ddns打包成了helm chart.
helm repo add oncloudops https://helm.oncloudops.com/
tee config.yaml <<EOF
# config.yaml
# 阿里云 Access Key ID
access_key_id: "FFFFFFFFFF"
# 阿里云 Access Key Secret
access_key_secret: "FFFFFFFFFF"
# 阿里云 一级域名
rc_domain: "example.com"
# 解析记录
rc_rr_list: "foo,bar"
EOF
helm install my-aliyun-ddns oncloudops/aliyun-ddns -f config.yaml
export POD_NAME=$(sudo kubectl get pods --namespace default -l "app.kubernetes.io/name=aliyun-ddns,app.kubernetes.io/instance=my-aliyun-ddns" -o jsonpath="{.items[0].metadata.name}")
# 手动更新DDNS
sudo kubectl -n default exec -t -i $POD_NAME -- /app/aliyun-ddns.py
已知问题
coredns有时会无法解析上游地址
可以通过手动指定上游DNS地址来解决问题
重启k3s服务配置会丢失,需要重新配置下
sudo vim /var/lib/rancher/k3s/server/manifests/coredns.yaml # 第70行 forward . 8.8.8.8
如果你已经安装Nginx服务, k3s会劫持80和443端口到traefik
可以通过下面的方式更改traefik的端口
sudo kubectl -n kube-system edit svc traefik # 第32行 port: 8080 # 第37行 port: 8443
参考:
- https://k3s.io
- https://helm.oncloudops.com