调用Kubernetes API操作Kubernetes
准备工作
首先要准备一个1.5+版本的Kubernetes,并且开放了API Server的http访问端口8080。本文使用的是1.10的版本,没有环境的可以参考我上一篇文章《在CentOS 7+ 安装Kubernetes入门(单Master)》进行安装。
使用http://master-ip:8080/apis检查API是否能正常访问,这里的master-ip是192.168.132.132。

如果地址无法访问,需要设置Kubernetes开通http访问端口8080。
1. 在Master中进入API Server的启动脚本目录:
cd /etc/kubernetes/manifests/
2. 修改API Server的脚本文件:kube-apiserver.yaml或者kube-apiserver.json。
添加或设置--insecure-bind-address=0.0.0.0、--insecure-port=8080。如下:

重启kubelet:
systemctl daemon-reload
systemctl restart kubelet
3. 打开Swagger(可选)
在kube-apiserver.yaml或者kube-apiserver.json中添加--enable-swagger-ui=true,重启kubelet,然后使用http://master-ip:8080/swagger-ui/进行访问:

更多设置参数请参考:
https://kubernetes.io/docs/reference/generated/kube-apiserver/
创建应用
1. 创建deloyment
nginx-dep.json:
{
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"metadata": {
"name": "nginx",
"labels": {
"app": "nginx"
},
"namespace": "default"
},
"spec": {
"replicas": 1,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"nodeSelector": {
"kubernetes.io/role": "node"
},
"containers": [
{
"name": "nginx",
"image": "nginx:1.13",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}
API:POST http://master-ip:8080/apis/extensions/v1beta1/namespaces/{namespace}/deployments:

kubectl get deployment进行检查:

2. 创建service
nginx-svc.json:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"labels": {
"app": "nginx"
},
"namespace": "default"
},
"spec": {
"selector": {
"app": "nginx"
},
"type": "NodePort",
"ports": [
{
"name": "nginx",
"nodePort": 30000,
"port": 80,
"protocol": "TCP",
"targetPort": 80
}
]
}
}
API:POST http://master-ip:8080/api/v1/namespaces/{namespace}/services:

kubectl get service进行检查:

使用Node1的地址http://192.168.132.130:30000/进行访问:

补充说明
Kubernetes高版本其实更建议使用https的协议来操作API Server,即https://master-ip:6443/,而且默认是开放的:

但是https的认证与授权当前我还没有弄清楚,因此,没有写在这篇文章,或许后续会补上。不过,Kubernetes推出了Helm,用Helm可以更方便地操作Kubernetes,我后续会介绍如何使用Helm。
调用Kubernetes API操作Kubernetes的更多相关文章
- 【Azure API 管理】解决调用REST API操作APIM(API Management)需要认证问题(Authentication failed, The 'Authorization' header is missing)
问题描述 在通过REST API的方式来管理APIM资源,需要调用Azure提供的management接口.而这所有的接口,都是需要有Token并且还需要正确的Token.如若不然,就会获取到如下的错 ...
- C# 调用windows api 操作鼠标、键盘、窗体合集...更新中
鼠标操作window窗体合集...更新中 1.根据句柄查找窗体 引自http://www.2cto.com/kf/201410/343342.html 使用SPY++工具获取窗体 首先打开spy+ ...
- C#调用win32 api 操作其它窗口
实现以下功能: 找到窗体 找到控件(也叫子窗体) 获取内容 获取位置 设置 位置 内容 鼠标点击 示范 1. 找窗体 以操作系统自带的计算器为例 string clWindow = "Cal ...
- kubernetes API Server 权限管理实践
API Server权限控制方式介绍 API Server权限控制分为三种:Authentication(身份认证).Authorization(授权).AdmissionControl(准入控制). ...
- Kubernetes API server工作原理
作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了. kubectl其实就是一个控制台,主要提供的功能: 1. 提供Kubernetes集群管理的REST API接口,包 ...
- 资深专家深度剖析Kubernetes API Server第3章(共3章)
在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...
- 深度剖析Kubernetes API Server三部曲 - part 3
在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...
- 第23 章 : Kubernetes API 编程范式
Kubernetes API 编程范式 需求来源 首先我们先来看一下 API 编程范式的需求来源. 在 Kubernetes 里面, API 编程范式也就是 Custom Resources Defi ...
- Kubernetes API作为权威接口,Kubernetes将成为软件的通用控制平面
1创新之处在于API这是有关 Kubernetes的两部分系列中的第一篇.第一部分是一个答案:影响Kubernetes设计的关键思想是什么?Kubernetes会将它与其他平台区分开来吗?第二部分是关 ...
随机推荐
- C语言的文件读写操作函数小结
一.文件打开 使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE包含了所有用来控制流的必要的信息.函数原型为: FILE ...
- centos7 yum 安装mariadb
#vim /etc/yum.repos.d/mariadb.repo [mariadb]name = MariaDBbaseurl = https://yum.mariadb.org/10.1.16/ ...
- mac上Pycharm个性化快捷键,类似Myeclipse的快速复制等快捷键
好几天没写博客了,在win10下写了几天python,然后下了pycharm使用,发现还可以,但是太笨重了,切回了mac,然后装了pycharm社区版本. 但是这个使用太别扭了,没有myeclipse ...
- vs2013和.net 4.5.1调用.net core中的Kestrel(基于libuv)的http服务器代码 两种方式
nuget获取相关的包:两个:Microsoft.AspNetCore.Server.Kestrel 和 Microsoft.Extensions.Logging.Console 编译完成后手工将pa ...
- 爬取博主所有文章并保存到本地(.txt版)--python3.6
闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...
- strcat函数
原型:char *strcat ( char *dest, const char *src) 用法:#include <string.h> 功能:连接两个字符串:strcat( ...
- [日常] AtCoder Beginner Contest 075 翻车实录
别问我为啥要写一篇ABC的游记... 周日打算CF开黑于是就打算先打打ABC找回手速... 进场秒掉 $A$ 和 $B$ , 小暴力一脸偷税 然后开 $C$ ...woc求桥? 怎么办啊我好像突然忘了 ...
- 【Alpha】随笔集合
Daily Scrum Meeting 第一天 [Alpha]Daily Scrum Meeting第一次 第二天 [Alpha]Daily Scrum Meeting第二次 第三天 [Alpha]D ...
- Beta冲刺合集
Beta冲刺序列: Beta凡事预则立 :Beta No.0 Beta冲刺Day1:Beta No.1 Beta冲刺Day2:Beta No.2 Beta冲刺Day3:Beta No.3 Beta冲刺 ...
- 高级软件工程第三次作业 赵坤&黄亦薇
0.小组成员 赵坤2017282110261 黄亦薇201728210260 1.项目Github地址 https://github.com/zkself/homework3 PS:建议使用chro ...