标签: minikube

在 Kubernetes 上部署 Spring Boot 应用程序:应用程序使用环境变量中的错误端口属性

我正在尝试在 Kubernetes (Minikube) 上部署一个“Hello world”Spring Boot 应用程序。该应用程序非常简单,只有一种方法,映射到 GET 资源上。我什至没有指定端口。

我现在尝试在 Minikube 上部署该应用程序,并使用服务使其可用:

kind: Service
apiVersion: v1
metadata:
  name: server
spec:
  selector:
    app: server
  ports:
  - protocol: TCP
    port: 8080
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: server
spec:
  selector:
      matchLabels:
        app: server
  replicas: 3
  template:
    metadata:
      labels:
        app: server
    spec:
      containers:
        - name: server
          image: kubernetes-server:latest
          imagePullPolicy: Never
          ports:
            - name: http
              containerPort: 8080
Run Code Online (Sandbox Code Playgroud)

如果我使用此配置启动部署(即先启动服务,然后启动部署),Pod 在启动过程中会失败。在日志中,我可以找到以下消息:

***************************
APPLICATION FAILED TO START
***************************

Description:

Binding to target         
org.springframework.boot.autoconfigure.web.ServerProperties@42f93a98 failed: …
Run Code Online (Sandbox Code Playgroud)

spring-boot kubernetes minikube

2
推荐指数
1
解决办法
2126
查看次数

从 pod 内部列出 pod 禁止

我是 Kubernetes 新手。我试图通过 javascript 客户端从 pod/容器内部列出命名空间中的所有 pod。

import k8s = require('@kubernetes/client-node');

const kc = new k8s.KubeConfig();
kc.loadFromDefault();

const k8sApi = kc.makeApiClient(k8s.Core_v1Api);

k8sApi.listNamespacedPod('development')
    .then((res) => {
        console.log(res.body);
    }).catch((err) => {
        console.log(err);
    });
Run Code Online (Sandbox Code Playgroud)

当我查看 pod 日志时出现响应错误:

{ kind: 'Status',
 apiVersion: 'v1',
 metadata: {},
 status: 'Failure',
 message:
  'pods is forbidden: User "system:serviceaccount:default:default" cannot list pods in the namespace "development"',
 reason: 'Forbidden',
 details: { kind: 'pods' },
 code: 403 } } 
Run Code Online (Sandbox Code Playgroud)

我相信我需要创建一个新用户或向角色添加一些权限,但我不确定在哪里以及如何创建。谢谢

kubernetes minikube

2
推荐指数
1
解决办法
3211
查看次数

Prometheus Operator + 新 Kubernetes Minikube = DeadMansSwitch + KubeControllerManagerDown + KubeSchedulerDown + TargetDown

如果我启动一个全新的、空的 minikube 和helm install最新stable/prometheus-operator的严格默认设置,我会看到四个活动的 Prometheus 警报。

在这个超级简化的场景中,我有一个干净的新 minikube,除了 Prometheus 之外什么都没有运行,应该没有问题,也没有警报。这些警报是假的还是坏了?我的设置有问题吗?或者我应该提交错误报告并暂时禁用这些警报?

以下是我的基本设置步骤:

minikube delete
# Any lower memory/cpu settings will experience problems
minikube start --memory 10240 --cpus 4 --kubernetes-version v1.12.2
eval $(minikube docker-env)
helm init
helm repo update
# wait a minute for Helm Tiller to start up.
helm install --name my-prom stable/prometheus-operator
Run Code Online (Sandbox Code Playgroud)

等待几分钟让一切启动,然后在 Prometheus 服务器和 Grafana 上运行端口转发:

kubectl port-forward service/my-prom-prometheus-operato-prometheus 9090:9090
kubectl port-forward service/my-prom-grafana 8080:80
Run Code Online (Sandbox Code Playgroud)

然后去http://localhost:9090/alerts看看:

DeadMansSwitch (1 active)
KubeControllerManagerDown (1 active)
KubeSchedulerDown (1 …
Run Code Online (Sandbox Code Playgroud)

kubernetes prometheus minikube prometheus-operator

2
推荐指数
1
解决办法
1908
查看次数

为什么 minikube 启动有时会在 mac os High Sierra 10.13.6 上挂起?

我昨天将 Mac 升级到版本 10.13.6,并重新启动了我的 Mac 笔记本电脑。现在,minikube 无法启动。Docker 社区版 18.06.1-ce 正在运行。日志如下。任何人都可以发现哪里出了问题。我如何进一步调试这个?

$ minikube version
minikube version: v0.30.0


$ minikube update-check
CurrentVersion: v0.30.0
LatestVersion: v0.30.0


$ minikube start --v=999 --logtostderr   --vm-driver=hyperkit
W1101 12:02:25.674822   24809 root.go:146] Error reading config file at /Users/user/.minikube/config/config.json: open /Users/user/.minikube/config/config.json: no such file or directory
I1101 12:02:25.675028   24809 notify.go:121] Checking for updates...
I1101 12:02:25.971633   24809 start.go:99] Viper configuration:
Aliases:
map[string]string{}
Override:
map[string]interface {}{"v":"999"}
PFlags:
map[string]viper.FlagValue{"apiserver-names":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a460)}, "network-plugin":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a8c0)}, "registry-mirror":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a6e0)}, "vm-driver":viper.pflagValue{flag:(*pflag.Flag)(0xc420367c20)}, "cpus":viper.pflagValue{flag:(*pflag.Flag)(0xc420367d60)}, "disk-size":viper.pflagValue{flag:(*pflag.Flag)(0xc420367e00)}, "feature-gates":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a960)}, "hyperkit-vsock-ports":viper.pflagValue{flag:(*pflag.Flag)(0xc42033ac80)}, "disable-driver-mounts":viper.pflagValue{flag:(*pflag.Flag)(0xc420367ae0)}, "gpu":viper.pflagValue{flag:(*pflag.Flag)(0xc42033ad20)}, "nfs-share":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a140)}, "uuid":viper.pflagValue{flag:(*pflag.Flag)(0xc42033ab40)}, "apiserver-name":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a3c0)}, "cache-images":viper.pflagValue{flag:(*pflag.Flag)(0xc42033aa00)}, "xhyve-disk-driver":viper.pflagValue{flag:(*pflag.Flag)(0xc42033a0a0)}, …
Run Code Online (Sandbox Code Playgroud)

kubernetes minikube

2
推荐指数
1
解决办法
3246
查看次数

kubectl ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec;

When I try to run kubectl apply -f 02-php-apache-deployment.yaml I get the following error:

error: error validating "02-php-apache-deployment.yaml": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec; if you choose to ignore these errors, turn validation off with --validate=false

This is my Deployment yml file:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  replicas: 3
  template:
    metadata:
      labels:
        role: php-apache
    spec:
      containers:
      - name: php-apache
        image: k8s.gcr.io/hpa-example
        imagePullPolicy: IfNotPresent        
        ports:
        - containerPort: 80
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password" …
Run Code Online (Sandbox Code Playgroud)

kubectl minikube

2
推荐指数
1
解决办法
4140
查看次数

minikube ip 无法访问

我创建了一项名为flyman-webapp 的服务:

apiVersion: v1
kind: Service
metadata:
 name: fleetman-webapp

spec:
 selector:
  app: webapp

 ports:
  - name: http
    port: 80
    nodePort: 30080

 type: NodePort
Run Code Online (Sandbox Code Playgroud)

还有一个名为webapp的 pod :

apiVersion: v1
kind: Pod
metadata:
 name: webapp
 labels:
  app: webapp
spec:
 containers:
 - name: webapp
   image: richardchesterwood/k8s-fleetman-webapp-angular:release0
Run Code Online (Sandbox Code Playgroud)

我检查了minikube ip

192.168.99.102

但是当我在浏览器中输入192.168.99.102:30080 时,webapp 无法访问:在此处输入图片说明

请注意,我使用的是 Ubuntu 最新版本。我进一步验证了代理和防火墙是否处于活动状态:

猫 /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Run Code Online (Sandbox Code Playgroud)

iptables -L :

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP) …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl minikube

2
推荐指数
2
解决办法
4015
查看次数

如何让创建的 pod 运行一个应用程序(命令和参数),同时有一个部署和服务引用它?

上下文
技术:Java、Docker 工具箱、Minikube。
我有一个 java web 应用程序(已经打包为 web-tool.jar),我想在运行时同时拥有 kubernetes 的所有好处。
为了指示kubernetes 在本地获取图像,我使用了图像标签:

docker build -t despot/web-tool:1.0 .
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式使其可用于 minikube:

docker save despot/web-tool:1.0 | (eval $(minikube docker-env) && docker load)
Run Code Online (Sandbox Code Playgroud)

泊坞窗文件是:

FROM openjdk:11-jre
ADD target/web-tool-1.0-SNAPSHOT.jar app.jar
EXPOSE 1111
EXPOSE 2222
Run Code Online (Sandbox Code Playgroud)

1. 我怎样才能创建 pod,运行 java 应用程序,同时有一个部署和服务引用它?

