Kubernetes Rest Api 篇之六对应源码所在位置(staging api项目)

 
kubernetes 子项目地址: https://github/kubernetes/api 

复制代码
[root@k2 conf]# kubectl get --raw /
{
  "paths": [
    "/api",
    "/api/v1",
    "/apis",
    "/apis/",
    "/apis/admissionregistration.k8s.io",
    "/apis/admissionregistration.k8s.io/v1beta1",
    "/apis/apiextensions.k8s.io",
    "/apis/apiextensions.k8s.io/v1beta1",
    "/apis/apiregistration.k8s.io",
    "/apis/apiregistration.k8s.io/v1",
    "/apis/apiregistration.k8s.io/v1beta1",
    "/apis/apps",
    "/apis/apps/v1",
    "/apis/apps/v1beta1",
    "/apis/apps/v1beta2",
    "/apis/authentication.k8s.io",
    "/apis/authentication.k8s.io/v1",
    "/apis/authentication.k8s.io/v1beta1",
    "/apis/authorization.k8s.io",
    "/apis/authorization.k8s.io/v1",
    "/apis/authorization.k8s.io/v1beta1",
    "/apis/autoscaling",
    "/apis/autoscaling/v1",
    "/apis/autoscaling/v2beta1",
    "/apis/batch",
    "/apis/batch/v1",
    "/apis/batch/v1beta1",
    "/apis/certificates.k8s.io",
    "/apis/certificates.k8s.io/v1beta1",
    "/apis/events.k8s.io",
    "/apis/events.k8s.io/v1beta1",
    "/apis/extensions",
    "/apis/extensions/v1beta1",
    "/apis/management.cattle.io",
    "/apis/management.cattle.io/v3",
    "/apis/monitoring.coreos.com",
    "/apis/monitoring.coreos.com/v1",
    "/apis/networking.k8s.io",
    "/apis/networking.k8s.io/v1",
    "/apis/policy",
    "/apis/policy/v1beta1",
    "/apis/project.cattle.io",
    "/apis/project.cattle.io/v3",
    "/apis/rbac.authorization.k8s.io",
    "/apis/rbac.authorization.k8s.io/v1",
    "/apis/rbac.authorization.k8s.io/v1beta1",
    "/apis/storage.k8s.io",
    "/apis/storage.k8s.io/v1",
    "/apis/storage.k8s.io/v1beta1",
    "/healthz",
    "/healthz/autoregister-completion",
    "/healthz/etcd",
    "/healthz/ping",
    "/healthz/poststarthook/apiservice-openapi-controller",
    "/healthz/poststarthook/apiservice-registration-controller",
    "/healthz/poststarthook/apiservice-status-available-controller",
    "/healthz/poststarthook/bootstrap-controller",
    "/healthz/poststarthook/ca-registration",
    "/healthz/poststarthook/generic-apiserver-start-informers",
    "/healthz/poststarthook/kube-apiserver-autoregistration",
    "/healthz/poststarthook/rbac/bootstrap-roles",
    "/healthz/poststarthook/start-apiextensions-controllers",
    "/healthz/poststarthook/start-apiextensions-informers",
    "/healthz/poststarthook/start-kube-aggregator-informers",
    "/healthz/poststarthook/start-kube-apiserver-informers",
    "/logs",
    "/metrics",
    "/openapi/v2",
    "/swagger-2.0.0.json",
    "/swagger-2.0.0.pb-v1",
    "/swagger-2.0.0.pb-v1.gz",
    "/swagger-ui/",
    "/swagger.json",
    "/swaggerapi",
    "/version"
  ]
}

主链条为: kubectl get --raw .... ---->apis/api ---->staging/api或apis
复制代码

 

 Kubernetes独立子项目 
 https://github.com/kubernetes/api 对应本地
 E:\k8s源码\kubernetes-1.10.13\kubernetes-1.10.13\staging\src\k8s.io\api

 

  ...\ 表示源码根目录  
/api
   
/api/v1
...\pkg\api\v1 ..\pkg\api\v1
/apis
   
/apis/
   
