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
带有Jenkins的Kubernetes插件失败_Jenkins_Kubernetes - Fatal编程技术网

带有Jenkins的Kubernetes插件失败

带有Jenkins的Kubernetes插件失败,jenkins,kubernetes,Jenkins,Kubernetes,我正在尝试将Kubernetes作为云添加到Jenkins服务器,并提供相应的Kubernetes URL和其他详细信息。当我添加详细信息并测试连接时 我得到以下错误 连接到时出错:执行时失败:GET at:。消息:用户“system:anonymous”无法在命名空间“default”中列出POD 我尝试使用--unsecure选项执行curl,但记录了以下相同的错误 消息:用户“system:anonymous”无法在命名空间“default”中列出POD 我尝试使用下面的kubectl命令

我正在尝试将Kubernetes作为云添加到Jenkins服务器,并提供相应的Kubernetes URL和其他详细信息。当我添加详细信息并测试连接时 我得到以下错误

连接到时出错:执行时失败:GET at:。消息:用户“system:anonymous”无法在命名空间“default”中列出POD

我尝试使用--unsecure选项执行curl,但记录了以下相同的错误

消息:用户“system:anonymous”无法在命名空间“default”中列出POD

我尝试使用下面的kubectl命令添加jenkins和用户凭据,以clusteradminrole身份登录jenkins

kubectl创建rolebinding jenkins管理绑定——clusterrole=admin——user=jenkins——namespace=default

但还是一样的错误

少了什么

编辑1:已尝试按照建议执行以下操作

openssl genrsa-out jenkins.key 2048

openssl请求-new-key-jenkins.key-out-jenkins.csr-subc“/CN=jenkins/O=admin\u jenkins”

openssl x509-req-in-jenkins.csr-CA/etc/kubernetes/pki/CA.crt-CAkey/etc/kubernetes/pki/CA.key-CAcreateserial-out-jenkins.crt-500天

kubectl config set credentials jenkins--client certificate=/root/pods/admin\u jenkins/.certs/jenkins.crt--client key=/root/pods/admin\u jenkins/.certs/jenkins.key

kubectl config set context jenkins context--cluster=kubernetes--namespace=default--user=jenkins

kubectl create-f role.yaml(角色文件如所述)

kubectl create-f role-binding.yaml

即使在这之后

kubectl --context=jenkins-context get deployments 
gives the following error
"Error from server (Forbidden): User "jenkins" cannot list deployments.extensions in the namespace "default". (get deployments.extensions)"
更新2:

after following above steps 
"kubectl --context=jenkins-context get deployments" was successful.

 i did the whole exercise after doing a kubeadm reset and it worked

但是,当我试图使用K8的插件将其添加为云时,问题仍然是将K8与Jenkins集成。

您是否定义了角色
admin
?如果没有,请定义管理员角色。下面是您的文档,请参考

更新: 1.您可以像这样创建文件
role.yaml
,然后创建角色。然后运行
kubectl apply-f role.yaml

 kind: Role
  apiVersion: rbac.authorization.k8s.io/v1beta1
  metadata:
    namespace: default
    name: admin
  rules:
  - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # You can also use ["*"]
您需要通过具有此角色的客户端证书进行身份验证

从第二个问题开始,您尝试使用此帐户验证jenkin应用程序用户。我不确定这种方法是否适合你

2017年9月25日更新

Username: admin
Group: jenkins


 openssl genrsa -out admin.key 2048
 openssl req -new -key admin.key -out admin.csr -subj "/CN=admin/O=jenkins"

 #Run this as root user in master node
 openssl x509 -req -in admin.csr -CA /etc/kubernetes/pki/ca.crt  -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out admin.crt -days 500

 mkdir .certs/
 mv admin.* .certs/
 kubectl config set-credentials admin --client-certificate=/home/jenkin/.certs/admin.crt  --client-key=/home/jenkin/.certs/admin.key
 kubectl config set-context admin-context --cluster=kubernetes --namespace=jenkins --user=admin 
将其保存在文件中并创建角色

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: jenkins
  name: deployment-manager
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["deployments", "replicasets", "pods"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # You can also use ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: deployment-manager-binding
  namespace: jenkins
subjects:
- kind: User
  name: admin
  apiGroup: ""
roleRef:
  kind: Role
  name: deployment-manager
  apiGroup: ""
运行get pods命令

kubectl --context=admin-context get pods

否,尚未定义特定的管理员角色。但是我尝试添加用户,正如上面使用kubectl命令所示。是否应为此编写一个带有RBAC策略的单独pod文件?同时,我的k8群集和jenkins主机运行在同一台主机(VM)上,因此我们是否仍需要为其生成证书?Jenkins会创建一个自己的证书供其他用户访问。我们能用这个吗?(抱歉,如果这是一个有点noobish的问题)。我只是想澄清一下这个问题,我已经根据你的建议修改了我的问题。仍然是同一个问题通过创建安全上下文再次重复此练习,但没有成功。不确定我是否必须创建ClusterRoleBinding角色…我在集群中测试了它是否有效。让我用我使用的命令编辑和更新我的帖子。