1.1. 我可以创建一个部署来在创建 pod 时传播命令和参数吗?(最适合我,因为我确保在创建 pod 之前创建部署和服务)
1.2。如果 1.1. 不可行,我可以 kubectl 将一些带有命令和参数的 pod 配置应用到已经创建的部署/pod/服务吗?(更糟糕的解决方案是额外的手动步骤)
1.3。如果 1.2. 不可行,是否可以创建部署/服务并将其附加到已经运行的 pod(以“kubectl run ... java -jar app.jar reg”开头)?

我尝试的是
a)创建一个部署(自动启动一个 pod)并公开(创建服务):

kubectl create deployment …
Run Code Online (Sandbox Code Playgroud)

java docker kubernetes docker-toolbox minikube

2
推荐指数
1
解决办法
1222
查看次数

minikube kubernetes 上的待处理 pod:cpu 不足

three services在我的本地运行一个应用程序,minikube同时安装在一个有16 个 cpu 和 64 GB 内存的服务器上,其中一个replicas是 2,我只为每个服务设置了 resources.limits,如下所示

resources:
  limits:
    cpu: "2"
    memory: "209715200"
Run Code Online (Sandbox Code Playgroud)

所有服务资源限制都是一样的。

但是,pending出现了一些服务。

待处理的Pod描述部分输出如下

Limits:
  cpu:     2
  memory:  209715200
Requests:
  cpu:     2
  memory:  209715200
...

Events:
  Type     Reason            Age        From               Message
  ----     ------            ----       ----               -------
  Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
  Warning  FailedScheduling  <unknown>  default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
Run Code Online (Sandbox Code Playgroud)

结果kubectl get pod如下

kubectl get pod …
Run Code Online (Sandbox Code Playgroud)

kubernetes minikube

2
推荐指数
1
解决办法
2256
查看次数

为什么外部调度程序不能在 minikube/kubernetes 上实例化运行 spark?

我正在尝试在 kubernetes 上运行 spark(使用带有 VirtualBox 或 docker 驱动程序的 minikube,我在两者中都进行了测试),现在我遇到了一个我不知道如何解决的错误。

错误是“SparkException:无法实例化外部调度程序”。我是 Kubernetes 世界的新手,所以我真的不知道这是否是一个新手错误,但是尝试自己解决我失败了。

请帮我。

在接下来的几行中,按照命令和错误进行操作。

我使用这个火花提交命令:

 spark-submit --master k8s://https://192.168.99.102:8443 \
--deploy-mode cluster \
--name spark-pi \
--class org.apache.spark.examples.SparkPi \
--conf spark.executor.instances=2 \
--executor-memory 1024m \
--conf spark.kubernetes.container.image=spark:latest \
local:///opt/spark/examples/jars/spark-examples_2.12-3.0.0.jar
Run Code Online (Sandbox Code Playgroud)

我在 pod 中遇到了这个错误:

20/06/23 15:24:56 INFO SparkContext: Submitted application: Spark Pi
20/06/23 15:24:56 INFO SecurityManager: Changing view acls to: 185,luan
20/06/23 15:24:56 INFO SecurityManager: Changing modify acls to: 185,luan
20/06/23 15:24:56 INFO SecurityManager: Changing view acls groups to: 
20/06/23 15:24:56 INFO SecurityManager: …
Run Code Online (Sandbox Code Playgroud)

apache-spark kubernetes minikube

2
推荐指数
1
解决办法
1147
查看次数

为什么我不能在 minikube ssh 中使用命令历史记录

我的 Windows 10 电脑上有一个 minikube K8s 1 节点集群。我可以使用 SSH 进入这个集群minikube ssh

我遇到的问题是我无法使用箭头键恢复上一个命令。我做了一些环顾和诊断:

  • set -o | grep historyhistory on
  • echo $HISTFILE给了/home/docker/.bash_history。这确实在用户的主文件夹中,并且在再次exit执行并执行后该文件存在minikube ssh
  • echo $HISTSIZE并且echo $HISTFILESIZE都给了 500
  • echo $SHELL/bin/bash

所有这些都告诉我应该启用命令历史记录,但似乎并非如此。我尝试使用 Powershell 和 cmd 来运行minikube ssh,无论有没有 Windows 终端。

PowerShell 和 cmd 本身都有可用的命令历史记录,但是一旦使用 minikube 进行 SSH 连接,bash shell 中的历史记录就不起作用了。

有谁知道如何在执行后使命令历史记录工作minikube shh

编辑: 我试过minikube ssh --native-ssh=false,但这并没有改变任何东西。

ssh bash kubernetes minikube command-history

2
推荐指数
1
解决办法
173
查看次数