/apis/admissionregistration.k8s.io
...\pkg\apis\admissionregistration ...\pkg\apis\admissionregistration
/apis/admissionregistration.k8s.io/v1beta1
...\pkg\apis\admissionregistration\v1beta1 ...\pkg\apis\admissionregistration\v1beta1
/apis/apiextensions.k8s.io
staging
...\staging\src\k8s.io\apiextensions-apiserver\pkg\apis\apiextensions
/apis/apiextensions.k8s.io/v1beta1
staging ...\staging\src\k8s.io\apiextensions-apiserver\pkg\apis\apiextensions\v1beta1
/apis/apiregistration.k8s.io
staging ...\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration
/apis/apiregistration.k8s.io/v1
staging ...\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1
/apis/apiregistration.k8s.io/v1beta1
staging ...\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1beta1
/apis/apps(默认版本)
...\pkg\apis\apps

...\pkg\apis\apps\register.go

import (

"k8s.io/apimachinery/pkg/runtime"

"k8s.io/apimachinery/pkg/runtime/schema"

"k8s.io/kubernetes/pkg/apis/autoscaling"

"k8s.io/kubernetes/pkg/apis/extensions"

)

/apis/apps/v1
..\pkg\apis\apps\v1

..\pkg\apis\apps\v1\register.go

import (

appsv1 "k8s.io/api/apps/v1"

"k8s.io/apimachinery/pkg/runtime/schema"

)

//引入独立子项目api内的apps包

/apis/apps/v1beta1
..\pkg\apis\apps\v1beta1 ..\pkg\apis\apps\v1beta1
/apis/apps/v1beta2
..\pkg\apis\apps\v1beta2 ..\pkg\apis\apps\v1beta2
/apis/authentication.k8s.io
...\pkg\apis\authentication ...\pkg\apis\authentication
/apis/authentication.k8s.io/v1 ...\pkg\apis\authentication\v1 ...\pkg\apis\authentication\v1
/apis/authentication.k8s.io/v1beta1 ...\pkg\apis\authentication\v1beta1 ...\pkg\apis\authentication\v1beta1
/apis/authorization.k8s.io ...\pkg\apis\authorization ...\pkg\apis\authorization
/apis/authorization.k8s.io/v1 ...\pkg\apis\authorization\v1 ...\pkg\apis\authorization\v1
/apis/authorization.k8s.io/v1beta1 ...\pkg\apis\authorization\v1beta1 ...\pkg\apis\authorization\v1beta1
/apis/autoscaling ...\pkg\apis\autoscaling ...\pkg\apis\autoscaling
/apis/autoscaling/v1 ...\pkg\apis\autoscaling\v1 ...\pkg\apis\autoscaling\v1
/apis/autoscaling/v2beta1 ...\pkg\apis\autoscaling\v2beta1 ...\pkg\apis\autoscaling\v2beta1
/apis/batch
...\pkg\apis\batch\
...\pkg\apis\batch\
/apis/batch/v1
...\pkg\apis\batch\v1
...\pkg\apis\batch\v1
/apis/batch/v1beta1
...\pkg\apis\batch\v1beta1
...\pkg\apis\batch\v1beta1
/apis/certificates.k8s.io ...\pkg\apis\certificates ...\pkg\apis\certificates
/apis/certificates.k8s.io/v1beta1 ...\pkg\apis\certificates\v1beta1 ...\pkg\apis\certificates\v1beta1
/apis/events.k8s.io ...\pkg\apis\events ...\pkg\apis\events
/apis/events.k8s.io/v1beta1 ...\pkg\apis\events\v1beta1 ...\pkg\apis\events\v1beta1
/apis/extensions ...\pkg\apis\extensions ...\pkg\apis\extensions
/apis/extensions/v1beta1 ...\pkg\apis\extensions\v1beta1 ...\pkg\apis\extensions\v1beta1
/apis/management.cattle.io    
/apis/management.cattle.io/v3    
/apis/monitoring.coreos.com    
/apis/monitoring.coreos.com/v1    
/apis/networking.k8s.io ...\pkg\apis\networking

...\pkg\apis\networking

import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

/apis/networking.k8s.io/v1 ...\pkg\apis\networking\v1

...\pkg\apis\networking\v1\register.go

