美文网首页
kubernetes的HTTP接口文档

kubernetes的HTTP接口文档

作者: 9c46ece5b7bd | 来源:发表于2018-07-19 23:13 被阅读514次

k8s的HTTP接口使用

# 查看当前集群支持的API版本
$ curl -s 10.0.0.120:8080/api/ | jq -r .versions

# 查看指定API的资源操作类型 返回一个字典列表
$ curl -s 10.0.0.120:8080/api/v1/ | jq keys
[
  "groupVersion",
  "kind",
  "resources"
]

# 查看当前k8s集群支持的操作类型
curl -s 10.0.0.120:8080/api/v1/ | jq .resources | grep "name\b"
    "name": "bindings",
    "name": "componentstatuses",
    "name": "configmaps",
    "name": "endpoints",
    "name": "events",
    "name": "limitranges",
    "name": "namespaces",
    "name": "namespaces/finalize",
    "name": "namespaces/status",
    "name": "nodes",
    "name": "nodes/proxy",
    "name": "nodes/status",
    "name": "persistentvolumeclaims",
    "name": "persistentvolumeclaims/status",
    "name": "persistentvolumes",
    "name": "persistentvolumes/status",
    "name": "pods",
    "name": "pods/attach",
    "name": "pods/binding",
    "name": "pods/eviction",
    "name": "pods/exec",
    "name": "pods/log",
    "name": "pods/portforward",
    "name": "pods/proxy",
    "name": "pods/status",
    "name": "podtemplates",
    "name": "replicationcontrollers",
    "name": "replicationcontrollers/scale",
    "name": "replicationcontrollers/status",
    "name": "resourcequotas",
    "name": "resourcequotas/status",
    "name": "secrets",
    "name": "serviceaccounts",
    "name": "services",
    "name": "services/proxy",
    "name": "services/status",

# 常用的,需要关注的几个资源类型 【namespaces|nodes|pods|podtemplates|replicationcontrollers|services|secrets】

# 查看某个namespace的URL
$ curl -s 10.0.0.120:8080/api/v1/namespaces/ | jq .items | jq values[0]  | grep -E '(name|selfLink)'
    "name": "default",
    "selfLink": "/api/v1/namespaces/default",

# 查看namespace详情
$ curl -s 10.0.0.120:8080/api/v1/namespaces/default | jq .spec
{
  "finalizers": [
    "kubernetes"
  ]
}




# 查看全部node
$ curl -s 10.0.0.120:8080/api/v1/nodes | jq .items | grep -E "\bname\b|selfLink"
      "name": "172.25.47.138",
      "selfLink": "/api/v1/nodes/172.25.47.138",
      "name": "172.25.47.202",
      "selfLink": "/api/v1/nodes/172.25.47.202",
      "name": "172.25.47.75",
      "selfLink": "/api/v1/nodes/172.25.47.75",
      "name": "10.0.0.121",
      "selfLink": "/api/v1/nodes/10.0.0.121",
      "name": "10.0.0.122",
      "selfLink": "/api/v1/nodes/10.0.0.122",

# 查看某个node详情【当前该节点的资源信息以及设置限制条件,当前节点运行的pod容器以及镜像相关信息】
$ curl -s 10.0.0.120:8080/api/v1/nodes/10.0.0.122 | jq .status
{
  "capacity": {
    "cpu": "4",
    "ephemeral-storage": "14987616Ki",
    "hugepages-2Mi": "0",
    "memory": "6627524Ki",
    "pods": "110"
  },
  "allocatable": {
    "cpu": "4",
    "ephemeral-storage": "13812586883",
    "hugepages-2Mi": "0",
    "memory": "6525124Ki",
    "pods": "110"
  },
  "conditions": [
    {
      "type": "OutOfDisk",
      "status": "False",
      "lastHeartbeatTime": "2018-07-19T03:15:50Z",
      "lastTransitionTime": "2018-06-28T01:59:06Z",
      "reason": "KubeletHasSufficientDisk",
      "message": "kubelet has sufficient disk space available"
    },
    {
      "type": "MemoryPressure",
      "status": "False",
      "lastHeartbeatTime": "2018-07-19T03:15:50Z",
      "lastTransitionTime": "2018-06-28T01:59:06Z",
      "reason": "KubeletHasSufficientMemory",
      "message": "kubelet has sufficient memory available"
    },
    {
      "type": "DiskPressure",
      "status": "False",
      "lastHeartbeatTime": "2018-07-19T03:15:50Z",
      "lastTransitionTime": "2018-06-28T01:59:06Z",
      "reason": "KubeletHasNoDiskPressure",
      "message": "kubelet has no disk pressure"
    },
    {
      "type": "PIDPressure",
      "status": "False",
      "lastHeartbeatTime": "2018-07-19T03:15:50Z",
      "lastTransitionTime": "2018-06-28T01:59:06Z",
      "reason": "KubeletHasSufficientPID",
      "message": "kubelet has sufficient PID available"
    },
    {
      "type": "Ready",
      "status": "True",
      "lastHeartbeatTime": "2018-07-19T03:15:50Z",
      "lastTransitionTime": "2018-07-18T08:18:31Z",
      "reason": "KubeletReady",
      "message": "kubelet is posting ready status"
    }
  ],
  "addresses": [
    {
      "type": "InternalIP",
      "address": "10.0.0.122"
    },
    {
      "type": "Hostname",
      "address": "10.0.0.122"
    }
  ],
  "daemonEndpoints": {
    "kubeletEndpoint": {
      "Port": 10250
    }
  },
  "nodeInfo": {
    "machineID": "cd7f16da1665b7cee74f46122e2d7cdd",
    "systemUUID": "0E96FBAF-C214-18F8-D9E6-8B65B9B5A413",
    "bootID": "f67f0185-4be6-41d0-b5e0-d126165f6986",
    "kernelVersion": "3.10.0-327.el7.x86_64",
    "osImage": "CentOS Linux 7 (Core)",
    "containerRuntimeVersion": "docker://1.12.6",
    "kubeletVersion": "v1.10.4",
    "kubeProxyVersion": "v1.10.4",
    "operatingSystem": "linux",
    "architecture": "amd64"
  },
  "images": [
    {
      "names": [
        "dockerhub.jd.com/wolf/fe-wolf@sha256:0b155e99f27de990cfd3a5f96bcc13b820530cf1236b96ca5d87efae4f65f62a",
        "dockerhub.jd.com/wolf/fe-wolf:latest"
      ],
      "sizeBytes": 352597644
    },
    {
      "names": [
        "xxbandy123/go-web@sha256:c375b479a74b0ec77608a221a28ddc4589149d55a04845eac697903add557c30",
        "xxbandy123/go-web:latest"
      ],
      "sizeBytes": 338268706
    },
    {
      "names": [
        "dockerhub.jd.com/gcr_mirror/pause-amd64@sha256:fcaff905397ba63fd376d0c3019f1f1cb6e7506131389edbcb3d22719f1ae54d",
        "dockerhub.jd.com/gcr_mirror/pause-amd64:3.1"
      ],
      "sizeBytes": 742472
    }
  ]
}


# 查看pod相关信息【由于一般k8s是不建议使用pod类型来直接控制容器的,因此这个接口直接查没什么意义】

# 查看apis group相关信息
curl -s 10.0.0.120:8080/apis/extensions/v1beta1 | grep "\bname\b"
      "name": "daemonsets",
      "name": "daemonsets/status",
      "name": "deployments",
      "name": "deployments/rollback",
      "name": "deployments/scale",
      "name": "deployments/status",
      "name": "ingresses",
      "name": "ingresses/status",
      "name": "networkpolicies",
      "name": "podsecuritypolicies",
      "name": "replicasets",
      "name": "replicasets/scale",
      "name": "replicasets/status",
      "name": "replicationcontrollers",
      "name": "replicationcontrollers/scale",
$ curl -s 10.0.0.120:8080/apis/apps/v1beta1 | grep "\bname\b"
      "name": "controllerrevisions",
      "name": "deployments",
      "name": "deployments/rollback",
      "name": "deployments/scale",
      "name": "deployments/status",
      "name": "statefulsets",
      "name": "statefulsets/scale",
      "name": "statefulsets/status",





# 查看控制器对应的控制器信息【statefulset,deployment】 这些控制器的信息一般在/apis/apps/下
# job和cronjob一般会在/apis/batch/下
$ curl -s 10.0.0.120:8080/apis/batch/v1 | grep "\bname\b"
      "name": "jobs",
      "name": "jobs/status",

