Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
K8s API请求与kubeclient ruby gem一起返回错误请求(400)_Ruby_Kubernetes - Fatal编程技术网

K8s API请求与kubeclient ruby gem一起返回错误请求(400)

K8s API请求与kubeclient ruby gem一起返回错误请求(400),ruby,kubernetes,Ruby,Kubernetes,我正在使用发出K8s API请求,它返回错误的请求(400) 我的代码: 要求“kubeclient” 需要“json” 需要“open3” content=File.open(“nginx.yaml”).read p suffix_name=File.extname(“nginx.yaml”) 大小写后缀\u名称 那是什么时候 hash=YAML.safe\u加载(内容) p“yaml内容为:#{hash}” 那么“.json”是什么时候 hash=JSON.parse(内容) p“json内

我正在使用发出K8s API请求,它返回错误的请求(400)

我的代码:

要求“kubeclient”
需要“json”
需要“open3”
content=File.open(“nginx.yaml”).read
p suffix_name=File.extname(“nginx.yaml”)
大小写后缀\u名称
那是什么时候
hash=YAML.safe\u加载(内容)
p“yaml内容为:#{hash}”
那么“.json”是什么时候
hash=JSON.parse(内容)
p“json内容为:#{hash}”
结束
hash.each do |键、值|
放置“#{key}为:#{value}”
如果键==“种类”
@种类=值到下箱
结束
结束
config=Kubeclient::config.read(“rancher\u kube\u config.kubeconfig”)
kubeconfig\u text=File.read(“rancher\u kube\u config.kubeconfig”)
config\u context=Kubeclient::config.new(YAML.safe\u load(kubeconfig\u text),nil)
@config=config_context.instance_eval{@kcfg}
config=@config
部署=Kubeclient::Resource.new(散列)
cert_store=OpenSSL::X509::store.new
ssl_选项={
证书商店:证书商店,
验证\u ssl:OpenSSL::ssl::验证\u无
}
context=config\u context.context
验证选项={
承载令牌:context.auth\u选项[:承载令牌]
}
client=Kubeclient::client.new('https://{my_host}/k8s/clusters/c-h4mdn/api',auth_选项:auth_选项,ssl_选项:ssl_选项)
开始
@create_entity=client.send(“create#{@kind}”,部署)
rescue Kubeclient::HttpError=>e
体育课
@错误代码=e.错误代码
@message=e.message
结束
如果@create_entity.nil?
p“假”
其他的
p“成功”
结束
config.kubeconfig
的内容:

apiVersion: v1
kind: Config
clusters:
- name: "k8s"
  cluster:
    server: "https://MY_HOST/k8s/clusters/c-h4mdn"
    certificate-authority-data: ...
- name: "k8s-k8smaster"
  cluster:
    server: "https://MY_HOST:6443"
    certificate-authority-data: ...

users:
- name: "user-8lhbv"
  user:
    token: my_token

contexts:
- name: "k8s"
  context:
    user: "user-8lhbv"
    cluster: "k8s"
- name: "k8s-k8smaster"
  context:
    user: "user-8lhbv"
    cluster: "k8s-k8smaster"

current-context: "k8s"
nginx.yaml的内容

apiVersion: apps/v1
kind: Pod
metadata:
  name: nginx-test2
  labels:
     app: nginx
  namespace: default
spec:
     containers:
        - name: nginx
          image: nginx
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 80
     restartPolicy: Always
我得到的错误是,我认为可能是
apiVersion
错误:

#<Kubeclient::HttpError: HTTP status code 400, Pod in version "v1" cannot be handled as a Pod: no kind "Pod" is registered for version "clusters/v1" in scheme "k8s.io/kubernetes/pkg/api/legacyscheme/scheme.go:29" for POST https://MY_HOST/k8s/clusters/c-h4mdn/api/v1/namespaces/default/pods>
#

我不确定kubeclient gem是否支持带有路径的服务器地址(
MY_HOST/k8s/clusters/c-h4mdn/api/v1
而不是
MY_HOST/api/v1
)。k8s客户端gem有(免责声明:我是作者之一)@Kimmo Lehto感谢您的回答,当我使用GET方法请求相同的路径时,我实际上可以得到结果,但是POST方法不起作用。我不确定kubeclient gem是否支持带路径的服务器地址(
MY_HOST/k8s/clusters/c-h4mdn/api/v1
而不是
MY_HOST/api/v1
).k8s客户端gem确实如此(免责声明:我是作者之一)@Kimmo Lehto感谢您的回答,当我使用GET方法请求相同的路径时,我实际上可以得到结果,但POST方法不起作用
#<Kubeclient::HttpError: HTTP status code 400, Pod in version "v1" cannot be handled as a Pod: no kind "Pod" is registered for version "clusters/v1" in scheme "k8s.io/kubernetes/pkg/api/legacyscheme/scheme.go:29" for POST https://MY_HOST/k8s/clusters/c-h4mdn/api/v1/namespaces/default/pods>