安装Knative1Knative简介云计算容器化Contents安装Knative ........................................................................................... 1:使用使用插件安装:使用()安装(推荐)安装安装安装创建集群启用插件创建和配置默认的安装安装Hello World! .......................................................................................... 4(方式部署)是一个开源的平台,它实现了一套架构无关的系统。本文介绍其安装及入门使用。安装KnativeOption 1:使用Docker Desktop + minikube + quickstart体验时,首先需要在本机进行安装。基于以下的环境进行安装:之所以这样选择,是因为首先最为流行,(以及)是官方例子中推荐的选择,因此肯定是兼容的。之前更多时候我青睐于,因为是真正的的轻量级版本,但是因为有单独的网络层,在上安装时需要特别处理一下,考虑到复杂性还是用吧。必须要或者其他的运行时支持。# 先启动docker desktopminikube start启动时会下载一些镜像,因此如果没有翻墙很可能下载不了。另外有时候会出现卡死的情况,解决方式是,删掉重新来过:minikube deleterm -rf ~/.minkubeminikube start使用quickstart插件安装Knative支持一种叫的插件安装机制,可以比较方便的开启一个本地环境。完整的安装过程可以参考官方文档,仅列出安装的文件: 安装Knative2这些都需要加入到系统之中。然后运行安装:kn quickstart minikube这一步后还需要执行一个命令,并保证其始终运行(可以单独开一个窗口执行):minikube tunnel --profile knative安装成功后,应该可以能够列出minikube profile listOption 2:使用WSL2 + Docker(Linux) + minikube安装(推荐)使用有一个不好的地方是,容器不能直接在宿主机上访问,因此直接在中部署和是不能直接访问到的上的。所以直接在中安装和,这样可以更容易使用。安装Dockersudo apt-get updatesudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-releasesudo mkdir -m 0755 -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo service docker start注意默认不支持,因此只能使用方式启动和停止。 安装Knative3安装Kubectlsudo apt-get install -y apt-transport-httpssudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgecho "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get updatesudo apt-get install -y kubectl安装Minikube选择作为本地开发有以下优点:跨平台支持()默认支持的基本特性,如、、、等支持创建多个集群支持,对机器学习友好curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.debsudo dpkg -i minikube_latest_amd64.deb注意:依赖服务,必须启动起来。创建K8s集群minikube start -p kfaas-cluster \ --memory=8192 \ --cpus=6 \ --driver=docker \ --kubernetes-version=v1.25.6 \ --disk-size=50g \ --insecure-registry='10.0.0.0/24'启用Registry插件minikube -p kfaas-cluster addons enable registry创建和配置默认的Namespace至此,部署完成,可以创建一个用来进行开发测试用,并配置为默认的命名空间,例如:kubectl create namespace developkubectl config set-context --current --namespace=develop安装Knative定义是安装或者的依赖项,因此需要先安装。kubectl apply \ --filename https://github.com/knative/serving/releases/download/knative-v1.9.0/serving-crds.yaml \ --filename https://github.com/knative/eventing/releases/download/knative-v1.9.0/eventing-crds.yaml Hello World!4完成后,可以查看已经安装的版本,例如:kubectl api-resources --api-group='serving.knative.dev'其中,主要有以下一些组:安装kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.9.0/serving-core.yamlkubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.9.0/eventing-core.yamlkubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.9.0/in-memory-channel.yamlkubectl apply -f https://github.com/knative/eventing/releases/download/knative-v1.9.0/mt-channel-broker.yaml安装后,需耐心等待各个资源创建成功。kubectl get pods -n knative-servingkubectl get pods -n knative-eventing官方提供了的实现(目前已经)。kubectl apply -f https://github.com/knative-sandbox/net-kourier/releases/download/knative-v1.9.0/kourier.yamlkubectl patch configmap/config-network \ -n knative-serving \ --type merge \ -p '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'ksvc_domain="\"data\":{\""$(minikube -p kfaas-cluster ip)".nip.io\": \"\"}"kubectl patch configmap/config-domain \ -n knative-serving \ --type merge \ -p "{$ksvc_domain}"安装Knative CLIwget https://github.com/knative/client/releases/download/knative-v1.9.0/kn-linux-amd64sudo mv kn-linux-amd64 /usr/local/bin/knsudo chmod +x /usr/local/bin/knHello World!Knative Functions通过命令(或者)来创建一个,这里以为例:kn func create -l python helloworld Hello World!5cd helloworldkn func run这里运行时会提示提供一个名称,暂时可以随便输入一个即可。第一次运行需要进行构建,这个构建过程稍微会需要一点时间。运行后,会启动端口,可以在浏览器访问:Hello world(WSL+Minikube方式部署)kn service create helloworld-go --image gcr.io/knative-samples/helloworld-go访问:注意这里不能直接通过访问,需要使用的并设置。curl -H "Host: helloworld-go.develop.192.168.49.2.nip.io" http://192.168.49.2:32117参考: