• 调用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。

  • 相关阅读:
    质量属性简介
    linux高性能服务器编程第二章 IP协议详解
    3
    linux高性能服务器编程第五章Linux网络编程基础API (2)
    linux高性能服务器编程第五章Linux网络编程基础API (1)
    centos7配置gcc环境
    linux高性能服务器编程第三章 TCP协议详解
    xshell的安装、xftp的安装
    在自己的前端项目(例如vue项目)中使用阿里矢量图标的步骤
    【在下版本,有何贵干?】Dockerfile中 RUN yum y install vim失败Cannot prepare internal mirrorlist: No URLs in mirrorlist
  • 原文地址:https://www.cnblogs.com/Erik_Xu/p/8849426.html
Copyright © 2020-2023  润新知