名为kafka.server:type=FetchSessionCache,name=NumIncrementalFetchSessions
的指标是监控FetchSessions
数量的正确方法。
大小可以通过max.incremental.fetch.session.cache.slots
来配置。请注意,这个设置是按broker应用的,所以每个broker最多可以缓存max.incremental.fetch.session.cache.slots
会话。
你看到的另一个指标,kafka.server:type=FetchSessionCache,name=NumIncrementalFetchPartitionsCached
,是所有FetchSession中使用的分区总数。许多FetchSessions会使用几个分区,所以预计会看到一个较大的数量。
正如你所说的,你看到的低数量的FetchSessions可能是由于重新启动。
是的,我这台机器有docker和contaienrd,用上面的方法指定其中一个可以,也可以卸载其中一个。
kubeadm init --apiserver-advertise-address=1.1.1.1 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16
--cri-socket=unix:///var/run/cri-dockerd.sock
或者
kubeadm init --apiserver-advertise-address=1.1.1.1 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.168.0.0/16
--cri-socket= unix:///var/run/containerd/containerd.sock
crictl依次查找容器运行时,当查找第一个 unix:///var/run/dockershim.sock
没有找到,所以报错了,需要你手动指定当前kubernetes的容器运行时,使用什么,例如:
kubernetes 1.24+ 之后,dockershim已经变成了cri-docker,所以你需要执行:
crictl config runtime-endpoint unix:///var/run/cri-dockerd.sock
如果你的容器运行时,已经换成了containerd,则换成containerd的,如:
crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
之后,你在执行就好了。
另外:生成的配置在cat /etc/crictl.yaml
,可以随时修改。
你这么做是对的。
通常情况下,如kubectl scale deploy my-awesome-deployment --replicas=0
,这样就不需要指定特定文件了,但如果对你来说更方便,使用文件也没有错。
kafka自动提交offset主要由以下2个配置控制:
java消费者代码:
Properties props = new Properties();
props.setProperty("enable.auto.commit", "true"); // 开启自动提交
props.setProperty("auto.commit.interval.ms", "1000"); // 每隔1000ms提交一次。
例子可参考:kafka消费者Java客户端
如果你手动创建PV,我猜你没有使用存储类。 但是你要在PV中定义一个存储类。 因此,你可以尝试在没有storageClassName字段的情况下重新创建PV:
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 15Gi
hostPath:
path: /app/k8s-volumes
type: ""
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem