问题

I was trying to use io.fabric8 api to create a few resources in kubernetes using a pod-spec.yaml.

Config config = new ConfigBuilder()

.withNamespace("ag")

.withMasterUrl(K8_URL)

.build();

try (final KubernetesClient client = new DefaultKubernetesClient(config)) {

LOGGER.info("Master: " + client.getMasterUrl());

LOGGER.info("Loading File : " + args[0]);

Pod pod = client.pods().load(new FileInputStream(args[0])).get();

LOGGER.info("Pod created with name : " + pod.toString());

} catch (Exception e) {

LOGGER.error(e.getMessage(), e);

}

The above code works if the resource type is of POD. Similarly for other resource type it is working fine.

But if the yaml has multiple resource type like POD and service in the same file, how to use fabric8 Api ?

I was trying to use client.load(new FileInputStream(args[0])).createOrReplace(); but it is crashing with the below exception:

java.lang.NullPointerException

at java.net.URI$Parser.parse(URI.java:3042)

at java.net.URI.(URI.java:588)

at io.fabric8.kubernetes.client.utils.URLUtils.join(URLUtils.java:48)

at io.fabric8.kubernetes.client.dsl.base.BaseOperation.getMandatory(BaseOperation.java:208)

at io.fabric8.kubernetes.client.dsl.base.BaseOperation.get(BaseOperation.java:177)

at io.fabric8.kubernetes.client.handlers.PodHandler.reload(PodHandler.java:53)

at io.fabric8.kubernetes.client.handlers.PodHandler.reload(PodHandler.java:32)

at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:202)

at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:62)

at com.nokia.k8s.InterpreterLanuch.main(InterpreterLanuch.java:66)

Yaml file used

apiVersion: v1

kind: Pod

metadata:

generateName: zep-ag-pod

annotations:

kubernetes.io/psp: restricted

spark-app-name: Zeppelin-spark-shared-process

namespace: ag

labels:

app: zeppelin

int-app-selector: shell-123

spec:

containers:

- name: ag-csf-zep

image: bcmt-registry:5000/zep-spark2.2:9

imagePullPolicy: IfNotPresent

command: ["/bin/bash"]

args: ["-c","echo Hi && sleep 60 && echo Done"]

securityContext:

allowPrivilegeEscalation: false

capabilities:

drop:

- ALL

runAsNonRoot: true

securityContext:

fsGroup: 2000

runAsUser: 1510

serviceAccount: csfzeppelin

serviceAccountName: csfzeppelin

---

apiVersion: v1

kind: Service

metadata:

name: zeppelin-service

namespace: ag

labels:

app: zeppelin

spec:

type: NodePort

ports:

- name: zeppelin-service

port: 30099

protocol: TCP

targetPort: 8080

selector:

app: zeppelin

回答1:

You don't need to specify resource type whenever loading a file with multiple documents. You simply need to do:

// Load Yaml into Kubernetes resources

List result = client.load(new FileInputStream(args[0])).get();

// Apply Kubernetes Resources

client.resourceList(result).inNamespace(namespace).createOrReplace()

来源:https://stackoverflow.com/questions/53501540/kubectl-apply-f-spec-yaml-equivalent-in-fabric8-java-api

fabric8 java api,kubectl apply -f equivalent in fabric8 java api | 易学教程相关推荐

  1. kubernetes kubectl apply -f和kubectl create -f有什么区别

    kubectl create属于Imperative command(祈使式命令),它明确告诉kubectl要创建某个资源或对象: kubectl apply是Declarative command( ...

  2. kubectl apply_了解Kubectl Apply命令

    kubectl apply In this post, we'll explore how the kubectl apply command works internally. Which will ...

  3. kubectl logs -f tail 显示100_系统管理员应该知道的9个kubectl命令

    kubectl是Kubernetes的一个命令行管理工具,可用于Kubernetes上的应用部署和日常管理.本文列举了9个常见的kubectl命令,并对每个命令进行了简单扼要的介绍,供大家参考.同时, ...

  4. 【Kotlin】apply 内联扩展函数 ( apply 函数原型 | apply 函数示例 | Kotlin 调用 Java API )

    文章目录 I . 内联扩展函数 apply II . Kotlin 调用 Java API III . apply 内联扩展函数示例 ( 调用 Java API 处理图像 ) I . 内联扩展函数 a ...

  5. 聚合中返回source_Java 8 中的 Streams API 详解—— Streams 的背景以及 Java 8 中的使用详解...

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

  6. JAVA开发(后端):微信小程序API调用详细分析及步骤

    关键词:微信登录.统一下单(支付).统一下单通知(回调).统一下单查询.企业付款至零钱.支付查询.获取ACCESS_Token.获取小程序二维码 因为做项目涉及到微信这些接口的调用,尽管看了很多博客, ...

  7. 高级JAVA开发必备技能:java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)(JAVA 小虚竹)

    技术活,该赏 点赞再看,养成习惯 大家好,我是小虚竹.之前有粉丝私聊我,问能不能把JAVA8 新的日期时间API(JSR-310)知识点梳理出来.答案是肯定的,谁让我宠粉呢.由于内容偏多(超十万字了) ...

  8. ctp java_CTP API 开发之二 :制作CTP java版 API

    目前上期技术CTP系统提供的API版本是C++版本 SWIG是一个能将C/C++接口转换为其他语言的工具,目前可以支持Python,Java,R等语言. 本文主要介绍Windows 32/64位平台下 ...

  9. Java中的微信支付(2):API V3 微信平台证书的获取与刷新

    1. 前言 在Java 中的微信支付(1):API V3 版本签名详解一文中胖哥讲解了微信支付 V3 版本 API 的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API 证书对参数 ...

最新文章

  1. 用了这个 IDE 插件,5分钟解决前后端联调!
  2. C#中base64编码与解码
  3. sqlserver 运行正則表達式,调用c# 函数、代码
  4. 动态dp模板题(树剖+dp+线段树)
  5. Redis Flushdb 命令
  6. 请注意,我们要谈谈神经网络的注意机制和使用方法
  7. C++ 连接数据库的入口和获取列数、数据
  8. 职场生活:辞职也有大学问
  9. HttpClient实现通过url下载文件
  10. Arm汇编 位置无关代码 adr 指令
  11. 通过QQ音乐接口,做的一个简易微信小程序播放器
  12. 还有没换国旗头像的么 头像领取方法 不要再@微信官方啦
  13. brew安装RabbitMQ
  14. 上周NFT销售CryptoPunk囊括前三
  15. 2008年4月28日A股市场存在筑底异样
  16. php 5.3.3 漏洞,PHP 5.3.7版本更新 修复安全漏洞
  17. Git LFS(Large File Storage)使用简介
  18. qgmt数据,就差白城后面的一个城市有点问题
  19. [蓝桥杯 2018 国 B] 搭积木 (区间dp + 二维前缀和优化)
  20. Web of Science 如何查询相关主题文献逐年的发表数量、被引频次及其走势图

热门文章

  1. viso stido 在图上写字
  2. 如何在Linux中查看所有正在运行的进程 1
  3. win7+vs2010+opnet教程
  4. 随想录(c编译器的实现)
  5. mfc大观之四(串行保存)
  6. 嵌入式操作系统内核原理和开发(最快、最优、最差内存分配算法)
  7. sql视图 权限_SQLmysql用户权限管理
  8. php如何请求api,PHP如何发送GET/POST请求调用API
  9. php七牛持久化处理,使用七牛自定义数据处理范例
  10. python添加lxml库_Python lxml库简介