标签: kubernetes-pod

Kubernetes:以 root 身份运行容器

我确实了解这样做的缺点,但是我的图像只能与在其中运行 cmd 的 root 用户一起使用。

服务器 kubernetes 版本是:v1.19.14. 我的里面deployment.yaml有:

spec:
  containers:
    - name: myapp
      securityContext:
        allowPrivilegeEscalation: false
        runAsUser: 0
      command: ...
      image:...
Run Code Online (Sandbox Code Playgroud)

但是当describe rs我看到以下内容时:

  Type     Reason        Age                From                   Message
  ----     ------        ----               ----                   -------
  Warning  FailedCreate  0s (x13 over 21s)  replicaset-controller  Error creating: pods "myapp-7cdd994c56-" is forbidden: PodSecurityPolicy: unable to admit pod: [spec.containers[0].securityContext.runAsUser: Invalid value: 0: running with the root UID is forbidden]
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

root security-context kubernetes kubernetes-helm kubernetes-pod

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

K8s 上 pod 中的容器初始化顺序

我想在一个 Pod 上运行两个容器。

container1是一个尝试连接到在container2.

如何确保 sql 容器 ( container2) 将运行并在启动前准备就绪container1

initContainer在这里不起作用,因为它将在两个容器之前运行。

这是我的 compose.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: sql-test-pod
  labels:
    name: sql-test
spec:
  restartPolicy: Never
  containers:
    - name: my-sqldb
      image: docker-registry.com/database
      imagePullPolicy: Always
      resources:
        limits:
          memory: "4096Mi"
          cpu: "750m"
        requests:
          memory: "4096Mi"
          cpu: "750m"
    - name: tests
      tty: true
      stdin: true
      image: docker-registry.com/test
      imagePullPolicy: Always
      resources:
        limits:
          memory: "4096Mi"
          cpu: "750m"
        requests:
          memory: "4096Mi"
          cpu: "750m"
      env:
      - name: sqlhostname
        value: "SqlHostnamePlaceholder" …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-pod

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

如何从 K3s 集群中的应用程序 pod 中删除机密的依赖关系

我有一个 k3s 集群,我的应用程序 Pod 正在运行。当我登录(使用命令)时,在所有 Pod 中kubectl exec <pod_name> -n <ns> -it /bin/bash都有kubernetes.io一个目录,其中包含任何人都可以获得的秘密令牌 cat token

root@Ubuntu-VM: kubectl exec app-test-pod -n app-system -it /bin/bash
root@app-test-pod:/var/run/secrets/kubernetes.io/serviceaccount# ls -lhrt
total 0
lrwxrwxrwx 1 root root 12 Oct 11 12:07 token -> ..data/token
lrwxrwxrwx 1 root root 16 Oct 11 12:07 namespace -> ..data/namespace
lrwxrwxrwx 1 root root 13 Oct 11 12:07 ca.crt -> ..data/ca.crt
Run Code Online (Sandbox Code Playgroud)

这似乎是一个安全威胁(或漏洞)。有人可以让我知道是否有办法从 pod 中删除此依赖项,以便我可以限制用户(甚至是 root 用户)在登录 pod 时访问此机密?另外,如果这是可能的,那么 pod 将如何与 API 服务器通信?

kubernetes kubernetes-security kubernetes-pod kubernetes-secrets k3s

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

Shell 脚本应等到 kubernetes pod 运行

在一个简单的 bash 脚本中,我想运行多个kubectlhelm命令,例如:

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.5.4 \
  --set installCRDs=true
kubectl apply -f deploy/cert-manager/cluster-issuers.yaml
Run Code Online (Sandbox Code Playgroud)

我的问题是,在helm install命令之后我必须等到 cert-manager pod 运行,然后kubectl apply才能使用该命令。现在脚本调用它太早了,所以它会失败。

bash shell kubectl kubernetes-pod

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

如何在 20 天后自动自毁 Kubernetes Pod?

我需要设置一个 kubernetes pod 来为我的 Web 应用程序的客户端创建演示环境,试用期为 20 天。20天后,pod应该会自动删除,如何让pod在20天后自毁?我使用 Rancher 来部署我的 Pod。

demo kubernetes rancher kubernetes-pod

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

无法连接到 Kubernetes NodePort 服务

我有一个使用以下内容创建的正在运行的 Pod pod-definition.yaml

