小编Nic*_*lay的帖子

使用kubectl查找新pod的名称

我是k8s的新手,我在这里遇到了一个小问题.

这是上下文:我需要kubectl delete [podname]每天通过crontask 调用一次,并等到k8s重新创建pod,然后登录该pod中的容器并运行shell命令.

所以我查询部署并得到这样的东西:

user@host:~$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
firstpod-123456789-something           1/1       Running   570        2d
secondpod-http-backend-something       1/1       Running   597        2d
Run Code Online (Sandbox Code Playgroud)

然后我写了一个bash脚本,它会在5分钟的时间间隔内删除pod.这很容易.

假设我调用kubectl delete firstpod-123456789-something并等待k8s重新创建一个新的pod.那个新的pod会有一个新的名字firstpod-[some random hash here]-something

问题是我需要在我的bash脚本中捕获该pod的名称,这样我就可以在该pod中执行命令,uname -a或者无论如何验证新pod已启动并运行正常.

我用谷歌搜索并阅读了kubectl文档,但我认为通过bash脚本有一种简单的方法可以做到这一点?我假设在这里获取pod名称的唯一方法是通过k8s API?

我很高兴在这一点上使用任何解决方案.我想知道当k8s产生新的pod时,我是否有任何重命名新pod的方法?所以我可以grep一个特定的关键字?

请注意,我不想firstpod-[0-9]-something因为那只是一个例子而得到了一些东西.很多豆荚有很多不同的名字,这只是一个例子.

谢谢!

kubectl

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

如何删除kubectl服务

我执行了以下命令: % kubectl get service

它返回了使用kubectl在某个时间点创建的服务列表:

NAME                     CLUSTER-IP   EXTERNAL-IP   PORT(S)                         AGE
car-example-service      10.0.0.129   <nodes>       8025:31564/TCP,1025:31764/TCP   10h
circle-example-service   10.0.0.48    <nodes>       9000:30362/TCP                  9h
demo-service             10.0.0.9     <nodes>       8025:30696/TCP,1025:32047/TCP   10h
example-servic           10.0.0.168   <nodes>       8080:30231/TCP                  1d
example-service          10.0.0.68    <nodes>       8080:32308/TCP                  1d
example-service2         10.0.0.184   <nodes>       9000:32727/TCP                  13h
example-webservice       10.0.0.35    <nodes>       9000:32256/TCP                  1d
hello-node               10.0.0.224   <pending>     8080:32393/TCP                  120d
kubernetes               10.0.0.1     <none>        443/TCP                         120d
mouse-example-service    10.0.0.40    <nodes>       9000:30189/TCP                  9h
spring-boot-web          10.0.0.171   <nodes>       8080:32311/TCP                  9h
spring-boot-web-purple   10.0.0.42    <nodes>       8080:31740/TCP                  9h
Run Code Online (Sandbox Code Playgroud)

我不再希望列出任何这些服务,因为当我列出资源时: % kubectl get rs

我期望只看到列出的spring-boot-web资源。

NAME                         DESIRED   CURRENT …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubectl

15
推荐指数
5
解决办法
2万
查看次数

部署无效:spec.template.metadata.labels:值无效

将我的服务部署到生产中:

envsubst < ./kubernetes/pre-production/aks.yaml | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

部署"moverick-mule-pre"无效:spec.template.metadata.labels:无效值:map [string] string {"commit":"750a26deebc3582bec4bfbb2426b3f22ee042eaa","app":"moverick-mule-pre"}:selector与模板不匹配 labels

我的yaml文件是:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: moverick-mule-pre
spec:
  replicas: 2
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: moverick-mule-pre
        commit: $CI_COMMIT_SHA
    spec:
      containers:
      - name: moverick-mule-pre
        image: $REGISTRY_SERVER_PRE/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        envFrom:
          - secretRef:
              name: moverick-pre
        livenessProbe:
          httpGet:
            path: /console
            port: 80
          initialDelaySeconds: 5
          periodSeconds: 5
        volumeMounts:
        - name: logs
          mountPath: /opt/mule/logs/
        - name: asc …
