这是我在 Hyperledger Fabric 上提出的问题的延续- 从 Docker swarm 迁移到 Kubernetes 可能吗?
在我运行kompose convertdocker-compose 文件后,我获得的文件与我接受的答案中列出的完全一样。然后我按顺序运行以下命令:
$ kubectl apply -f dev-orderer1-pod.yaml
$ kubectl apply -f dev-orderer1-service.yaml
$ kubectl apply -f dev-peer1-pod.yaml
$ kubectl apply -f dev-peer1-service.yaml
$ kubectl apply -f dev-couchdb1-pod.yaml
$ kubectl apply -f dev-couchdb1-service.yaml
$ kubectl apply -f ar2bc-networkpolicy.yaml
Run Code Online (Sandbox Code Playgroud)
当我尝试查看我的 pod 时,我看到了以下内容:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
dev-couchdb1 0/1 Pending 0 7m20s
dev-orderer1 0/1 Pending 0 8m25s
dev-peer1 0/1 Pending 0 7m39s
Run Code Online (Sandbox Code Playgroud)
当我尝试描述这三个 pod …
我有一个 mosquitto 代理在 pod 上运行,该服务器作为 DNS 和 IP 地址作为服务公开。
但集群中的任何 pod 都可以访问该服务。
我想限制对此服务的访问,以便尝试连接到此 DNS 或 IP 地址的 Pod 只能在具有特定名称/元数据的情况下才能进行。
我想一种解决方案是使用命名空间?还有什么其他解决方案?
以下是kubernetes POD定义
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
Run Code Online (Sandbox Code Playgroud)
由于我没有指定资源,因此将分配多少内存和CPU?是否有 kubectl 可以查找为 POD 分配的内容?
当 Kubernetes 返回 false 时会发生什么liveness-probe?Kubernetes 会立即重新启动该 pod 吗?
我知道 k8s 资源的层次结构顺序。简单来说,
在这个问题中我想强调的是,为什么我们有replicaset. 为什么不deployment直接处理或负责保持所需数量的 Pod 运行。但deployment反过来又依赖replicset于此。
如果 k8s 是这样设计的,那么肯定会有一些好处replicaset。这就是我想要深入探索/理解的。
我有一个使用 root 用户运行一个容器的部署。很明显,/data如果我没有volumeMounts定义任何类型的持久卷,那么我的应用程序保存的所有内容都将是短暂的。
我的问题是指定一个emptyDir卷并将其安装到的目的是什么/data?如果我不使用emptyDir之类的奇特功能medium,或者sizeLimit它与根本不使用卷不一样吗?
我有一个 kubernetes 节点,即控制平面,它对于部署 pod 来说是不受污染的。我有一个泊坞窗图像sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2。
我已登录 docker cli。daemon.json 设置为不安全的注册表,我可以通过以下方式进行验证docker info:
Docker Root Dir: /var/lib/docker\n Debug Mode: false\n Username: sdmay2342\n Registry: https://index.docker.io/v1/\n Labels:\n Experimental: false\n Insecure Registries:\n sdmay23-42.ece.iastate.edu:5000\n 127.0.0.0/8\n Live Restore Enabled: false\nRun Code Online (Sandbox Code Playgroud)\n我可以拉图像:
\nStatus: Image is up to date for sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\nsdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2\nRun Code Online (Sandbox Code Playgroud)\n我可以从图像构建一个容器:
\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\nad582a4d514b sdmay23-42.ece.iastate.edu:5000/canvas-lti-frontend:v2 "docker-entrypoint.s\xe2\x80\xa6" 6 seconds ago Up 6 seconds 3000/tcp test-frontend\nRun Code Online (Sandbox Code Playgroud)\n当我从 yaml 清单将其部署到节点时,出现错误。\n基本清单:
\napiVersion: v1\nkind: Pod\nmetadata:\n name: test-pod\nspec:\n …Run Code Online (Sandbox Code Playgroud) 在kubernetes集群中这可能吗?
我发现的所有示例都是从本地磁盘复制到Pod或反之亦然,还是从节点到节点复制的唯一选择,例如通过SSH,SCP或其他实用程序?
按照此处的文档,我可以像这样设置容器启动的阈值:
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
Run Code Online (Sandbox Code Playgroud)
不幸的是,它似乎startupProbe.failureThreshold与我们当前的 k8s 版本(1.12.1)不兼容:
unknown field "startupProbe" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false
Run Code Online (Sandbox Code Playgroud)
有解决方法吗?我想给一个容器大约 40 分钟以上的启动时间。
虽然我在一定程度上理解 minAvailable 和 maxUnavailable 的使用,但我想知道为什么这两个选项似乎是另一个选项的补充时公开。
鉴于 PDB 是不可变的,很少对这些参数进行更改(通过重新部署 PDB)。
有什么我想在这里意识到的吗?
kubernetes-pod ×10
kubernetes ×9
azure-aks ×1
deployment ×1
docker ×1
image ×1
kube-proxy ×1
reliability ×1