假设我们有以下部署:
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
replicas: 2
template:
spec:
containers:
- image: ...
...
resources:
requests:
cpu: 100m
memory: 50Mi
limits:
cpu: 500m
memory: 300Mi
Run Code Online (Sandbox Code Playgroud)
我们还创建了一个HorizontalPodAutoscaler
对象,它根据 CPU 平均利用率自动增加/减少 pod 的数量。我知道 HPA 将根据资源请求计算 Pod 的数量,但是如果我希望容器能够在水平扩展之前请求更多资源怎么办?
我有两个问题:
1)在定义 HPA 时,K8s是否甚至使用资源限制?
2) 我可以告诉 HPA 根据资源限制而不是请求进行扩展吗?或者作为实现这种控制的一种方式,我可以将targetUtilization
值设置为100% 以上吗?
我使用私人在线服务器通过 kubernetes 设置 jenkins 环境。
我有以下服务文件:
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
app: jenkins
Run Code Online (Sandbox Code Playgroud)
它有效,这意味着我可以从我的服务器获取 jenkins pod。但是我无法从本地计算机网络浏览器访问我的服务。
为此,我必须输入以下命令:
kubectl port-forward -n jenkins service/jenkins 8080:8080 --address=<localServerIp>
Run Code Online (Sandbox Code Playgroud)
我读过端口转发仅用于调试(kubectl 端口转发和 NodePort 服务之间的区别)。但我找不到如何将我的服务配置为在互联网上可见。我想要相当于持久端口转发的端口转发规则。
我有一个 MQ 有状态集,公开了两个端口 1414(用于 TCP)和 9443(用于 HTTPS),并创建了 Loadbalancer 类型的服务。TCP 的 1414 工作正常,能够使用服务名称/集群 IP 从同一集群中的其他 POD 远程登录。也能够从 GKE 集群外部连接 1414。
\n\n但问题是端口 9443 无法从集群内(服务名称/集群 IP)或集群外(外部 IP)的其他 POD 访问。当执行 POD 并在本地测试时,telnet 工作正常.. telnet 127.0.01 9443
\n\nHTTPS 服务是否缺少任何配置。
\n\n注意:端口转发工作正常并且能够连接到 API。kubectl 端口转发 svc/mq-qmdtest 9443:9443
\n\n服务定义
\n\napiVersion: v1\nkind: Service\nmetadata:\n name: {{.Values.name}}\n namespace: {{.Values.namespace}}\n annotations:\n cloud.google.com/load-balancer-type: "Internal"\n labels : \n run: {{.Values.name}}\nspec:\n type: LoadBalancer\n loadBalancerIP: {{.Values.loadBalancerIP}}\n ports:\n - name: webui\n port: 9443\n protocol: TCP\n - name: mq\n port: 1414\n protocol: TCP\n selector:\n …
Run Code Online (Sandbox Code Playgroud)