apiVersion: v1
kind: Pod
metadata:
    name: microservice-one-pod-name
    labels:
        app: microservice-one-app-label
        type: front-end
spec:
    containers:
    - name: microservice-one
      image: vismarkjuarez1994/microserviceone
      ports:
      - containerPort: 2019
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令创建了一个服务service-definition.yaml

kind: Service
apiVersion: v1
metadata:
  name: microserviceone-service
spec:
  ports:
    - port: 30008
      targetPort: 2019
      protocol: TCP
  selector:
    app: microservice-one-app-label
  type: NodePort
Run Code Online (Sandbox Code Playgroud)

然后我跑去kubectl describe node minikube寻找我应该连接的节点 IP——结果是:

Addresses:
  InternalIP:  192.168.49.2
  Hostname:    minikube
Run Code Online (Sandbox Code Playgroud)

但是当我运行以下curl命令时没有得到任何响应:

curl 192.168.49.2:30008
Run Code Online (Sandbox Code Playgroud)

192.168.49.2:30008当我尝试从浏览器访问时,请求也会超时。

Pod 日志显示容器已启动并正在运行。为什么我无法访问我的服务?

kubernetes kubernetes-pod kubernetes-service

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

Kubernetes | 是否有任何可用于Pod重新启动的钩子?

Pod生命周期事件是否有任何可用的钩子?具体来说,我想运行一个命令以在Pod重新启动时上传日志。

kubernetes google-kubernetes-engine kubectl kubernetes-pod

4
推荐指数
1
解决办法
134
查看次数

Kubernetes删除Pod后PV/PVC的状态

我有一个 Kubernetes 集群,其中部署了一些 pod(DB、前端、Redis)。我无法完全掌握的部分是删除 pod 后 PVC 会发生什么。

例如,如果我删除绑定到 CLAIM_A 的 POD_A,我知道 CLAIM_A 不会自动删除。如果我然后尝试重新创建 POD,它会附加回同一个 PVC,但所有数据都丢失了。

任何人都可以解释发生了什么,我已经查看了官方文档,但目前没有任何意义。

任何帮助表示赞赏。

kubernetes persistent-volumes persistent-volume-claims kubernetes-pod

4
推荐指数
1
解决办法
6768
查看次数

pods 被禁止:用户“system:serviceaccount:kubernetes-dashboard:admin-user”无法列出命名空间“default”中 API 组“”中的资源“pods”

我正在尝试按照这篇文章在 Ubuntu 18.04 上设置 Kubernetes 。

一切正常,但是当我尝试访问本地 Kubernetes 仪表板时,它显示为空,并且没有像 Pod、服务和部署那样可见。

但是,当我运行时,$> kubectl get pods,svc,deployments它会显示以下输出。如果命令行显示所有详细信息,为什么我看到空的 Kubernetes 仪表板?

我已经运行了以下命令

$> kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml

$> kubectl proxy
Run Code Online (Sandbox Code Playgroud)

我在这里缺少任何配置吗?有什么建议可以解决这个问题吗?

$> kubectl get pods --all-namespaces
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE

kubernetes-dashboard   dashboard-metrics-scraper-76585494d8-4rrdp   1/1     Running   3          46h
kubernetes-dashboard   kubernetes-dashboard-5996555fd8-sxgxf        1/1     Running   16         46h
Run Code Online (Sandbox Code Playgroud)

查看通知部分后,发现这些错误

  1. 事件被禁止:用户“system:serviceaccount:kubernetes-dashboard:admin-user”无法列出命名空间“default”中API组“”中的资源“events”

  2. pods 被禁止:用户“system:serviceaccount:kubernetes-dashboard:admin-user”无法列出命名空间“default”中 API 组“”中的资源“pods”


更新 1:

它在应用 RBAC kubectl apply -f filename.yml后现在工作

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1 …
Run Code Online (Sandbox Code Playgroud)

ubuntu kubernetes kubernetes-pod ubuntu-18.04

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

Pod 删除和 Pod 驱逐有什么区别?

从这PodInterface两个操作来看DeleteEvict似乎效果是一样的:删除旧 Pod 并创建新 Pod。

如果两个操作效果一样,为什么删除一个Pod并创建一个新的Pod需要两个API?

kubernetes kubernetes-pod

4
推荐指数
1
解决办法
568
查看次数