import (
  networkingv1 "k8s.io/api/networking/v1"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

 "k8s.io/api/networking/v1" 即引入独立api子项目包 ...\staging\src\k8s.io\api\networking\v1

/apis/policy ...\pkg\apis\policy

...\pkg\apis\policy\register.go

import (

  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
  "k8s.io/kubernetes/pkg/apis/extensions"
)
1.引入独立子项目apimachinery(staging目录下)
2.引入根目录下的  .../pkg/apis/extensions

/apis/policy/v1beta1 ...\pkg\apis\policy\v1beta1

...\pkg\apis\policy\v1beta1\register.go
import (
   policyv1beta1 "k8s.io/api/policy/v1beta1"
               "k8s.io/apimachinery/pkg/runtime/schema"
 )

 "k8s.io/api/policy/v1beta1" 即引入独立api子项目包 ...\staging\src\k8s.io\api\policy\v1beta1

/apis/project.cattle.io    
/apis/project.cattle.io/v3    
     
/apis/rbac.authorization.k8s.io ...\pkg\apis\rbac ...\pkg\apis\rbac\register.go

import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

/apis/rbac.authorization.k8s.io/v1 ...\pkg\apis\rbac\v1 ...\pkg\apis\rbac\v1\register.go

import (
  rbacv1 "k8s.io/api/rbac/v1"
      "k8s.io/apimachinery/pkg/runtime/schema"
)

/apis/rbac.authorization.k8s.io/v1beta1 ...\pkg\apis\rbac\v1beta1 ...\pkg\apis\rbac\v1beta1\register.go

import (
  rbacv1beta1 "k8s.io/api/rbac/v1beta1"
          "k8s.io/apimachinery/pkg/runtime/schema"
)

/apis/storage.k8s.io ...\pkg\apis\storage

...\pkg\apis\storage\register.go
import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)
//引入基础构件

/apis/storage.k8s.io/v1 ...\pkg\apis\storage\v1

...\pkg\apis\storage\v1\register.go
import (
  storagev1 "k8s.io/api/storage/v1"
  "k8s.io/apimachinery/pkg/runtime/schema"
)
 "k8s.io/api/storage/v1" 即引入独立api子项目包 
...\staging\src\k8s.io\api\storage\v1

/apis/storage.k8s.io/v1beta1 ...\pkg\apis\storage\v1beta1 ..\pkg\apis\storage\v1beta1\register.go

import (
  storagev1beta1 "k8s.io/api/storage/v1beta1"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

 "k8s.io/api/storage/v1beta1" 即引入独立api子项目包 
...\staging\src\k8s.io\api\storage\v1beta1

 

具体讲解举例 :

extensions
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\extensions
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\extensions\register.go

package extensions

import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
  "k8s.io/kubernetes/pkg/apis/apps"
  "k8s.io/kubernetes/pkg/apis/autoscaling"
  "k8s.io/kubernetes/pkg/apis/networking"
  "k8s.io/kubernetes/pkg/apis/policy"
)

// GroupName is the group name use in this package
const GroupName = "extensions"

......

// Adds the list of known types to the given scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
// TODO this gets cleaned up when the types are fixed
scheme.AddKnownTypes(SchemeGroupVersion,
  &apps.Deployment{},
  &apps.DeploymentList{},
  &apps.DeploymentRollback{},
  &apps.DaemonSetList{},
  &apps.DaemonSet{},
  &networking.Ingress{},
  &networking.IngressList{},
  &apps.ReplicaSet{},
  &apps.ReplicaSetList{},
  &policy.PodSecurityPolicy{},
  &policy.PodSecurityPolicyList{},
  &autoscaling.Scale{},
  &networking.NetworkPolicy{},
  &networking.NetworkPolicyList{},
)
return nil
}

.......

