团队,我正在尝试创建一个副本集,但出现错误:
验证数据时出错:
[ValidationError(ReplicaSet):io.k8s.api.apps.v1.ReplicaSet 中未知字段“replicas”,ValidationError(ReplicaSet):io.k8s.api.apps.v1.ReplicaSet 中未知字段“selector”,ValidationError(ReplicaSet) .spec): io.k8s.api.apps.v1.ReplicaSetSpec 中缺少必填字段“选择器”];如果您选择忽略这些错误,请使用 --validate=false 关闭验证
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: test-pod-10sec-via-rc1
labels:
app: pod-label
spec:
template:
metadata:
name: test-pod-10sec-via-rc1
labels:
app: feature-pod-label
namespace: test-space
spec:
containers:
- name: main
image: ubuntu:latest
command: ["bash"]
args: ["-xc", "sleep 10"]
volumeMounts:
- name: in-0
mountPath: /in/0
readOnly: true
volumes:
- name: in-0
persistentVolumeClaim:
claimName: 123-123-123
readOnly: true
nodeSelector:
kubernetes.io/hostname: node1
replicas: 1
selector:
matchLabels:
app: feature-pod-label
Run Code Online (Sandbox Code Playgroud) 我在家里的 Ubuntu 服务器上运行microk8s集群,并将其连接到本地 NAS 服务器以进行持久存储。我一直用它作为学习 Kubernetes 的个人试验场,但我似乎在每一步都会遇到一个又一个问题。
我已经安装了NFS Client Provisioner Helm 图表,我已确认该图表可以正常工作 - 它将在我的 NAS 服务器上动态配置 PVC。我后来能够成功安装Postgres Helm 图表,至少我是这么认为的。创建后,我可以使用 SQL 客户端连接到它,感觉很好。
直到几天后,我注意到 Pod 显示 0/1 容器已就绪。有趣的是,nfs-client-provisioner pod 仍然显示 1/1。长话短说:我已经删除/清除了 Postgres Helm 图表,并尝试重新安装它,但现在它不再起作用。事实上,我尝试部署的任何新内容都不起作用。一切看起来好像都能正常工作,但随后就永远挂在 Init 或 ContainerCreating 上。
特别是对于 Postgres,我运行的命令是这样的:
helm install --name postgres stable/postgresql -f postgres.yaml
Run Code Online (Sandbox Code Playgroud)
我的postgres.yaml文件如下所示:
persistence:
storageClass: nfs-client
accessMode: ReadWriteMany
size: 2Gi
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,kubectl get pods我仍然会看到这个:
NAME READY STATUS RESTARTS AGE
nfs-client-provisioner 1/1 Running 1 11d
postgres-postgresql-0 0/1 Init:0/1 0 3h51m
Run Code Online (Sandbox Code Playgroud)
如果我执行 …
kubernetes kubernetes-helm kubernetes-deployment kubernetes-pod kubernetes-service
我已经使用 helm chart 安装了 rabbitmq 集群。Rabbitmq 使用 statefulsets 那么有什么方法可以自动缩放吗?
还有一个问题,如何使用 PVC 自动扩展 (HPA) 部署?
docker kubernetes docker-compose kubernetes-helm kubernetes-pod
我在项目中使用 liquibase,到目前为止它运行良好。
我添加了一个新的变更集,它在本地运行良好,一旦部署,容器的状态就会挂起以下语句:
"liquibase: Waiting for changelog lock..."。
未设置部署的限制资源。
表“databasechangeloglock”的更新不起作用,导致 pod 一直锁定它。
我该如何解决这个问题?
我有一个配置了优雅关机的 SpringBoot 项目。部署在 k8s 上,1.12.7这里是日志,
2019-07-20 10:23:16.180 INFO [service,,,] 1 --- [ Thread-7] com.jay.util.GracefulShutdown : Received shutdown event
2019-07-20 10:23:16.180 INFO [service,,,] 1 --- [ Thread-7] com.jay.util.GracefulShutdown : Waiting for 30s to finish
2019-07-20 10:23:16.273 INFO [service,fd964ebaa631a860,75a07c123397e4ff,false] 1 --- [io-8080-exec-10] com.jay.resource.ProductResource : GET /products?id=59
2019-07-20 10:23:16.374 INFO [service,9a569ecd8c448e98,00bc11ef2776d7fb,false] 1 --- [nio-8080-exec-1] com.jay.resource.ProductResource : GET /products?id=68
...
2019-07-20 10:23:33.711 INFO [service,1532d6298acce718,08cfb8085553b02e,false] 1 --- [nio-8080-exec-9] com.jay.resource.ProductResource : GET /products?id=209
2019-07-20 10:23:46.181 INFO [service,,,] 1 --- [ Thread-7] com.jay.util.GracefulShutdown : Resumed …Run Code Online (Sandbox Code Playgroud) 我有一个新手 Kubernetes 设置问题,我找不到答案。也许社区朋友可以帮助我。
我的设置:
我有一个使用强大的 PC 创建的个人研发实验室,运行:
Fedora-30 (外部Host O/S)LXCO/S 容器(作为来宾运行CentOS-8)Docker CE在这些LXC来宾容器中嵌套和运行使用此设置,我能够改变此环境的“个性”以承担各种技术和应用程序开发堆栈。
现在,外部 Host 和 LXC Guest O/S' 在与我的个人(家庭)网络上的任何其他设备相同的子网上都有静态 IP 地址(主要bridged是因为它更容易)。此问题的相关主机和 IP 地址是:
Fedora-30 外部主机(PC): 192.168.0.16/24vps10 (CentOS-8)LXC 客人:192.168.0.180/24--k8s00vps11 (CentOS-8)LXC 客人:192.168.0.181/24--k8s01vps12 (CentOS-8)LXC 客人:192.168.0.182/24--k8s02vps13 (CentOS-8)LXC 客人:192.168.0.183/24--k8s03我想设置一个小型 Kubernetes 集群,k8s00(上图)是主节点,和k8s01,k8s02和k8s03 …
我在添加了 --pod-network-cidr 的情况下部署了我的集群,并使用 calicoctl 创建了新的 ip 池以将 pod 更改为该范围。我遇到的问题正是我需要在 kubernetes 端更改以更改 pod cidr 范围的内容?我是在 API 服务器、控制器管理器和调度程序中进行更改,还是只需要更改特定部分。我尝试只更改控制器管理器,并且在更改 yaml 中的 --cluster-cidr 后,那些控制平面 pod 会进入崩溃循环。
控制器管理器日志中的输出如下?
controllermanager.go:235] 错误启动控制器:未能将 idx [0] 处的 cidr[192.168.0.0/24] 标记为节点已占用::cidr 192.168.0.0/24 超出集群 cidr 10.0.0.0/16 的范围
我有一个简单的服务和 pod,如下所述,但就绪探测失败,抱怨连接被拒绝
apiVersion: v1
kind: Service
metadata:
name: keystone-api
spec:
selector:
app: keystone
ports:
- protocol: TCP
port: 5000
targetPort: 5000
name: public
- protocol: TCP
port: 35357
targetPort: 35357
name: admin
...
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: keystone
labels:
app: keystone
spec:
replicas: 1
selector:
matchLabels:
app: keystone
template:
metadata:
labels:
app: keystone
spec:
containers:
- name: keystone
image: openio/openstack-keystone
readinessProbe:
tcpSocket:
port: 5000
env:
- name: OS_IDENTITY_ADMIN_PASSWD
value: password
- name: IPADDR
valueFrom:
fieldRef:
fieldPath: status.podIP …Run Code Online (Sandbox Code Playgroud) openstack keystone kubernetes kubernetes-helm kubernetes-pod
我有一个在 GKE 上运行并运行 Cucumber JVM 测试的 Kubernetes Cronjob。如果由于断言失败、某些资源不可用等原因导致 Step 失败,Cucumber 会正确地抛出一个异常,导致 Cronjob 作业失败并且 Kubernetes pod 的状态更改为ERROR。这会导致创建一个新的 pod,该 pod 尝试再次运行相同的 Cucumber 测试,但再次失败并再次重试。
我不希望发生任何这些重试。如果 Cronjob 作业失败,我希望它保持失败状态并且根本不重试。基于此,我已经尝试将设置backoffLimit: 0与restartPolicy: Never结合结合使用concurrencyPolicy: Forbid,但它仍然通过创建新的 pod 并再次运行测试来重试。
我错过了什么?这是我的 Cronjob kube 清单:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: quality-apatha
namespace: default
labels:
app: quality-apatha
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
backoffLimit: 0
template:
spec:
containers:
- name: quality-apatha
image: FOO-IMAGE-PATH
imagePullPolicy: "Always"
resources:
limits: …Run Code Online (Sandbox Code Playgroud) cucumber-jvm kubernetes google-kubernetes-engine kubernetes-pod kubernetes-cronjob
使用 Kubernetes 1.19.3,我使用 3 种不同的方式初始化 env 变量值:
env pod 定义中具有显式键/值的字段envFrom使用configMapRef和secretRef当一个键名重复时,如下例所示,DUPLIK1并DUPLIK2用不同的值多次定义。
Kubernetes 用于将最终值分配给变量的优先规则是什么?
# create some test Key/Value configs and Key/Value secrets
kubectl create configmap myconfigmap --from-literal=DUPLIK1=myConfig1 --from-literal=CMKEY1=CMval1 --from-literal=DUPLIK2=FromConfigMap -n mydebugns
kubectl create secret generic mysecret --from-literal=SECRETKEY1=SECval1 --from-literal=SECRETKEY2=SECval2 --from-literal=DUPLIK2=FromSecret -n mydebugns
# create a test pod
cat <<EOF | kubectl apply -n mydebugns -f -
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: container1
image: busybox
command: [ …Run Code Online (Sandbox Code Playgroud) kubernetes ×10
kubernetes-pod ×10
docker ×2
calico ×1
configmap ×1
cucumber-jvm ×1
deployment ×1
keystone ×1
liquibase ×1
openstack ×1
replicaset ×1
spring-boot ×1