我确实了解这样做的缺点,但是我的图像只能与在其中运行 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
我想在一个 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) 我有一个 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
在一个简单的 bash 脚本中,我想运行多个kubectl和helm命令,例如:
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才能使用该命令。现在脚本调用它太早了,所以它会失败。
我需要设置一个 kubernetes pod 来为我的 Web 应用程序的客户端创建演示环境,试用期为 20 天。20天后,pod应该会自动删除,如何让pod在20天后自毁?我使用 Rancher 来部署我的 Pod。
我有一个使用以下内容创建的正在运行的 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 日志显示容器已启动并正在运行。为什么我无法访问我的服务?
Pod生命周期事件是否有任何可用的钩子?具体来说,我想运行一个命令以在Pod重新启动时上传日志。
我有一个 Kubernetes 集群,其中部署了一些 pod(DB、前端、Redis)。我无法完全掌握的部分是删除 pod 后 PVC 会发生什么。
例如,如果我删除绑定到 CLAIM_A 的 POD_A,我知道 CLAIM_A 不会自动删除。如果我然后尝试重新创建 POD,它会附加回同一个 PVC,但所有数据都丢失了。
任何人都可以解释发生了什么,我已经查看了官方文档,但目前没有任何意义。
任何帮助表示赞赏。
kubernetes persistent-volumes persistent-volume-claims kubernetes-pod
我正在尝试按照这篇文章在 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)
查看通知部分后,发现这些错误
事件被禁止:用户“system:serviceaccount:kubernetes-dashboard:admin-user”无法列出命名空间“default”中API组“”中的资源“events”
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) 从这PodInterface两个操作来看Delete,Evict似乎效果是一样的:删除旧 Pod 并创建新 Pod。
如果两个操作效果一样,为什么删除一个Pod并创建一个新的Pod需要两个API?
kubernetes-pod ×10
kubernetes ×9
kubectl ×2
bash ×1
demo ×1
k3s ×1
rancher ×1
root ×1
shell ×1
ubuntu ×1
ubuntu-18.04 ×1