复制代码
[root@k2 conf]# kubectl get --raw /apis/extensions/v1beta1 | python -m json.tool
{
    "groupVersion": "extensions/v1beta1",
    "kind": "APIResourceList",
    "resources": [
        {
            "kind": "DaemonSet",
            "name": "daemonsets",
            "namespaced": true,
            "shortNames": [
                "ds"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "kind": "DaemonSet",
            "name": "daemonsets/status",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ]
        },
        {
            "kind": "Deployment",
            "name": "deployments",
            "namespaced": true,
            "shortNames": [
                "deploy"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "kind": "DeploymentRollback",
            "name": "deployments/rollback",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "create"
            ]
        },
        {
            "group": "extensions",
            "kind": "Scale",
            "name": "deployments/scale",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ],
            "version": "v1beta1"
        },
        {
            "kind": "Deployment",
            "name": "deployments/status",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ]
        },
        {
            "kind": "Ingress",
            "name": "ingresses",
            "namespaced": true,
            "shortNames": [
                "ing"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "kind": "Ingress",
            "name": "ingresses/status",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ]
        },
        {
            "kind": "NetworkPolicy",
            "name": "networkpolicies",
            "namespaced": true,
            "shortNames": [
                "netpol"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "kind": "PodSecurityPolicy",
            "name": "podsecuritypolicies",
            "namespaced": false,
            "shortNames": [
                "psp"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "kind": "ReplicaSet",
            "name": "replicasets",
            "namespaced": true,
            "shortNames": [
                "rs"
            ],
            "singularName": "",
            "verbs": [
                "create",
                "delete",
                "deletecollection",
                "get",
                "list",
                "patch",
                "update",
                "watch"
            ]
        },
        {
            "group": "extensions",
            "kind": "Scale",
            "name": "replicasets/scale",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ],
            "version": "v1beta1"
        },
        {
            "kind": "ReplicaSet",
            "name": "replicasets/status",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ]
        },
        {
            "kind": "ReplicationControllerDummy",
            "name": "replicationcontrollers",
            "namespaced": true,
            "singularName": "",
            "verbs": []
        },
        {
            "kind": "Scale",
            "name": "replicationcontrollers/scale",
            "namespaced": true,
            "singularName": "",
            "verbs": [
                "get",
                "patch",
                "update"
            ]
        }
    ]
}
复制代码
 
batch
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\batch\v1
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\batch\v1\register.go

package batch

import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

// GroupName is the group name use in this package
const GroupName = "batch"

 
autoscaling
 

E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\autoscaling

 

E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\autoscaling\v1\register.go

package autoscaling

import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)

// GroupName is the group name use in this package
const GroupName = "autoscaling"

 
 authentication.k8s.io  
 E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\authentication  
  E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\authentication\register.go
package authentication
import (
  "k8s.io/apimachinery/pkg/runtime"
  "k8s.io/apimachinery/pkg/runtime/schema"
)
// GroupName is the group name use in this package
const GroupName = "authentication.k8s.io"

 
apps/v1
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\apps\v1  
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\pkg\apis\apps\v1\register.go

package v1

import (
  appsv1 "k8s.io/api/apps/v1"
      "k8s.io/apimachinery/pkg/runtime/schema"
)

// GroupName is the group name use in this package
const GroupName = "apps"
......

/***

k8s.io/api/apps/v1 引入的是
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\api\apps\v1

**/

//api是外部的外部类型api

 
apiextensions.k8s.io
 

E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\apiextensions-apiserver\pkg\apis\apiextensions\v1

E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\apiextensions-apiserver\pkg\apis\apiextensions\v1\register.go
package v1

import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
)

const GroupName = "apiextensions.k8s.io"
.....

admissionregistration.k8s.io\v1
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\api\admissionregistration\v1\
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\api(Kubernetes API server(kube-apiserver)提供的外部API类型的架构)\admissionregistration\v1\register.go
源码:

package v1

import (
  metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
      "k8s.io/apimachinery/pkg/runtime"
      "k8s.io/apimachinery/pkg/runtime/schema"
)

const GroupName = "admissionregistration.k8s.io"
......

//源码依赖基础构件apimachinery
 
apiregistration.k8s.io/v1
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1\  
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1\register.go

源码:
package v1

import (
  metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
      "k8s.io/apimachinery/pkg/runtime"
      "k8s.io/apimachinery/pkg/runtime/schema"
)

// GroupName is the API group for apiregistration
const GroupName = "apiregistration.k8s.io"
.....

//源码依赖基础构件apimachinery

 
apiregistration.k8s.io/v1beta1
 
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1beta1  
E:\k8s源码\kubernetes-1.18.0\kubernetes-1.18.0\staging\src\k8s.io\kube-aggregator\pkg\apis\apiregistration\v1beta1\register.go

package v1beta1

import (
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/runtime"
        "k8s.io/apimachinery/pkg/runtime/schema"
)

// GroupName is the API group for apiregistration
const GroupName = "apiregistration.k8s.io"

.....

//源码依赖基础构件apimachinery

 
   

 

 

  

posted @   jinzi  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示