Knative 快捷操作命令 Kn 介绍

原标题:Knative 快捷操作命令 Kn 介绍

简介: 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

作者:元毅

原文链接

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

责任编辑:

Thenews.cc