Java连接K8s_6-java操作k8s
java 操作k8s 这里使用的是 fabric8
1:添加maven ,引入依赖
io.fabric8
kubernetes-client
3.1.12
/**
* 生成kubernetes client实体
*
* @return
*/
2:public KubernetesClient getClient() {
List list = clusterService.get();
String clusterIp = "http://" + clusterIp;
Config config = new ConfigBuilder().withMasterUrl(masterURL).build();
return new DefaultKubernetesClient(config);
}
3:然后可以通过getClient()点出来好多东西
也可以查看api信息。获取不同的操作
4:根据fabric8提供的这些操就可以创建删除对应的组件了
来个例子吧 创建Deployment
// Deployment
public Deployment createDeployment(String namespace, Deployment deployment) {
return getClient().extensions().deployments().inNamespace(namespace).create(deployment);
}
关键就是组装Deployment 数据
巧妙的是fabric8 提供了构建方法如下
createDeployment(namespace, new DeploymentBuilder().withKind("Deployment")
.withApiVersion("extensions/v1beta1")
.withNewMetadata()
.withName(ku8Deployment.getName())
.withNamespace(namespace)
.withLabels(label)
.endMetadata()
.withNewSpec()
.withReplicas(replica)
.withSelector(selector)
.withNewTemplate()
.withNewMetadata()
.withLabels(podSelector)
.endMetadata()
.withNewSpec()
.withHostNetwork(ku8Deployment.isHostNetwork())
.withVolumes(f8Volumes)
.withContainers(f8Containers)
.endSpec()
.endTemplate()
.endSpec().build());
是不是一头雾水呀,这数据怎么来搞呀,谁的后面跟谁呀。别急 听我慢慢说
其实格式很简单 登录k8s 集群,查看一下 deployment
[root@localhost ~]# kg deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
api-getway 1 1 1 1 1d
kube-dns 1 1 1 1 1d
traefik-ingress-controller 1 1 1 1 1d
然后干什么呢,随便找一个deployment 这里只是个我集群上的deployment例子 执行如下
[root@localhost ~]# kg deploymentapi-getway -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: 2018-05-28T15:29:02Z
generation: 1
labels:
k8s-app: api-getway
task: monitoring
name: api-getway
namespace: kube-system
resourceVersion: "94687"
selfLink: /apis/extensions/v1beta1/namespaces/kube-system/deployments/api-getway
uid: d990741b-628b-11e8-86b9-000c2938aca0
spec:
replicas: 1
selector:
matchLabels:
k8s-app: api-getway
task: monitoring
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s-app: api-getway
task: monitoring
spec:
containers:
- image: muhaifeng/api-getway
imagePullPolicy: Always
name: api-getway
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: 2018-05-28T15:29:02Z
lastUpdateTime: 2018-05-28T15:29:02Z
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
好了格式出来了。不要怂就是干,
new DeploymentBuilder().withKind("Deployment")
.withApiVersion("extensions/v1beta1")
.withNewMetadata()
.withName(ku8Deployment.getName())
.withNamespace(namespace)
.withLabels(label)
.endMetadata()
.withNewSpec()
.withReplicas(replica)
.withSelector(selector)
.withNewTemplate()
.withNewMetadata()
.withLabels(podSelector)
.endMetadata()
.withNewSpec()
.withHostNetwork(ku8Deployment.isHostNetwork())
.withVolumes(f8Volumes)
.withContainers(f8Containers)
.endSpec()
.endTemplate()
.endSpec().build());
这个格式就是上面集群中那个格式,照着上面的那个集群中查到的格式往下拼。 就可以了。
拼完之后。跑一下程序,在集群中查看一下就出来了。
同样的,根据fabric8 提供的接口,基本都能实现 操作k8s集群。
Java连接K8s_6-java操作k8s相关推荐
- Java连接Redis及操作(二)
前言 上一节我们学习了java连接Redis,并且连接Redis成功,今天博主带领大家进行简单的操作Redis.要想对Redis进行Java的操作,必须先了解Redis API(点击这里),可看到AP ...
- Java连接Redis及操作(一)
Redis简介 Redis是一个开源的使用ANSI c语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它是一种非关系性的数据库.它是以key-val ...
- java连接couchdb,Java CouchDB连接详细实现步骤
我们可以使用Java编程语言连接到CouchDB.为了进行连接, 我们使用Ektorp库, 该库在CouchDB的顶部提供了一个持久层. 在这里, 我们将说明一个示例, 其中我们正在连接, 创建数据库 ...
- java 连接 sql2005,java与sql server2005 连接有关问题
当前位置:我的异常网» Eclipse » java与sql server2005 连接有关问题 java与sql server2005 连接有关问题 www.myexceptions.net 网友 ...
- java 连接 2008,java连接SqlServer2008R2连接异常
java连接SqlServer2008R2连接异常 java连接SqlServer2008R2连接异常 新装的sqlserver2008R2数据库,连接数据库,控制台报了下面的错误...... The ...
- java 连接SSH工具操作服务器 (构建者模式+Util类) 分享
需求 因为需要以java 远程操作服务器, 比如进行文件下载/上传操作, 或者执行一些服务器常用命令ls cat grep 等等. 调研发现比较好用的SSH 工具有: ganymed-ssh2 jsc ...
- 使用java连接JanusGraph进行操作,hbase报错信息为:Caused by: org.apache.hbase.thirdparty.io.netty.channel.AbstractCh
背景是我用windows上的idea去连接已经配好的虚拟机操作JanusGraph 报错部分截图如下: 报错很奇怪显示的是127.0.0.1即本地的地址我明明连的是虚拟机的环境 部分代码截图如下: 然 ...
- JAVA 连接MYSQL数据库操作
String strCon = "jdbc:mysql://122.114.147.148:3306/ddd"; //连接字符串String strUser = "数据库 ...
- java连接mysql(java连接mysql的jar包)
mysql与apache怎么连接呀??? 设置 my.ini 就 OK 了 在windows文件夹下. java与mysql做的毕业设计 你说的我不是很明白哦.不过我想你的意思是不是说:"通 ...
- java 连接hive2,java jdbc连接hiveserver2
1 首先修改 hive-site.xml配置端口(默认就是10000) hive.server2.thrift.port 10000 hive.server2.thrift.bind.host loc ...
最新文章
- 2022年全球及中国面粉加工机械行业竞争现状与发展前景规模分析报告
- 开始学习Solaris
- 论文公式编号右对齐_论文不会写?最详细的论文排版技巧
- String方法(一)
- [转]git merge 与 git rebase的区别
- MangataのACM模板
- Python中如何获取类属性的列表
- 检索计算机中word文件的词,电脑word搜索工具
- linux下安装杰奇2.4,实现关关采集器远程采集详细教程
- 腾讯确认QQ大规模盗号
- Python面试简历技能点写法总结
- 大话操作系统(11)进程间通信
- c++实现高速缓存Cache
- 上线 之 App Store审核指南
- iOS小技能:SKU视图搭建
- Navicate管理工具的使用
- 回忆过去,痛苦的相思忘不了
- android手机密码忘了哪个电话打开,安卓手机锁屏密码忘了怎么办 解决锁屏密码六种方法介绍...
- 如何把图片上的文字转换成word?
- 未来智能手机摄像技术发展趋势:硬件