Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

2021.4.2-4.11期间任务通关奖励

任务完成后,您可以领取如下各种奖励:

1、您可以领取“阿里云20元抵用券”共计1500张,每天限领150张。

2、CNCF官方“Kubernetes”指尖陀螺一个加减压握力圈一个,共计1000套,每天200套。

3、 幸运转盘锦鲤抽奖,礼品范围机械键盘、阿里云定制水杯、无线充电线、台灯, 共计16个。

领取地址:https://developer.aliyun.com/adc/series/ask

必读说明

按照操作文档,完成部署任务,会消耗一定的云资源,并产生费用,包括容器服务集群ASK及Kafka实例所需资源费用。

  • 消息服务Kafka: 1个5元月包
  • 容器服务ASK集群: 集群底层计算资源ECI弹性容器实例(4c8g左右)、集群APIserver的内网SLB、集群拉取公网镜像需要的NAT网关实例费与流量费用
  • 应用对外暴露公网访问:1个内网SLB 与 1个公网EIP

以1小时的推荐体验时长为例,预计消耗6-7元。(消息队列Kafka 5元包 可按量付费)

创建ASK集群

1.打开容器服务控制台,开始创建ASK集群
https://cs.console.aliyun.com/#/k8s/cluster/createV2/serverless

2.填写配置并创建集群
建议选择深圳region,并且请记住后续资源开通均选择此region,并注意下图红框中的配置一致;否则无法部署本实验应用、或代金券额度不足无法进行。

备注:

1 此项需要您的账号有100元余额,否则无法通过。

2 如果您已经有可用Kafka实例,此处可选择与Kafka实例对应region。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

创建集群参考图

点击右侧的“创建集群”按钮,页面呈现三列检查项目,依次通过即可创建集群。

备注:如果您出现“not authorized to create an enhanced NAT gateway”的集群创建失败提示,请重新再创建一次。

3.在ASK中部署容器的Eventing

集群创建完毕后,出现在控制台左侧导航栏中。单击新建集群名,进入集群管理更多。

a.在集群管理页左侧导航栏中,选择应用 > Knative。
b.在组件管理页签核心组件区域单击Eventing操作列的部署。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

Knative组件Eventing部署参考图

4.在ASK集群中安装Kafka Source
a.在集群管理页左侧导航栏中,选择应用 > Knative。
b.在组件管理页签add-on 组件区域单击Kafka操作列的部署。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

在容器集群中加入Kafka组件部署参考图

5.记录ASK集群网络资源,据此信息部署Kafka
您需要根据ASK集群的虚拟专有网络VPC、节点虚拟机VSwitch,相应地部署Kafka实例。

点击左侧目录集群信息》集群资源,找到对应的VSwitch ID和VPC ID,您可以保持此窗口。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

购买Kafka实例

新开一个浏览器窗口,输入https://common-buy.aliyun.com/?commodityCode=alikafka_pre

1.开通kafka 5元包
选择 「流量规格:alikafka.hw.test」 , 「实例类型:VPC实例」,「磁盘类型:高效云盘」。 即可获得1个月5元的Kafka资源包。同时,建议选择深圳region,务必与前面ASK集群在同一个region。

备注:此款优惠价格仅限于Kafka新客户,如果您已经拥有了Kafka实例可以复用已有资源,或者直接购买按量实例。

2.部署实例
a.在消息队列Kafka版控制台的实例列表页面,找到未部署的实例,单击部署。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
Kafka实例部署参考图

b.在部署对话框,部署实例。

从VPC ID列表,选择上述ASK集群的VPC ID。
从VSwitch ID列表,选择上述ASK集群的VSwitch ID。选择VSwitch ID后,系统会为您自动选择该交换机所在的可用区。
可选:如果实例的规格类型为专业版,您可以选择是否跨可用区部署。跨可用区部署具备较高的容灾能力,可以抵御机房级别的故障。
单击部署。
c.实例进入部署中状态。实例部署预计需要10分钟~30分钟。

3.创建Topic
创建topic,请命名demo。「不建议修改,这样可以直接复用后面yaml」

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
4.创建Consumer Group
创建Consumer Group,请命名demo-consumer。「不建议修改,这样可以直接复用后面yaml」

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
5.为Kafka添加白名单
点击实例 》 选择灰色目录安全配置 》安全变更 》 添加白名单IP 》 输入0.0.0.0/0 确定添加

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
6.保存本Kafka实例默认接入点
a.在消息队列Kafka版控制台的实例列表页面,单击目标实例名称。
b.在实例详情页面的基本信息区域,查看实例的默认接入点。
在实例详情中可以看到该信息,选择蓝色复制按钮,暂存Kafka默认接入点,建议可以暂时存到本地某个txt文件中。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

通过模版文件(yaml)部署弹幕相关应用服务

