运行 Knative Serving demo 应用
创建 ns
# kubectl create ns knative-demo
namespace/knative-demo created
创建应用
hello-world.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: helloworld-go
namespace: knative-demo
spec:
template:
spec:
containers:
- image: ghcr.dockerproxy.com/knative/helloworld-go:latest
env:
- name: TARGET
value: "Go Sample v1"
创建资源
# kubectl apply -f hello-word.yaml
service.serving.knative.dev/hello created
查看资源
查看 Pod
# kubectl get svc,deployment,pods -n knative-demo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/helloworld-go ExternalName <none> knative-local-gateway.istio-system.svc.wgs.local 80/TCP 46s
service/helloworld-go-00001 ClusterIP 10.100.172.219 <none> 80/TCP,443/TCP 47s
service/helloworld-go-00001-private ClusterIP 10.100.7.170 <none> 80/TCP,443/TCP,9090/TCP,9091/TCP,8022/TCP,8012/TCP 48s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/helloworld-go-00001-deployment 1/1 1 1 48s
NAME READY STATUS RESTARTS AGE
pod/helloworld-go-00001-deployment-5c44fdc68-njv7n 2/2 Running 0 48s
查看 configuration
# kubectl get configurations -n knative-demo
NAME LATESTCREATED LATESTREADY READY REASON
helloworld-go helloworld-go-00001 helloworld-go-00001 True
查看 revision
# kubectl get revisions -n knative-demo
NAME CONFIG NAME K8S SERVICE NAME GENERATION READY REASON ACTUAL REPLICAS DESIRED REPLICAS
helloworld-go-00001 helloworld-go 1 True 0 0
查看 kpa
# kubectl get kpa -n knative-demo
NAME DESIREDSCALE ACTUALSCALE READY REASON
helloworld-go-00001 0 0 False NoTraffic
查看 route
# kubectl get rt -n knative-demo
NAME URL READY REASON
helloworld-go http://helloworld-go.knative-demo.svc.wgs.local True
查看pods 为0时的后端地址
# kubectl describe svc helloworld-go-00001 -n knative-demo
Name: helloworld-go-00001
Namespace: knative-demo
Labels: app=helloworld-go-00001
networking.internal.knative.dev/serverlessservice=helloworld-go-00001
networking.internal.knative.dev/serviceType=Public
serving.knative.dev/configuration=helloworld-go
serving.knative.dev/configurationGeneration=1
serving.knative.dev/configurationUID=2260454d-f6a2-476f-b290-5355ecdad002
serving.knative.dev/revision=helloworld-go-00001
serving.knative.dev/revisionUID=4b8e3a5a-c1b0-42dc-b04c-99434084b427
serving.knative.dev/service=helloworld-go
serving.knative.dev/serviceUID=a0801880-c5fc-4544-ab81-1226a3f35ca9
Annotations: autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
serving.knative.dev/creator: admin
Selector: <none>
Type: ClusterIP
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.100.172.219
IPs: 10.100.172.219
Port: http 80/TCP
TargetPort: 8012/TCP
Endpoints: 172.20.154.221:8012 # activator pod地址
Port: https 443/TCP
TargetPort: 8112/TCP
Endpoints: 172.20.154.221:8112
Session Affinity: None
Events: <none>
查看 ingress 地址
# kubectl --namespace istio-system get service istio-ingressgateway
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.100.132.184 192.168.174.249 15021:31063/TCP,80:56051/TCP,443:33148/TCP 40m
查看 istio ingress 路由信息
# istioctl proxy-config all istio-ingressgateway-568ffb9976-lk455 -n istio-system |grep helloworld-go
helloworld-go-00001-private.knative-demo.svc.wgs.local 80 - outbound EDS
helloworld-go-00001-private.knative-demo.svc.wgs.local 443 - outbound EDS
helloworld-go-00001-private.knative-demo.svc.wgs.local 8012 - outbound EDS
helloworld-go-00001-private.knative-demo.svc.wgs.local 8022 - outbound EDS
helloworld-go-00001-private.knative-demo.svc.wgs.local 9090 - outbound EDS
helloworld-go-00001-private.knative-demo.svc.wgs.local 9091 - outbound EDS
helloworld-go-00001.knative-demo.svc.wgs.local 80 - outbound EDS
helloworld-go-00001.knative-demo.svc.wgs.local 443 - outbound EDS
helloworld-go.knative-demo.svc.wgs.local 80 - outbound STRICT_DNS
http.8081 helloworld-go.knative-demo.svc.wgs.local:8081 helloworld-go.knative-demo.svc.wgs.local, helloworld-go.knative-demo.wgs.com + 1 more... /* helloworld-go-ingress.knative-demo
http.8081 helloworld-go.knative-demo.svc.wgs.local:8081 helloworld-go.knative-demo.svc.wgs.local, helloworld-go.knative-demo.wgs.com + 1 more... /* helloworld-go-ingress.knative-demo
http.8080 helloworld-go.knative-demo.svc.wgs.local:80 helloworld-go.knative-demo.svc.wgs.local, helloworld-go.knative-demo.wgs.com + 1 more... /* helloworld-go-ingress.knative-demo
http.8080 helloworld-go.knative-demo.svc.wgs.local:80 helloworld-go.knative-demo.svc.wgs.local, helloworld-go.knative-demo.wgs.com + 1 more... /* helloworld-go-ingress.knative-demo
集群内部访问应用
创建测试 pod
# kubectl run client --image=ikubernetes/admin-box -it --rm --restart=Never --command -n default -- /bin/bash
If you don't see a command prompt, try pressing enter.
root@client /#
内部访问应用
# curl http://helloworld-go.knative-demo.svc.wgs.local
Hello Go Sample v1!
集群外部访问应用
设置 DNS
# kubectl patch configmap/config-domain --namespace knative-serving --type merge --patch '{"data":{"wgs.com":""}}'
查看 rt
# kubectl get rt -n knative-demo
NAME URL READY REASON
helloworld-go http://helloworld-go.knative-demo.wgs.com True
外部访问应用
# curl -H "Host: helloworld-go.knative-demo.wgs.com" http://192.168.174.249
Hello Go Sample v1!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律