【问题标题】:Error deployment aspnetcore webapi to minikube将 aspnetcore webapi 部署到 minikube 时出错
【发布时间】:2019-09-10 16:15:21
【问题描述】:

当我尝试执行此命令 kubectl apply -f mydeployment.yaml 时收到错误错误:SchemaError(io.k8s.api.core.v1.ContainerState): invalid object doesn't have additional properties。如何将我的 aspnetcore webapi 成功部署到本地 Kubernetes 集群?

我已经尝试通过运行命令 choco upgrade minikube 来升级 minikube。它说我已经有了最新版本。 minikube v1.0.0 是根据您的来源提供的最新版本。

我创建的 deployment.yaml 如下所示。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        name: myfirstdockerapi
        image: myfirstdockerapi
        ports:
        - containerPort: 80

【问题讨论】:

  • 请在问题中添加mydeployment.yaml。似乎有语法错误(可能是由于 YAML 缩进)
  • iVersion:apps/v1 种类:部署元数据:名称:nginx-deployment 标签:app:nginx 规范:副本:3 选择器:matchLabels:app:nginx 模板:元数据:标签:app:nginx 规范:容器:-名称:myfirstdockerapi 图像:myfirstdockerapi 端口:-containerPort:80
  • 请将其作为缩进的 YAML 添加到问题中,否则很难发现可能的问题
  • 我已在我的问题中以更易读的格式添加了我的 yaml 文件的内容。我希望你能帮助我。我挣扎了几天才让它继续下去。

标签: kubernetes minikube


【解决方案1】:

containers 元素需要一个列表,因此您需要在每个条目前面加上一个破折号。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
  labels:
    app: app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: myfirstdockerapi
        image: myfirstdockerapi
        ports:
        - containerPort: 80

如果您不确定是否可以随时使用 kubectl 来验证您的文件而不创建它: kubectl apply -f sample.yaml --validate --dry-run 以防万一,确保您的 kubectl 版本与您的 kubernetes 集群的版本匹配。

【讨论】:

  • 不幸的是,您的建议并没有解决我的问题。错误仍然存​​在。即使我使用空运行选项对其进行了测试,我也会收到相同的错误。检查 kubectl 的版本会导致客户端的版本为 v1.10.11,服务器上的版本为 v1.14.0。所以,我认为问题是 kubectl 版本和我的 kubernetes 集群的版本不正确?那正确吗?在那种情况下,我不知道如何将我的客户端版本升级到 v1.14.0。你能帮我吗?
  • 尝试删除并重新创建部署:kubectl delete -f mydeployment.yaml 并再次应用它。似乎是某种奇怪的状态。
  • 当我执行 kubectl delete -f deployment.yaml。它导致此错误:来自服务器的错误(未找到):停止“deployment.yaml”时出错:找不到部署.extensions“app”
【解决方案2】:


在开始之前清理所有内容:

rm -rf ~/.minikube

根据文档:

您必须使用在一个小版本差异内的 kubectl 版本 你的集群。例如,v1.2 客户端 应与 v1.1、v1.2 和 v1.3 一起使用 掌握。使用最新版本的 kubectl 有助于避免不可预见的问题。

Github 上的 Minikube 资源你可以找到here:

为避免交互问题 - 将默认 Kubernetes 版本更新为 v1.14.0 #3967 注意:我们还建议将 kubectl 更新到最新版本 (v1.13+)

最新版本的minikube请关注官方文档here

Kubernetes 博客 - here,
Stackoverlow here,
巧克力here,

在附加的部署中存在缩进问题(已更正),请重试。

spec:
  containers:
  - name: myfirstdockerapi
    image: myfirstdockerapi
    ports:
    - containerPort: 80

【讨论】:

  • 我不知道如何更新 Kubectl 的客户端版本。我想我必须在某处用较新的版本替换现有版本。我该怎么做?
  • 您好,您按照说明操作了吗? “安装和设置 kubectl”。请清理以开始全新安装:- rm -rf ~/.minikuberm -rf ~/.kube。请按照说明安装 - kubectl(使用 curl 和二进制文件、Powershell、Choco)here like this curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/windows/amd64/kubectl.exe
  • 最后,我通过在浏览器中输入以下命令更新了客户端版本的 Kubectl:storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/… Kubectl 已下载。但我想覆盖现有版本的 Kubectl。我该怎么做?
  • 根据在 Windows 和 linux here 上安装 kubectl 的文档。使用 powershell Note: Updating the installation is performed by rerunning the two commands listed in step 1. 此外,如果您使用的是 Windows 操作系统 tutorial,则可以按照此处的说明进行操作。
  • 我已经找到了那个文档。我下载了最新版本的 kubectl 我创建了一个新目录 C:\Kube,将它放在我的用户系统变量的路径中。但是当我在不同的目录中执行 kubectl 版本时,我仍然收到我的客户端版本的 Major:"1", Minor:"10"。我的一些路径设置有问题。
猜你喜欢
  • 1970-01-01
  • 2016-04-20
  • 2013-07-04
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多