Flink on k8s 入门实战

news/2024/10/20 0:00:09/

Flink on k8s 入门实战

背景

最近一直在学习flink on k8s,踩了不少坑,折腾了好几天,终于是达到了自己想要的效果。

首先说一下,我要实现的效果是什么?Application模式下,ip和端口保持不变,根据不同的路径访问不同的任务。

环境部署

这一步也是我遇到问题最多的一步,最开始尝试用我的mac本用minicube来部署k8s集群,但是后来有docker对mac做了网络上的限制,导致无法通过容器ip直接访问,所以后来就放弃,具体原因可以查看 https://blog.csdn.net/b5wang/article/details/119082508

然后我就用windows系统,装了一个linux带图形化的虚拟机,经过一系列折腾后,终于是实现了。下面是具体的步骤

minicube安装

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

k8s安装

加上这个配置 --image-mirror-country=‘cn’ ,可以使用国内的镜像

minikube start --kubernetes-version=v1.25.3 --image-mirror-country='cn'curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
mv kubectl /usr/local/bin/

helm安装

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

k8s 中的 ingress 安装

这一步很重要
deploy.yaml

apiVersion: v1
kind: Namespace
metadata:labels:app.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxname: ingress-nginx
---
apiVersion: v1
automountServiceAccountToken: true
kind: ServiceAccount
metadata:labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.7.0name: ingress-nginxnamespace: ingress-nginx
---
apiVersion: v1
kind: ServiceAccount
metadata:labels:app.kubernetes.io/component: admission-webhookapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.7.0name: ingress-nginx-admissionnamespace: ingress-nginx
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.7.0name: ingress-nginxnamespace: ingress-nginx
rules:
- apiGroups:- ""resources:- namespacesverbs:- get
- apiGroups:- ""resources:- configmaps- pods- secrets- endpointsverbs:- get- list- watch
- apiGroups:- ""resources:- servicesverbs:- get- list- watch
- apiGroups:- networking.k8s.ioresources:- ingressesverbs:- get- list- watch
- apiGroups:- networking.k8s.ioresources:- ingresses/statusverbs:- update
- apiGroups:- networking.k8s.ioresources:- ingressclassesverbs:- get- list- watch
- apiGroups:- coordination.k8s.ioresourceNames:- ingress-nginx-leaderresources:- leasesverbs:- get- update
- apiGroups:- coordination.k8s.ioresources:- leasesverbs:- create
- apiGroups:- ""resources:- eventsverbs:- create- patch
- apiGroups:- discovery.k8s.ioresources:- endpointslicesverbs:- list- watch- get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:labels:app.kubernetes.io/component: admission-webhookapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.7.0name: ingress-nginx-admissionnamespace: ingress-nginx
rules:
- apiGroups:- ""resources:- secretsverbs:- get- create
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:app.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.7.0name: ingress-nginx
rules:
- apiGroups

http://www.ppmy.cn/news/1449726.html

相关文章

[C++]22:C++11_part_one

C11 一.列表初始化:1.{}初始化:2.C11扩大了列表初始化的范围:3.std::initializer_list1.简单类型的列表初始化:2.复杂类型的列表初始化3.实现vector的列表初始化4.实现list的列表初始化:5.不支持列表初始化&#xff1a…

OceanBase开发者大会实录-陈文光:AI时代需要怎样的数据处理技术?

本文来自2024 OceanBase开发者大会,清华大学教授、蚂蚁技术研究院院长陈文光的演讲实录—《AI 时代的数据处理技术》。完整视频回看,请点击这里>> 大家好,我是清华大学、蚂蚁技术研究院陈文光,今天为大家带来《AI 时…

Vue.js最佳实践和性能优化技巧

Vue.js 是一个流行的前端 JavaScript 框架,用于构建用户界面和单页面应用(SPA)。为了确保你的 Vue 应用运行得更快、更有效率,以下是一些最佳实践和性能优化技巧: ### 1. 组件设计最佳实践 - **合理拆分组件**&#x…

网络安全之WebShell截获

不知道这是哪个大哥的手笔有没有认领的20240424十一点四十分左右 大哥计算机的具体信息贴上了,还好大哥没有put成功,返回405! IP地址 31.49.67.43:36668 MAC地址 80:05:88:48:37:b5ToolB的MAC地址厂商信息查询网站:https://tool…

python 如何判断是函数还是方法 (function or method)

示例代码: def test_fn():passclass Test(object):staticmethoddef s_fn():passclassmethoddef c_fn(cls):passdef my_fn(self):pass如何判断是可调用的方法: hasattr(test_fn, __call__) # true hasattr(Test.s_fn, __call__) # true hasattr(Test.c…

Flutter笔记:Widgets Easier组件库(8)使用图片

Flutter笔记 Widgets Easier组件库(8):使用图片 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress o…

Transformers:它们如何转换您的数据?

一、说明 在快速发展的人工智能和机器学习领域,一项创新因其对我们处理、理解和生成数据的方式产生深远影响而脱颖而出:Transformers。Transformer 彻底改变了自然语言处理 (NLP) 及其他领域,为当今一些最先进的 AI 应…

【Vue3】Ref与Reactive

3.1【ref 创建:基本类型的响应式数据】 作用:定义响应式变量。语法:let xxx ref(初始值)。返回值:一个RefImpl的实例对象,简称ref对象或ref,ref对象的value属性是响应式的。注意点: JS中操作数…