1。安裝kubeadm
版本一定要是1.26
1.25的kubelet有bug
早于1.23的版本無法編譯kanative
(都是血淚教訓嗚嗚嗚
https://blog.csdn.net/yudaxiaye/article/details/126919267
sudo apt install -y apt-transport-https ca-certificates curl
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt update
sudo apt install -y kubeadm=1.26.1-00 kubelet=1.26.1-00 kubectl=1.26.1-00
2。安裝運作時(1.23後docker不是預設的了,我這裡裝了containerd
containerd安裝腳本我寫好了(python)
需要提前把幾個安裝包準備好:
cni,containerd,runc,containerd.service
import subprocess
import os
import shutil
def copy_file():
shutil.copy('檔案的名字', '複制的路徑位置')
def runcmd(cmd):
ret=subprocess.run(cmd.split(" "))
if ret.returncode==0:
print(">>> ",cmd," succ \n")
else:
print(">>> ",cmd," fail ",ret,"\n")
def trydo(cb):
try:
cb()
finally:
print("")
trydo(
lambda:runcmd("tar Cxzvf /usr/local containerd-1.6.15-linux-amd64.tar.gz")
)
shutil.copy("./containerd.service","/etc/systemd/system")
runcmd("systemctl daemon-reload")
runcmd("systemctl enable --now containerd")
runcmd("install -m 755 runc.amd64 /usr/local/sbin/runc")
runcmd("mkdir -p /opt/cni/bin")
trydo(
lambda:runcmd("tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.2.0.tgz")
)
3。建立叢集
首先需要有個配置檔案
關鍵的幾個地方:
advertiseAddress //專門用來通路的ip,可以是本地,外網,zerotier
imageRepository //國内通路需要代理鏡像
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.193.3
bindPort: 6443
nodeRegistration:
# criSocket: /var/run/dockershim.sock
imagePullPolicy: IfNotPresent
name: MasterNode
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.26.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
4.knative 開發環境安裝
部署完照着knative步驟做就行了
https://github.com/knative/serving/blob/main/DEVELOPMENT.md
需要.ko.yaml 修改成 defaultBaseImage: docker.io/ubuntu
go語言版本1.19 需要設定環境變量:GOFLAGS=-buildvcs=false
具體見:https://github.com/knative/serving/discussions/13647#discussioncomment-4778471