首页 > 其他分享 >k8s中设置hostNetwork: true,怎么修改冲突的端口,yaml使用的是DaemonSet

k8s中设置hostNetwork: true,怎么修改冲突的端口,yaml使用的是DaemonSet

时间:2023-06-06 09:34:48浏览次数:55  
标签:iptables mountPath run name hostNetwork yaml hostPort path k8s

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cadvisor
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: cAdvisor
  template:
    metadata:
      labels:
        app: cAdvisor
    spec:
      tolerations:    #污点容忍,忽略master的NoSchedule
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
      hostNetwork: false
      restartPolicy: Always   # 重启策略
      containers:
      - name: cadvisor
        image: registry.zgshfp.com.cn/k8s/cadvisor:v0.39.2 
        imagePullPolicy: IfNotPresent  # 镜像策略
        ports:
        - containerPort: 8080
          hostPort: 8888 
        volumeMounts:
          - name: root
            mountPath: /rootfs
          - name: run
            mountPath: /var/run
          - name: sys
            mountPath: /sys
          - name: docker
            mountPath: /var/lib/docker
      volumes:
      - name: root
        hostPath:
          path: /
      - name: run
        hostPath:
          path: /var/run
      - name: sys
        hostPath:
          path: /sys
      - name: docker
        hostPath:
          path: /var/lib/docker

 

那 hostport 的实现原理是怎么样的呢?是不是也是开了一个程序监听?通过到节点执行 netstat -anp| grep 10000,发现并没有启动一个监听程序,那说明很可能走的是iptables,我们看看 iptables 的 nat 表:

iptables 用法参考:
这里目标 pod 的 ip 是 10.244.1.155,通过 iptables 可以看到,通过CNI-HOSTPORT-DNAT匹配目标端口 10000, jump 到 CNI-DN-2a6b9967ebd3cd7a5eeb3 chain,CNI-DN-2a6b9967ebd3cd7a5eeb3 对于源IP不等于10.244.1.155/32和127.0.0.1/32 的流量转到 10.244.1.155:8000,这个地址就是目标 pod 对应的 containerPort。

注意:按照官方文档说的,除非绝对必要,否则不要为 Pod 指定 hostPort。 将 Pod 绑定到hostPort时,它会限制 Pod 可以调度的位置数,因为每个 <hostIP, hostPort, protocol>组合必须是唯一的。 如果您没有明确指定 hostIP 和 protocol,Kubernetes 将使用 0.0.0.0 作为默认 hostIP 和 TCP 作为默认 protocol,请在使用 hostPort 之前考虑使用 NodePort 服务

 

标签:iptables,mountPath,run,name,hostNetwork,yaml,hostPort,path,k8s
From: https://www.cnblogs.com/gaoyuechen/p/17459623.html

相关文章

  • k8s之hostport 在daemonset 上面暴露端口
    NodePort虽然可以给pod提供节点级别的porxy,但是如果对于一个daemonset,采用NodePort方式来申明节点端口就不这么直观了,这个时候就可以使用pod的hostport来直接在pod的节点上暴露端口。apiVersion:apps/v1kind:DaemonSetmetadata:labels:app:tools-testnam......
  • K8S核心概念以及部署
    架构以及核心组件介绍:Master -APIServer(接口中心)j接口服务,基于rest风格开放的k8s接口服务 -kubeControllerManager:管理各个类型的控制器,针对k8s中的各种资源进行管理 -nodecontroller节点控制器:负责在节点出现故障时进行通知和响应 -jobcontroller任务控制器......
  • 云原生第六周--k8s组件详解(下)
    一Velero结合minio实现kubernetesetcd数据备份与恢复Velero简介:Velero是vmware开源的一个云原生的灾难恢复和迁移工具,它本身也是开源的,采用Go语言编写,可以安全的备份、恢复和迁移Kubernetes集群资源数据Velero支持标准的K8S集群,既可以是私有云平台也可以是公有云,除了灾备......
  • 安装k8s 时报错No package kubelet-1.20.9 available.
    报错信息:[root@vm~]#sudoyuminstall-ykubelet-1.20.9kubeadm-1.20.9kubectl-1.20.9--disableexcludes=kubernetesLoadedplugins:fastestmirrorLoadingmirrorspeedsfromcachedhostfileepel:mirror-icn.yuki.net.ukNopackagekubelet-1.20.9available.No......
  • k8s--etcd 基本操作
    介绍Etcd是CoreOS基于Raft开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监......
  • winform中使用yaml配置文件
    1、引入nuget包NetEscapades.Configuration.YamlMicrosoft.Extensions.Configuration.Binder引入上面两个包2、新增yaml文件可以新增到目录中,也可以放在根目录,我这边新增到了Conf文件夹中。创建一个Conf文件夹,然后里面创建一个myconfig.yaml文件。......
  • 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client
    问题描述在AzureKubernetes服务中,创建一个InternalLoadBalancer服务,使用以下yaml内容:internallb.yamlapiVersion:v1kind:Servicemetadata:name:ilb-myappannotations:service.beta.kubernetes.io/azure-load-balancer-internal:"true"spec:type:LoadBala......
  • k8s镜像使用
    docker搜索镜像dockersearchbusyboxdocker拉取到本地dockerpullbusyboxdocker本地保存dockersave-obusybox.tarbusybox:latestctr工具导入k8s命名空间ctr-nk8s.ioimageimportbusybox.tarcrictl查看导入结果crictlimagelist......
  • K8S in Action 读后感(概念简介)
    一、K8S的用武之地今天,大型单体应用正被逐渐拆分成小的、可独立运行的组件,我们称之为微服务。微服务彼此之间解耦,所以它们可以被独立开发、部署、升级、伸缩。这使得我们可以对每一个微服务实现快速迭代,并且迭代的速度可以和市场需求变化的速度保持一致。但是,随着部署组件的增多......
  • k8s安装过程遇到的问题处理
    一、安装过程,参照 尚硅谷的安装流程:https://www.yuque.com/leifengyang/oncloud/ghnb83 我是一个master节点和2个从节点 1.从节点报错:Theconnectiontotheserverlocalhost:8080wasrefused-didyouspecifytherighthostorport? 解决方案参考: https://www.cnbl......