简介: kn 是 Knative 命令行操作客户端。 通过 kn 可以方便的操作Knative 相关的资源。

安装 Kn

可以通过官方获取对应的 Kn 二进制

• macOS

• Linux

• Windows

kn 会与 kubectl 使用同样的config 文件,默认使用 $HOME/.kube/config

服务管理

使用 Kn 命令可以执行: list, create, delete, apply, 和 update 操作Knative services.

创建服务

使用 create 命令:

kn service create

示例:$ kn service create helloworld-go –env TARGET=knative –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 yuncs.com/knative-sample/helloworld-go:73fbdd56 Creating service helloworld-go in namespace default: 0.116s The Route is still working to reflect the latest desired specification. 0.216s Configuration “helloworld-go” is waiting for a Revision to become ready. 3.075s … 3.149s Ingress has not yet been reconciled. 3.299s … 3.762s Ready to serve. Service helloworld-go created to latest revision helloworld-go-pyqqz-1 is available at URL: http://helloworld-go.default.example.com

使用 apply 命令:

kn service apply

示例:# Create an initial service with using kn service apply, if the service has not # been already created kn service apply s0 –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Apply the service again which is a no-operation if none of the options changed kn service apply s0 –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Add an environment variable to your service. Note, that you have to always fully # specify all parameters (in contrast to kn service update) kn service apply s0 –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 –env TARGET=knative # Read the service declaration from a file kn service apply s0 –filename my-svc.yml

查看服务

查询服务列表示例:

kn service list NAME URL LATEST AGE CONDITIONS READY REASON helloworld-go http://helloworld-go.default.example.com helloworld-go-pyqqz-1 55s 3 OK / 3 True

查询服务详情示例:

kn service describe helloworld-go Name: helloworld-go Namespace: default Age: 14m URL: http://helloworld-go.default.example.com Revisions: 100% @latest (helloworld-go-cvclp-2) [2](9m) Image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 (pinned to 032b80) Conditions: OK TYPE AGE REASON ++ Ready 9m ++ ConfigurationsReady 9m ++ RoutesReady 9m

或者以 yaml 方式展示详情:

$ kn service describe helloworld-go -oyaml apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: serving.knative.dev/creator: 1041208914252405-1606806762 serving.knative.dev/lastModifier: 1041208914252405-1606806762 creationTimestamp: “2020-12-09T06:07:41Z” generation: 2 name: helloworld-go namespace: default resourceVersion: “39555635” selfLink: /apis/serving.knative.dev/v1/namespaces/default/services/helloworld-go uid: 763e8214-7c2d-476c-bd88-40b32a30597d spec: template: metadata: annotations: client.knative.dev/user-image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 creationTimestamp: null name: helloworld-go-cvclp-2 spec: containerConcurrency: 0 containers: env: name: TARGET value: knative image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 name: user-container readinessProbe: successThreshold: 1 tcpSocket: port: 0 resources: {} timeoutSeconds: 300 traffic: latestRevision: true percent: 100 status: address: url: http://helloworld-go.default.svc.cluster.local conditions: lastTransitionTime: “2020-12-09T06:13:33Z” status: “True” type: ConfigurationsReady lastTransitionTime: “2020-12-09T06:13:34Z” status: “True” type: Ready lastTransitionTime: “2020-12-09T06:13:34Z” status: “True” type: RoutesReady latestCreatedRevisionName: helloworld-go-cvclp-2 latestReadyRevisionName: helloworld-go-cvclp-2 observedGeneration: 2 traffic: latestRevision: true percent: 100 revisionName: helloworld-go-cvclp-2 url: http://helloworld-go.default.example.com

更新服务(创建新版本)

使用 update 命令:

kn service update NAME

示例:$ kn service update helloworld-go –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 Updating Service helloworld-go in namespace default: 3.609s Traffic is not yet migrated to the latest revision. 3.631s Ingress has not yet been reconciled. 4.066s Ready to serve. Service helloworld-go updated to latest revision helloworld-go-cvclp-2 is available at URL: http://helloworld-go.default.example.com

使用 apply 也可进行更新服务

kn service apply # Add an environment variable to your service. Note, that you have to always fully # specify all parameters (in contrast to kn service update) kn service apply s0 –image registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 –env TARGET=knative

删除服务

示例:

kn service delete helloworld-go

版本管理

查看版本

kn revision list NAME SERVICE TRAFFIC TAGS GENERATION AGE CONDITIONS READY REASON helloworld-go-cvclp-2 helloworld-go 100% 2 40s 4 OK / 4 True helloworld-go-pyqqz-1 helloworld-go 1 6m29s 3 OK / 4 True

查看版本详情

$ kn revision describe helloworld-go-cvclp-2 Name: helloworld-go-cvclp-2 Namespace: default Age: 3m Image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4dc8 (pinned to 032b80) Env: TARGET=knative Service: helloworld-go Conditions: OK TYPE AGE REASON ++ Ready 3m ++ ContainerHealthy 3m ++ ResourcesAvailable 3m I Active 2m NoTraffic

删除版本

$ kn revision delete helloworld-go-pyqqz-1 Revision helloworld-go-pyqqz-1 deleted in namespace default.

其它

除了上面介绍的 service、revision。 Kn 还支持如下的资源操作, 有兴趣的可以自己试用一下。

• kn broker – 管理事件 brokers

• kn channel – 管理事件 channels

• kn route – 管理服务路由 routes

• kn source – 管理事件源 sources

• kn trigger – 管理事件 triggers

作者:元毅

本文为阿里云原创内容,未经允许不得转载

声明:本站为非盈利性赞助网站,本站所有软件来自互联网,版权属原著所有,如有需要请购买正版。如有侵权,敬请来信联系我们,我们立即删除。