測試發現k3s使用一年後出現https tls hand error的問題,重新生成證書也不行,只能通過源碼編譯修重新安裝k3s
環境: ubuntu 16.04
docker 18.06.3
一、安裝git(默認應該已經安裝如果沒有請執行下面的命令)
sudo apt install -y git
二、clone源碼,並切換分支(我這裏用的是v1.0.1的版本)
git clone https://github.com/rancher/k3s.git
cd k3s
git checkout -b v1.0.1
三、修改源碼中證書的部分
主要是3個文件,修改如圖
1.第一個文件
vendor/github.com/rancher/dynamiclistener/cert/cert.go
官方下面雖然修正了100年但是好像沒說效果
2.第二個文件 vendor/github.com/rancher/dynamiclistener/factory/cert_utils.go
3.第3個文件 scripts/version.sh ,因爲會校驗文件sha值,註釋4-7行
四、編譯(確保可以聯網,因爲是用docker編譯的)
1.安裝make
apt install -y make
2.直接執行make命令,編譯時間比較長請耐心等待
3.完成都的文件在dist/artifacts
五、驗證
重新安裝k3s(安裝部分請參考k3s安裝),如果用的官方的離線包這裏有個小bug 需要tag一下image
docker tag k8s.gcr.io/pause:3.1 rancher/pause:3.1
驗證的結果
至此可以安心用100年了,不用每年都去升級,當然建議和官方一樣每年升級一次,畢竟漏洞比較多