将下面yaml的两处 KAFKA_SOURCE_LIST 替换成上步中获取到的Kaka「默认接入点」。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: danmu-portal
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/maxScale: "1"
        autoscaling.knative.dev/minScale: "1"
    spec:
      containerConcurrency: 0
      serviceAccountName: danmu-install-sa
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/danmu:v1.1
        name: user-container
        env:
        - name: KAFKA_SERVER
          value: "__KAFKA_SOURCE_LIST__"
        - name: KAFKA_TOPIC
          value: "demo"
        ports:
        - containerPort: 8080
          name: http1
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: danmu-message
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/maxScale: "10"
        autoscaling.knative.dev/minScale: "1"
    spec:
      containerConcurrency: 2
      containers:
      - args:
        - /manager
        - --url=http://danmu-portal.default.svc.cluster.local/api/send
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: registry.cn-hangzhou.aliyuncs.com/knative-sample/danmu-manager:danmu_48680a04-20210319171906
        name: user-container
        ports:
        - containerPort: 8000
          name: http1
---
apiVersion: sources.knative.dev/v1alpha1
kind: KafkaSource
metadata:
  annotations:
    k8s.aliyun.com/req-timeout: "60"
    k8s.aliyun.com/retry-count: "1"
    k8s.aliyun.com/retry-interval: "2"
  name: kafka-danmu
  namespace: default
spec:
  bootstrapServers: "__KAFKA_SOURCE_LIST__"
  consumerGroup: demo-consumer
  sink:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: danmu-message
      namespace: default
  topics: demo
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: danmu-install
  labels:
    app: danmu
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list"]

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: danmu-install-role-binding
  labels:
    app: danmu
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: danmu-install
subjects:
  - kind: ServiceAccount
    name: danmu-install-sa
    namespace: default

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: danmu-install-sa
  namespace: default
  labels:
    app: danmu

返回到容器服务控制台, 找到此前的集群并开始部署。

在集群管理页左侧导航栏中,选择应用 > Knative > 服务管理。
在服务管理页单击使用模版创建,贴入yaml文件,并且把这个 yaml 中的两个 KAFKA_SOURCE_LIST 替换成 kafka 「默认接入点」。
将资源请部署到 default 命名空间。

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
最后成功检查示例图

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励

绑定域名并开始体验

1.找到ASK集群中Knative的访问网关,用于下一步绑定域名
在Knative对应组件管理页面,复制访问网关地址

Kubernetes + Knative :玩转云上弹幕部署 获取通关奖励
2.添加 host 绑定
a.Linux 和 Mac 编辑/etc/hosts 文件,在最后添加一行,将对应的“47.95.xx.xx”更换成上步获取到的「访问网关地址」

```sudo vim /etc/hosts
47.95.xx.xx danmu-portal.default.example.com


b.Windows

直接在 C:\WINDOWS\system32\drivers\etc 目录的 HOSTS 文件最后添加一行 47.95.139.xx danmu-portal.default.example.com 即可。具体操作方法参见:https://yq.aliyun.com/articles/706009

c.如果如果有公网域名,也可以绑定

最后,恭喜通关!!开始体验吧!!
在浏览器输入“http://danmu-portal.default.example.com/”开始体验吧

![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5e5eae3c67a04165a57a9f06fd41c724~tplv-k3u1fbpfcp-watermark.image)
## 删除所有资源
1.先删除容器集群中的应用、组件以及集群。
a、先删除Knative中的“服务管理“,列表中有刚刚通过yaml部署的两个服务。

b、随后Knative中的“组建管理”,一键卸载Kantive及相关组建。

c、前往集群的 工作负载》无状态 》 选择“所有命名空间” ,此时应该仅剩唯一的“kafkasource-kafka-danmu***”一项,点击最右端的“更多”》删除。

d、前往集群的容器组》选择“所有命名空间” ,此时应该仅剩唯一的“storage-version-migration-eventing-eventing**”一项,点击最右端的删除。

5、在确认上述四个页面都已经删除完毕后,您现在ASK集群即为空集群,可以进行删除。返回集群列表,对实验集群进行删除。找到对应集群,点击最右端的“更多”》 “查看更多 ”「选择保留集群中的VPC和虚拟交换机」删除。

![image.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/915cef6b27c546519099f84bad669997~tplv-k3u1fbpfcp-watermark.image)
说明:VPC和虚拟交换机是免费资源, 此资源中有Kafka实例,出于使用安全考虑,容器不会删除这两个免费的网络资源。

![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a877a8a04f00482a8fbde4b311c69578~tplv-k3u1fbpfcp-watermark.image)

2.删除Kafka资源包
如果您按照前序步骤购买的是5元实例且没有选择自动续费,该实例资源在一个月后自动失效并且不会再产生费用。 您可以继续体验该产品,如果非常希望删除可提交工单。

3.再次确认本实验所有付费资源均已删除,不再产生费用
ASK控制台,确定并无集群 https://cs.console.aliyun.com/#/k8s/ask/list

ECI控制台,切换到此前使用region,确定并无ECI资源  https://eci.console.aliyun.com/

NAT控制台,切换到此前使用region,确定并无NAT资源 https://vpc.console.aliyun.com/nat

SLB控制台,切换到此前使用region,确定并无SLB资源  https://slb.console.aliyun.com/slb

EIP控制台,切换到此前使用region,确定并无EIP资源 https://vpc.console.aliyun.com/eip

Kafka控制台,切换到此前使用region,确定并无Kafka资源 https://kafka.console.aliyun.com/
上一篇:Kvative实现蓝绿部署和弹性伸缩:Knative在OpenShift上的实践2


下一篇:Knative 快捷操作命令 Kn 介绍