Run Code Online (Sandbox Code Playgroud)

deployment kubernetes

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

kubectl get nodes 显示 NotReady

kubernetes 1.12.1在云虚拟机中安装了两个节点,都在 Internet 代理后面。每个 VM 都有关联的浮动 IP 以通过 SSH 进行连接,它们kube-01是一个主kube-02节点,也是一个节点。执行导出:

no_proxy=127.0.0.1,localhost,10.157.255.185,192.168.0.153,kube-02,192.168.0.25,kube-01
Run Code Online (Sandbox Code Playgroud)

在运行之前kubeadm init,但我收到以下状态kubectl get nodes

NAME      STATUS     ROLES    AGE   VERSION
kube-01   NotReady   master   89m   v1.12.1
kube-02   NotReady   <none>   29s   v1.12.2
Run Code Online (Sandbox Code Playgroud)

我缺少任何配置吗?我需要在各自的 VM 中添加192.168.0.153和吗?192.168.0.25/etc/hosts

kubernetes kubectl kubeadm

14
推荐指数
2
解决办法
3万
查看次数

Kubernetes EKS Ingress和TLS

我正在尝试为应用程序完成一项非常常见的任务:

分配证书并使用TLS/HTTPS保护它.

我花了近一天时间通过文档搜索并尝试了多种不同的策略来实现这一点,但没有什么对我有用.

最初我使用Helm在EKS上设置nginx-ingress,遵循以下文档:https://github.com/nginxinc/kubernetes-ingress.我尝试使用以下配置使示例应用程序工作(咖啡馆):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress
spec:
  tls:
  - hosts:
    - cafe.example.com
    secretName: cafe-secret
  rules:
  - host: cafe.example.com
    http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

入口和所有支持的服务/部署工作正常,但有一个主要的缺失:入口没有相关的地址/ ELB:

NAME           HOSTS                 ADDRESS   PORTS     AGE
cafe-ingress   cafe.example.com                80, 443   12h
Run Code Online (Sandbox Code Playgroud)

Service LoadBalancers创建ELB资源,即:

testnodeapp    LoadBalancer   172.20.4.161     a64b46f3588fe...   80:32107/TCP     13h
Run Code Online (Sandbox Code Playgroud)

但是,Ingress没有创建地址.如何在EKS上外部暴露出Ingress控制器来处理TLS/HTTPS?

kubernetes amazon-eks

9
推荐指数
1
解决办法
5880
查看次数

在Docker容器中进行apk更新期间文件描述符描述符错误...为什么?

运行后:

docker network rm $NETNAME
docker network create --driver bridge $NETNAME --subnet "${SUBNET}0/24"
docker run --name $NODENAME -it --net $NETNAME --ip 192.168.0.2 --volume --detach $IMGNAME
Run Code Online (Sandbox Code Playgroud)

在容器中,以root身份运行apk udpdate

# apk update
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/main: Bad file descriptor
WARNING: Ignoring APKINDEX.70c88391.tar.gz: Bad file descriptor
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/community: Bad file descriptor
WARNING: Ignoring APKINDEX.5022a8a2.tar.gz: Bad file descriptor
2 errors; 33 distinct packages available
Run Code Online (Sandbox Code Playgroud)

...并击中Bad file descriptor错误。

还有许多其他人遇到相同的错误:

CDN似乎已关闭,无法使镜像工作#280

仓库问题?#279

有关如何解决此问题的建议,范围如下:

“这是一个DNS查找错误。只需将google DNS服务器(8.8.8.8、8.8.4.4)添加到Docker主机的守护进程配置文件中即可。”

... 至 ...

“将以下内容添加到您的Dockerfile:”

RUN …

