K8S安裝cadvisor
apiVersion: apps/v1nkind: DaemonSetnmetadata:n name: cadvisorn namespace: ns-monitornspec:n selector:n matchLabels
apiVersion: apps/v1nkind: DaemonSetnmetadata:n name: cadvisorn namespace: ns-monitornspec:n selector:n matchLabels:n app: cAdvisorn template:n metadata:n labels:n app: cAdvisorn spec:n tolerations: #污點容忍,忽略master的NoSchedulen - effect: NoSchedulen key: node-role.kubernetes.io/mastern hostNetwork: false #n restartPolicy: Always # 重啟策略n containers:n - name: cadvisorn image: registry.cn-hangzhou.aliyuncs.com/sysu-faas/cadvisor:v0.45.0n imagePullPolicy: IfNotPresent # 鏡像策略n ports:n - containerPort: 8080n hostPort: 8888 n volumeMounts:n - name: rootn mountPath: /rootfsn - name: runn mountPath: /var/runn - name: sysn mountPath: /sysn - name: dockern mountPath: /var/lib/containerdn volumes:n - name: rootn hostPath: n path: /n - name: runn hostPath:n path: /var/run n - name: sysn hostPath:n path: /sysn - name: dockern hostPath:n path: /var/lib/containerdn
之前總是報錯cadvisor.go:179] listen tcp :8080: bind: address already in use
原因是本地已有localnode dns cache綁定了8080端口,因為DaemonSet默認使用的是hostNetwork: true,即它們的網絡命名空間與Node的主機網絡命名空間共享,所以出現了錯誤。
需要將容器內的8080端口映射到node上的8888端口,并將hostNetwork設置為false
總之,容器端口由容器的ports字段指定,并由Kubernetes自動分配隨機端口,并將其映射到Node上的隨機端口,需要注意的是,容器端口和Pod級別的端口之間是一一對應的關系。這意味著你可以在Pod模板的spec字段中指定Pod級別的端口,Kubernetes會自動將這些端口映射到容器的端口。
附帶一張占了8080端口的NodeLocal DNSCache工作原理
上一篇:途安L的尾部造型









