我想通过k8s Deployment对象管理我的部署来部署应用程序集群.文档让我非常困惑.我的基本布局具有以下可独立扩展的组件:
从技术上讲,以上所有4个属于独立缩放的独立窗格.
我的问题是:
pod.yml
文件然后以某种方式在deployment.yml
文件中引用它们,或者部署文件是否也可以嵌入pod定义?spec
部分Deployment
相当于定义一个 pod.那是对的吗?如果我想以声明方式描述多pod部署,该怎么办?我是否需要多个deployment.yml文件?deployment containers kubernetes google-kubernetes-engine kubernetes-pod
我的集群中运行着一个MySQL Pod。
我需要暂时暂停pod的工作而不删除它,这类似于docker,其中docker stop container-id
cmd将停止容器而不删除容器。
Kubernetes中是否有任何命令可以暂停/停止Pod?
我使用 1.11 版的 k8s 和 CephFS 作为存储。
我正在尝试挂载在 pod 中的 CephFS 上创建的目录。为了达到同样的目的,我在部署配置中编写了以下卷和卷挂载配置
体积
{
"name": "cephfs-0",
"cephfs": {
"monitors": [
"10.0.1.165:6789",
"10.0.1.103:6789",
"10.0.1.222:6789"
],
"user": "cfs",
"secretRef": {
"name": "ceph-secret"
},
"readOnly": false,
"path": "/cfs/data/conf"
}
}
Run Code Online (Sandbox Code Playgroud)
卷挂载
{
"mountPath": "/opt/myapplication/conf",
"name": "cephfs-0",
"readOnly": false
}
Run Code Online (Sandbox Code Playgroud)
安装工作正常。我可以看到 ceph 目录,即 /cfs/data/conf 被挂载在 /opt/myapplication/conf 上,但以下是我的问题。
我的配置文件已经作为 docker 镜像的一部分出现在 /opt/myapplication/conf 位置。当部署尝试挂载 ceph 卷时,位于 /opt/myapplication/conf 位置的所有文件都会消失。我知道这是挂载操作的行为,但是有什么方法可以将容器中已经存在的文件保留在我正在挂载的卷上,以便挂载相同卷的其他 pod 可以访问配置文件。即 pod 中位于 /opt/myapplication/conf 位置的文件应该可以在位置 /cfs/data/conf 的 CephFS 上访问。
是否可以?
我浏览了 docker 文档,它提到
使用容器填充一个卷如果你启动一个创建新卷的容器,如上,并且容器在要挂载的目录中有文件或目录(如上面的/app/),目录的内容被复制到卷中. 然后容器安装并使用该卷,使用该卷的其他容器也可以访问预先填充的内容。
这符合我的要求,但如何使用 k8s …
对于一个 POD,已创建三张图像。这里的问题是同一 Pod 中的容器之间没有通信。我的应用程序应该如何与这三个容器连接?
我的 Pod 有以下容器。
[dev-application dev-app-nginx dev-app-redis]
Run Code Online (Sandbox Code Playgroud)
在这里我可以看到只有rails正在运行,但是redis和nginx没有运行。因为 Redis 和 nix 在同一个 pod 中作为不同的容器运行。
kubectl exec -ti test-deployment-5f59864c8b-mv4kk sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Defaulting container name to dev-application.
Use 'kubectl describe pod/test-deployment-5f59864c8b-mv4kk -n dev-app' to see all of the containers in this pod.
# rails -v
Rails 4.2.11.3
# redis -v
sh: 2: redis: not found
# nginx -v
sh: …
Run Code Online (Sandbox Code Playgroud) 当我在下面使用时,它会在匹配命令行模式后删除正在运行的 POD:
kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}' | xargs kubectl delete -n bi-dev pod
Run Code Online (Sandbox Code Playgroud)
但是,当我将此命令用作 .bash_profile 中的别名时,它不会执行。这就是我定义它的方式:
alias kdpgroup="kubectl get pods -n bi-dev --no-headers=true | awk '/group-react/{print $1}'| kubectl delete -n bi-dev pod"
Run Code Online (Sandbox Code Playgroud)
当按如下方式执行此操作时,我在命令行中出现以下错误:
~ $ kdpgroup
error: resource(s) were provided, but no name, label selector, or --all flag specified
Run Code Online (Sandbox Code Playgroud)
当我在 .bash_profile 中定义它时,我得到了这个:
~ $ . ./.bash_profile
-bash: alias: }| xargs kubectl delete -n bi-dev pod: not found
~ $
Run Code Online (Sandbox Code Playgroud)
我是否缺少使用 Pattern Match 或 Wilcard …
由于“节点资源不足:临时存储”,节点的所有 pod 都处于Evicted状态。
portal-59978bff4d-2qkgf 0/1 Evicted 0 14m
release-mgmt-74995bc7dd-nzlgq 0/1 Evicted 0 8m20s
service-orchestration-79f8dc7dc-kx6g4 0/1 Evicted 0 7m31s
test-mgmt-7f977567d6-zl7cc 0/1 Evicted 0 8m17s
Run Code Online (Sandbox Code Playgroud)
任何人都知道它的快速修复。
cadvisor 有两个指标container_cpu_cfs_throttled_seconds_total和container_cpu_cfs_throttled_periods_total
我很困惑这是什么意思..
我找了两个解释一下?
容器以 cpu 限制运行,当容器 cpu 超过限制时,容器将被“节流”并向container_cpu_cfs_throttled_seconds_total添加时间
that means ?
(1). only container cpu over limit, rate(container_cpu_cfs_throttled_seconds_total) > 0.
(2). we can use this metrics to alert container cpu over limit ...
Run Code Online (Sandbox Code Playgroud)当主机处于沉重的 cpu 压力下时,它将使用 POD QoS(保证 > 突发 > 尽力而为)“节流”容器......
that means ?
(1). container_cpu_cfs_throttled_seconds_total will add has no relate with how many cpu container used and cpu limit ..
(2). this metrics can not to alert container cpu over limit ..
Run Code Online (Sandbox Code Playgroud)我正在寻找kubectl命令来列出/删除所有已完成的作业
我试过:
kubectl get job --field-selector status.succeeded=1
Run Code Online (Sandbox Code Playgroud)
但我得到:
enfield selector "status.succeeded=1": field label "status.succeeded" not supported for batchv1.Jobter code here
Run Code Online (Sandbox Code Playgroud)
找工作时--fieldSelector的可能字段是什么?
有一个更好的方法吗 ?
kubernetes google-kubernetes-engine kubectl kubernetes-pod kubernetes-jobs
我正在使用 mysql Kubernetes statefulset,我将 PV 映射到主机目录(CentOS 8 VM)但得到“pod has unbound直接 PersistentVolumeClaims”
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql-container
spec:
serviceName: mysql
replicas: 1
selector:
matchLabels:
app: mysql-container
template:
metadata:
labels:
app: mysql-container
spec:
containers:
- name: mysql-container
image: mysql:dev
imagePullPolicy: "IfNotPresent"
envFrom:
- secretRef:
name: prod-secrets
ports:
- containerPort: 3306
# container (pod) path
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pvc
volumeClaimTemplates:
- metadata:
name: data
spec:
storageClassName: localstorage
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: …
Run Code Online (Sandbox Code Playgroud)