linux docker dockerfile devops alpine-linux

8
推荐指数
1
解决办法
2000
查看次数

docker-compose 错误“只读文件系统”

我设计了一个 docker-compose.yml文件,它也应该与单个卷一起使用....

我创建了一个安装/dataraid在我的系统上的 RAID 驱动器。我可以读/写系统,但是在我的撰写文件中使用它时,我收到read-only file system错误消息.....将卷调整到其他路径,如/home/myname/test撰写文件工作....

我不知道是什么/dataraid使它“只读”。

什么是权限设置组合文件需要?

错误信息:

ERROR: for db  Cannot start service db: error while creating mount source path '/dataraid/nextcloud/mariadb': mkdir /dataraid: read-only file system
Run Code Online (Sandbox Code Playgroud)

撰写:

version: '3'
services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /dataraid/nextcloud/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=PASSWORD
    env_file:
      - db.env
  redis:
    image: redis
    restart: always
  app:
    image: nextcloud:fpm
    restart: always
    volumes:
      - /dataraid/nextcloud/html:/var/www/html
    environment:
      - MYSQL_HOST=db
    env_file:
      - db.env
    depends_on:
      - …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

7
推荐指数
1
解决办法
1万
查看次数

找不到宝石导轨

我正在尝试构建一个 docker 容器,但收到以下错误消息:

Step 8/12 : RUN bundle binstubs bundler --force
 ---> Running in ed94b127974b
Could not find gem 'rails (>= 5.1.5, ~> 5.1)' in any of the gem sources listed
in your Gemfile.
ERROR: Service 'dockerzon' failed to build: The command '/bin/sh -c bundle binstubs bundler --force' returned a non-zero code: 7
Run Code Online (Sandbox Code Playgroud)

我在 Gemfile 中尝试过不同版本的 Rails,但没有成功!这是我的 Gemfile 中的内容:

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
# gem 'rails', '4.2.6'
# gem 'rails', '>= 5.1.5'
gem …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems ruby-on-rails docker

6
推荐指数
2
解决办法
4万
查看次数

docker healthcheck 显示在 django 中未找到

我将健康检查添加到我的 Dockerfile 中:

HEALTHCHECK --interval=1m --timeout=5s --retries=2 --start-period=10s \
  CMD wget -qO- http://localhost:8070/healthcheck || exit 1
Run Code Online (Sandbox Code Playgroud)

在我的项目主 urls.py 文件中,我添加了条目:

url(r'^healthcheck/', lambda r: HttpResponse())
Run Code Online (Sandbox Code Playgroud)

该项目已激活并部署,因此我可以理解运行状况检查是有效的,但是 - 我不断收到:

2017-12-17 13:25:27,891 警告基地 51 140551932685128 未找到:/healthcheck

写入日志(每分钟一次)。当我从服务器内部运行 wget 时,也会添加日志条目。

是否是 healthcheck 语法、django 条目设置或 docker 中的 wget 有问题?

请协助。谢谢。

python django wget docker

5
推荐指数
1
解决办法
2573
查看次数

如何在 alpine Linux Docker 镜像中安装 libwebp

我想为我的 docker 映像安装 libwebp 依赖项。如何使用 docker 文件下载并安装 libwebp?一种方法是您可以下载 libwebp 和 ADD 文件到映像,如下所示。

ADD resources/vts/libwebp-0.4.1-linux-x86-64  /lib/libwebp-0.4.1-linux-x86-64
Run Code Online (Sandbox Code Playgroud)

但我需要通过运行这样的命令来安装它。

RUN apk upgrade -U \ && apk add ca-certificates ffmpeg \ && rm -rf/var/cache/*
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我参考下图来创建我的 docker 文件

FROM openjdk:8-jdk-alpine
Run Code Online (Sandbox Code Playgroud)

docker dockerfile alpine-linux

5
推荐指数
1
解决办法
6491
查看次数