Flink on k8s 环境搭建(二)

 flink on k8s 实践

1、Helm安装

wget https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz

tar -zxvf helm-v3.11.2-linux-amd64.tar.gz

mv linux-amd64/helm /usr/local/bin/

helm安装好后,可以添加常用的helm源。

helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.3.1/

helm repo add stable http://mirror.azure.cn/kubernetes/charts

helm repo add bitnami https://charts.bitnami.com/bitnami

helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

2、安装cert-manager

下载 https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml

使用kubectl命令安装即可

kubectl apply -f cert-manager.yaml

 kubectl get all -n cert-manager

3、Flink Kubernetes Operator安装

 Flink Kubernetes Operator最简单直接的安装方式就是使用helm在线安装,命令如下:

helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.4.0/

helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator --namespace flink --create-namespace

helm -n flink ls -a

如果需要删除

helm -n flink delete flink-kubernetes-operator

kubectl get all -n flink -owide

helm list -n flink

 application 模式:

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment  # Flink集群在K8s的资源类型
metadata:
  name: basic-example  # 作业的名字
  namespace: flink        # 指定在flink命名空间下运行
spec:
  #image: flink:1.13.6      # Flink的镜像,改为使用1.13.6

   image: registry.cn-hangzhou.aliyuncs.com/cm_ns01/flink:1.14.6  
   flinkVersion: v1_14    # Flink的版本,与镜像版本保持一致
   flinkConfiguration:
     taskmanager.numberOfTaskSlots: "2"
   serviceAccount: flink
   jobManager:
     resource:
       memory: "1024m"
       cpu: 1
   taskManager:
     resource:
       memory: "1024m"
       cpu: 1
   job:
     jarURI: local:///opt/flink/flink-1.14.6/examples/streaming/StateMachineExample.jar  # Flink作业的启动类所在的Jar包路径
     parallelism: 2
     upgradeMode: stateless

kubectl apply -f basic.yaml 报错:

 kubectl delete -A ValidatingWebhookConfiguration flink-operator-flink-clusters-webhook-configuration

kubectl delete -A ValidatingWebhookConfiguration flink-operator-flink-webhook-configuration

kubectl apply -f basic.yaml

get all -n flink

kubectl get FlinkDeployment -n flink

停止作业

kubectl delete -f basic.yaml
kubectl delete FlinkDeployment basic-example -n flink

session 部署方式:

#Flink Session集群 源码请到 
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
  namespace: flink
  name: session-deployment-only
spec:
  image: flink:1.14.6
  flinkVersion: v1_14
  imagePullPolicy: IfNotPresent   # 镜像拉取策略,本地没有则从仓库拉取
  ingress:   # ingress配置,用于访问flink web页面
    template: "flink.k8s.io"
    className: "nginx"
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: "/"
  flinkConfiguration:
    taskmanager.numberOfTaskSlots: "36"
  serviceAccount: flink
  jobManager:
    replicas: 1
    resource:
      memory: "1024m"
      cpu: 1
  taskManager:
    replicas: 1
    resource:
      memory: "1024m"
      cpu: 1

kubectl apply -f session-deployment-only.yaml

kubectl delete -f session-deployment-only.yaml

查看日志:

kubectl get pod -n flink | grep session

查看镜像,没有本地镜像仓库,需要添加

 cat /etc/docker/daemon.json
{
   "registry-mirrors": ["http://hub-mirror.c.163.com"],
   "insecure-registries": ["http://192.168.1.249:8086","https://192.168.1.249:16443"]
}
systemctl daemon-reload

systemctl restart docker

打tag

docker tag flink14:latest  192.168.1.249:8086/bigdata/flink14:v1_14 

docker push 192.168.1.249:8086/bigdata/flink14:v1_14

有权限异常报错,需要登录下

docker login 192.168.1.249:8086

admin / Harbor12345

 再次push 成功

pull下验证

docker pull 192.168.1.249:8086/bigdata/flink14:v1_14

也需要到搭建的node上去执行下 docker pull

 

 kubectl get all -n flink

删除重装操作:

kubectl delete -f session-deployment-only.yaml

4、安装ingress

下载

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

mv deploy.yaml ingress-nginx-deploy.yaml

vim ingress-nginx-deploy.yaml

替换为国内的源 

将ingress-nginx-deploy.yaml文件中的镜像地址registry.k8s.io替换为 registry.lank8s.cn后再安装即可

kubectl apply -f ingress-nginx-deploy.yaml

kubectl get pods -n ingress-nginx

 kubectl get all -n ingress-nginx -owide

http://flink.k8s.io:32453/

与Dinky的配置

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
***s 上的部署方式有两种:Standalone 方式和 Native 方式。 1. Standalone 方式 Standalone 方式是 FlinkK8s 上最简单的部署方式,不需要对 Flink 做任何改动,同时 FlinkK8s 集群是无感知的,通过外部手段即可让 Flink 运行起来。具体操作可以参考 Standalone Session On K8s。 2. Native 方式 Native 方式是相对于 Flink 而言的,它可以借助 Flink 的命令就可以达到自治的一个状态,不需要引入外部工具就可以通过 Flink 完成任务在 K8s 上的运行。具体操作如下: - 资源申请方式:Flink 的 Client 内置了一个 K8s Client,可以借助 K8s Client 去创建 JobManager,当 Job 提交之后,如果对资源有需求,JobManager 会向 Flink 自己的 ResourceManager 去申请资源。这个时候 Flink 的 ResourceManager 会直接跟 K8s 的 API Server 通信,将这些请求资源直接下发给 K8s Cluster,告诉它需要多少个 TaskManger,每个 TaskManager 多大。当任务运行完之后,它也会告诉 K8s Cluster 释放没有使用的资源。 - 具体操作:可以使用 Flink 提供的 kubernetes-session.sh 脚本来启动一个 Flink Session Cluster。例如: ```shell ./bin/kubernetes-session.sh \ -Dkubernetes.cluster-id=my-first-flink-cluster \ -Dkubernetes.container.image=flink:1.11.2 \ -Dkubernetes.jobmanager.cpu=1 \ -Dkubernetes.taskmanager.cpu=1 \ -Dkubernetes.rest-service.exposed.type=NodePort \ start ``` 以上命令会启动一个名为 my-first-flink-cluster 的 Flink Session Cluster,使用的镜像为 flink:1.11.2,JobManager 和 TaskManager 的 CPU 都为 1,同时将 Flink 的 REST API 暴露在 NodePort 上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值