准备工作

  首先要准备一个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的更多相关文章

  1. 【Azure API 管理】解决调用REST API操作APIM(API Management)需要认证问题(Authentication failed, The 'Authorization' header is missing)

    问题描述 在通过REST API的方式来管理APIM资源,需要调用Azure提供的management接口.而这所有的接口,都是需要有Token并且还需要正确的Token.如若不然,就会获取到如下的错 ...

  2. C# 调用windows api 操作鼠标、键盘、窗体合集...更新中

    鼠标操作window窗体合集...更新中 1.根据句柄查找窗体 引自http://www.2cto.com/kf/201410/343342.html 使用SPY++工具获取窗体   首先打开spy+ ...

  3. C#调用win32 api 操作其它窗口

    实现以下功能: 找到窗体 找到控件(也叫子窗体) 获取内容 获取位置 设置 位置 内容 鼠标点击 示范 1. 找窗体 以操作系统自带的计算器为例 string clWindow = "Cal ...

  4. kubernetes API Server 权限管理实践

    API Server权限控制方式介绍 API Server权限控制分为三种:Authentication(身份认证).Authorization(授权).AdmissionControl(准入控制). ...

  5. Kubernetes API server工作原理

    作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了. kubectl其实就是一个控制台,主要提供的功能: 1. 提供Kubernetes集群管理的REST API接口,包 ...

  6. 资深专家深度剖析Kubernetes API Server第3章(共3章)

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  7. 深度剖析Kubernetes API Server三部曲 - part 3

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  8. 第23 章 : Kubernetes API 编程范式

    Kubernetes API 编程范式 需求来源 首先我们先来看一下 API 编程范式的需求来源. 在 Kubernetes 里面, API 编程范式也就是 Custom Resources Defi ...

  9. Kubernetes API作为权威接口,Kubernetes将成为软件的通用控制平面

    1创新之处在于API这是有关 Kubernetes的两部分系列中的第一篇.第一部分是一个答案:影响Kubernetes设计的关键思想是什么?Kubernetes会将它与其他平台区分开来吗?第二部分是关 ...

随机推荐

  1. spring - boot 监控管理模块搭建

    Spring-Actuator是Spring-boot对应用监控的集成模块,提供了我们对服务器进行监控的支持,使我们更直观的获取应用程序中加载的应用配置.环境变量.自动化配置报告等. 使用Spring ...

  2. 【Java】 重拾Java入门

    [概论与基本语法] 取这个标题,还是感觉有些大言不惭.之前大三的时候自学过一些基本的java知识,大概到了能独立写一个GUI出来的水平把,不过后来随着有了其他目标,就把这块放下了.之后常年没有用,早就 ...

  3. linux --> 计算机是如何启动的?

    计算机是如何启动的? 零.boot的含义 "启动"用英语怎么说?回答是boot.boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是b ...

  4. 设计模式 --> (7)外观模式

    外观模式 外观模式为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性 1.为一个复杂子系统提供一个简单接口. 2.提高子系统的独立性. ...

  5. [福大软工] W班 第2次成绩排行榜

    作业链接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/866 评分细则 本次个人项目分数由三部分组成 ...

  6. 集大1513 & 1514班 软件工程第一次作业评分与点评

    谢谢大多数同学按时完成了作业,同学态度都比较端正,没有为了完成作业或者讨好老师而说一些假话空话. 很多同学选择CS之前并没有从兴趣或者擅长出发.这是一个普遍的现象,十年前我们是这样,十年后的孩子们还是 ...

  7. 团队开发---”我爱淘“校园二手书店 NABC分析

    本项目特点之一:可预订 N:对于一些抢手的书可以提前预定,避免学生买不到书 A:网上下单,通过手机便捷购物 B:使得订书更加方便快捷 C:二手书摊.网上书店 团队成员:杨广鑫.郭健豪.李明.郑涛

  8. Python 双向链表

    操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(item) 链表头部添加 append(item) 链表尾部添加 insert(pos, it ...

  9. Tornado 协程

    同步异步I/O客户端 from tornado.httpclient import HTTPClient,AsyncHTTPClient def ssync_visit(): http_client ...

  10. initializer element is not a compile-time constant

    初始化一个全局变量或static变量时,只能用常量赋值,不能用变量赋值! 如下就会报这个错误(KUIScreenWidth)是变量 static CGFloat const topButtonWidt ...