使用jenkins部署头盔图表时出现“服务器找不到请求的资源(获取容器)”错误

时间:2019-06-01 07:56:19

标签: jenkins kubernetes

我正在尝试为示例kubernetes集群部署部署kubernetes掌舵图。我创建了一个示例舵图,并添加了docker映像参考,并使用终端命令“ helm install”部署了舵图。而且微服务可以成功访问,没有任何问题。

此后,我创建了一个jenkins管道作业,并仅添加了一个包含部署步骤的阶段。我以如下方式添加了

pipeline 
{
    agent any
    stages 
        {
            stage ('helmchartinstall')
                {
                    steps
                    {
                        sh 'helm install spacestudychart'
                    }
                }
        }       
}

我收到类似以下的错误,

[Pipeline] { (helmchartinstall)
[Pipeline] sh
+ helm install spacestudychart
Error: the server could not find the requested resource (get pods)

当我通过终端运行时,相同的命令正在工作。

更新

要将耕作机升级到最新版本,我在终端上运行“ helm init --upgrade”命令。但是错误仍然存​​在。

“ helm version”的输出如下所示,

Client: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.0", GitCommit:"05811b84a3f93603dd6c2fcfe57944dfa7ab7fd0", GitTreeState:"clean"}

“ kubectl版本--short”的输出如下所示,

Client Version: v1.14.1
Server Version: v1.13.5

我需要升级kubectl版本吗?如果需要做,我在这里需要遵循什么? 。有人可以帮我找出在与詹金斯一起跑步时的确切问题是什么吗?

4 个答案:

答案 0 :(得分:6)

这是100%正常工作,我之前遇到过这个问题。

首先构建jenkins用户,然后再构建 将config复制到/home/jenkins/.kube/

cp $HOME/.kube/config /home/jenkins/.kube/ 
or 
cp ~/.kube/config /home/jenkins/.kube/ 

然后使用

 chmod 777 /home/jenkins/.kube/config 

您的kubernetes命令需要您的kubernetes配置文件。这就像您的kubernetes集群的密钥或密码,因此您应该将kubernetes配置提供给您的jenkins,然后它就可以运行kubernetes命令

这是非常好的教程,可以帮助我解决它。

tutorial

UPDATE1 您应该具有jenkins用户来添加jenkins用户,您应该将jenkins用户添加到ubuntu或centos或..

adduser jenkins

这是添加用户的好链接 Adding user

更新2 您应该在将kubectl用作jenkins的服务器上安装它,以便kubectl命令可以正常工作,然后将~/.kube/config集群中kubernetes中的配置复制到{{1} }先前在其上安装了jenkins的服务器。

答案 1 :(得分:2)

kubectl版本

根据kubectl version skew policy

  

kubectl 在以下版本的一个次要版本(旧版本或新版本)中受支持    kube-apiserver

因此,将 v1.14 客户端与 v1.13 服务器版本一起使用是没有问题的。


帮助问题

您所描述的错误通常在具有相同名称的先前发行版存在时发生。您可以使用updated () { alert('New update has been released. Page is refreshing') window.location.reload(true) }, 进行检查。在这种情况下,应改用helm upgrade

现有版本很有可能处于helm ls --all状态。如果是这样,即使FAILED也会失败。您可以使用helm upgrade删除发行版,然后尝试使用helm delete spacestudychart --purge重新安装。

掌舵机将发布信息存储为ConfigMap,因此导致此问题的另一个原因可能是“中断”发布的无效数据。如果遇到此问题,您的情况应如下所示:

helm install

在这种情况下,请删除ConfigMap并尝试再次安装该发行版:

$ helm ls --all

$ kubectl get cm --all-namespaces -l OWNER=TILLER
NAMESPACE     NAME               DATA   AGE
kube-system   spacestudychart.v1   1      22h

答案 2 :(得分:2)

  

当我通过终端运行时,相同的命令正在工作。

我怀疑您可能以root用户的身份从终端运行命令,该用户将可以访问您的kubeconfig

jenkins管道将在jenkins用户下运行,该用户可能具有对kubeconfig文件的读取访问权限。确保jenkins用户对该文件具有读取权限。

答案 3 :(得分:1)

  

F0604 07:44:46.468122 2620 helpers.go:114]错误:yaml:第10行:在此情况下不允许使用映射值

表示$HOME/.kube/config(或环境变量$KUBECONFIG指向的任何文件)是无效的yaml;没有看到它的内容,除了“修复您的kubeconfig”之外,我们无法确定修复的内容,但可以肯定的是正确的答案,即使它并不像我们俩所希望的那样可行