我正在尝试自动化 kubernetes 集群中弹性搜索节点的水平扩展和缩减过程。
最初,我在 Kubernetes 集群上部署了一个 elasticsearch 集群(3 个主节点、3 个数据和 3 个摄取节点)。哪里,cluster.initial_master_nodes是:
cluster.initial_master_nodes:
- master-a
- master-b
- master-c
Run Code Online (Sandbox Code Playgroud)
然后,我进行了缩减操作,将主节点 3 的数量减少到 1 个(意外,但出于测试目的)。虽然这样做,我删除master-c,master-b节点和重新启动master-a的节点具有以下设置:
cluster.initial_master_nodes:
- master-a
Run Code Online (Sandbox Code Playgroud)
由于elasticsearch节点(即pods)使用persistant volume,重启节点后,会master-a出现如下日志:
"message": "master not discovered or elected yet, an election requires at least 2 nodes with ids from [TxdOAdryQ8GAeirXQHQL-g, VmtilfRIT6KDVv1R6MHGlw, KAJclUD2SM6rt9PxCGACSA], have discovered [] which is not a quorum; discovery will continue using [] from hosts providers and [{master-a}{VmtilfRIT6KDVv1R6MHGlw}{g29haPBLRha89dZJmclkrg}{10.244.0.95}{10.244.0.95:9300}{ml.machine_memory=12447109120, xpack.installed=true, ml.max_open_jobs=20}] from …Run Code Online (Sandbox Code Playgroud) Java 10引入了相应的-XX:{Initial|Min|Max}RAMPercentage标志来配置容器环境中的堆。
我在 k8s 集群中运行 Elasticsearch。Elaticsearch容器具有以下资源配置:
resources:
limits:
memory: 512Mi
requests:
memory: 256Mi
Run Code Online (Sandbox Code Playgroud)
问题:如果我设置-XX:MaxRAMPercentage为50%,值是多少?
128Mi:所请求内存的 50%?256Mi: 限制的50%?128Mi-256Mi:实时内存的 50%?apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: busy-autoscaler
spec:
behavior:
scaleDown:
stabilizationWindowSeconds: 10
policies:
- type: Percent
value: 50
periodSeconds: 15
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: busy-worker
minReplicas: 1
maxReplicas: 2
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Run Code Online (Sandbox Code Playgroud)
错误:验证“hpa.yml”时出错:验证数据时出错:ValidationError(HorizontalPodAutoscaler.spec):io.k8s.api.autoscaling.v2beta2.HorizontalPodAutoscalerSpec 中的未知字段“行为”;如果您选择忽略这些错误,请使用 --validate=false 关闭验证
$ kubectl version --short
Client Version: v1.18.0
Server Version: v1.14.9-eks-502bfb
Run Code Online (Sandbox Code Playgroud) 我英语说得不太好,但我需要一些建议。我有普罗米修斯 如何计算一段时间内服务的停机次数?这是我的职能
irate(ALERTS{job="blackbox", alertstate="firing"}[2h])
Run Code Online (Sandbox Code Playgroud)
我编写了一个 bash 脚本来获取 kubernetes 集群上的所有部署。我有一个命令可以将所有部署缩放为零。我面临的挑战是,我希望能够遍历所有部署并保存它们的名称和副本数量,以便在缩小后将它们缩放回原始。
我如何做到这一点?这就是我迄今为止所做的。
$ kubectl get deployments
$ kubectl scale deploy -n default --replicas=0 --all
Run Code Online (Sandbox Code Playgroud) kubernetes google-kubernetes-engine kubectl kubernetes-deployment
我正在尝试在节点上执行kubelet --allowed-unsafe-sysctls 'net.core.somaxconn'
但返回Flag --allowed-unsafe-sysctls has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.
我也尝试过使用PodSecurityPolicy,但仍然不起作用
apiVersion: v1
kind: PodSecurityPolicy
metadata:
name: sysctl-psp
spec:
sysctls:
- net.*
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
runAsUser:
rule: RunAsAny
fsGroup:
rule: RunAsAny
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
forbidden sysctl: "net.core.somaxconn" not whitelisted
yaml详细信息:
apiVersion: v1
kind: Pod
metadata:
name: sysctl-example
spec:
securityContext:
sysctls:
- name: net.core.somaxconn
value: "65535"
unsafe: true
containers:
- …Run Code Online (Sandbox Code Playgroud) 我有这个示例代码,我正面临这个同步问题,任何人都可以帮助我如何实现这一点。
package main
import "fmt"
func main() {
baseChan := make(chan int)
go func(bCh chan int){
for {
select{
case stats, _ := <- bCh:
fmt.Println("base stats", stats)
}}
}(baseChan)
second := make(chan int)
go func (sCh chan int) {
fmt.Println("second channel")
for {
select {
case stats, _ := <- sCh:
fmt.Println("seconds stats", stats)
baseChan <- stats
}
}
}(second)
runLoop(second)
}
func runLoop(second chan int) {
for i := 0; i < 5; i++ {
fmt.Println("writing i", i) …Run Code Online (Sandbox Code Playgroud) 我想转发端口
kubectl port-forward ...
Run Code Online (Sandbox Code Playgroud)
但为此我需要找出 pod 的名称,我运行命令
kubectl -n main_sp get pods
Run Code Online (Sandbox Code Playgroud)
获取列表:
NAME READY STATUS RESTARTS AGE
main-ms-hc-78469b74c-7lfdh 1/1 Running 0 13h
Run Code Online (Sandbox Code Playgroud)
我想
kubectl port-forward main-ms-hc-78469b74c-7lfdh 8080:80
Run Code Online (Sandbox Code Playgroud)
我得到
Error from server (NotFound): pods "main-ms-hc-78469b74c-7lfdh" not found
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
以下两个代码之间的基本区别是什么?不知何故,在第二个示例demo_process2()中从未被调用,但在第一个示例中工作正常。
go func() {
Must(demo_process1())
}()
demo_process2()
Run Code Online (Sandbox Code Playgroud)
go Must(demo_process1())
demo_process2()
Run Code Online (Sandbox Code Playgroud)
其中Must():
func Must(err error) {
if err != nil {
panic(err)
}
}
Run Code Online (Sandbox Code Playgroud) kubernetes ×6
go ×2
goroutine ×2
kubectl ×2
concurrency ×1
heap-memory ×1
java ×1
jvm ×1
kubelet ×1
prometheus ×1