curl -s 10.0.0.120:8080/apis/batch/v1/jobs | jq -r .items | grep name
      "name": "image-build-service",
      "namespace": "default",
      "selfLink": "/apis/batch/v1/namespaces/default/jobs/image-build-service",
        "job-name": "image-build-service"
          "name": "image-build-service",
            "job-name": "image-build-service"
              "name": "hosts",
              "name": "image-build-service",
                  "name": "dockerhost",
                  "name": "branch",
                  "name": "giturl",
                  "name": "app",
                  "name": "dockerfiledir",
                  "name": "hosts",



# 查看当前/apis/apps/支持的apiversion
$ curl -s 10.0.0.120:8080/apis/apps | jq .versions |grep "groupVersion"
    "groupVersion": "apps/v1",
    "groupVersion": "apps/v1beta2",
    "groupVersion": "apps/v1beta1",

# 查看应用的api支持的相关资源类型 【daemonsets|deployments|replicasets|statefulsets】
$ curl -s 10.0.0.120:8080/apis/apps/v1 | jq .resources | grep "name\b"
    "name": "controllerrevisions",
    "name": "daemonsets",
    "name": "daemonsets/status",
    "name": "deployments",
    "name": "deployments/scale",
    "name": "deployments/status",
    "name": "replicasets",
    "name": "replicasets/scale",
    "name": "replicasets/status",
    "name": "statefulsets",
    "name": "statefulsets/scale",
    "name": "statefulsets/status",

# 问题:job类型的资源在哪里查看 batch/extension?

# 查看deployment名称和selflink
$ curl -s 10.0.0.120:8080/apis/apps/v1/deployments | jq .items | grep   -E "(\bname\b|\bnamespace\b|selfLink)"
      "name": "test-go-web",
      "namespace": "default",
      "selfLink": "/apis/apps/v1/namespaces/default/deployments/test-go-web",

# 查看某个deployment详情
$ kubectl get deployments -o wide
NAME          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE       CONTAINERS    IMAGES                         SELECTOR
test-go-web   5         5         5            5           1h        test-go-web   xxbandy123/go-web   run=test-go-web
$ curl -s 10.0.0.120:8080/apis/apps/v1/namespaces/default/deployments/test-go-web  | jq .spec
{
  "replicas": 5,
  "selector": {
    "matchLabels": {
      "run": "test-go-web"
    }
  },
  "template": {
    "metadata": {
      "creationTimestamp": null,
      "labels": {
        "run": "test-go-web"
      }
    },
    "spec": {
      "containers": [
        {
          "name": "test-go-web",
          "image": "xxbandy123/go-web",
          "ports": [
            {
              "containerPort": 9090,
              "protocol": "TCP"
            }
          ],
          "resources": {},
          "terminationMessagePath": "/dev/termination-log",
          "terminationMessagePolicy": "File",
          "imagePullPolicy": "Always"
        }
      ],
      "restartPolicy": "Always",
      "terminationGracePeriodSeconds": 30,
      "dnsPolicy": "ClusterFirst",
      "securityContext": {},
      "schedulerName": "default-scheduler"
    }
  },
  "strategy": {
    "type": "RollingUpdate",
    "rollingUpdate": {
      "maxUnavailable": 1,
      "maxSurge": 1
    }
  },
  "revisionHistoryLimit": 10,
  "progressDeadlineSeconds": 600
}




# 查看service资源下的实例
# curl -s 10.0.0.120:8080/api/v1/services/ | jq ".items" | jq values[1] |grep -E "(\bname\b|selfLink|\bnamespace\b)"
    "name": "test-go-web",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/services/test-go-web",

# 查看某个service详情 【具体的资源类型会被划分到namespaces下】
$ curl -s 10.0.0.120:8080/api/v1/namespaces/default/services/test-go-web | jq -r '.spec'
{
  "ports": [
    {
      "protocol": "TCP",
      "port": 9090,
      "targetPort": 9090,
      "nodePort": 30315
    }
  ],
  "selector": {
    "run": "test-go-web"
  },
  "clusterIP": "10.254.141.49",
  "type": "NodePort",
  "sessionAffinity": "None",
  "externalTrafficPolicy": "Cluster"
}


# 查看configmap
$ curl -s 10.0.0.120:8080/api/v1/configmaps | jq .items

# 查看secrets
$ curl -s 10.0.0.120:8080/api/v1/secrets | jq .items | grep "\"\bname\b"

相关文章

网友评论

      本文标题:kubernetes的HTTP接口文档

      本文链接:https://www.haomeiwen.com/subject/vbbxmftx.html