Docker 具有kubernetes的MacVlan网络

Docker 具有kubernetes的MacVlan网络,docker,kubernetes-pod,k3s,macvlan,Docker,Kubernetes Pod,K3s,Macvlan,我使用k3s设置了kubernetes集群。我有一个主节点和两个节点。我在其中一个节点上创建了dockermacvlan网络。 我想实现下面提到的场景 将IP分配给容器/pod。(用户定义的IP,而不是群集IP) 问题1.docker macvlan是否有其他选择 我们可以在节点上运行命令吗(不是在pod/容器上)?(部署吊舱/服务时) 我们可以用用户定义的IP创建kubernetes网络吗?(我认为LB/NP/Ingress对用户定义的IP没有帮助,如果我错了,请纠正我!)Kubernetes

我使用
k3s
设置了
kubernetes集群。我有一个主节点和两个节点。我在其中一个节点上创建了docker
macvlan
网络。 我想实现下面提到的场景

  • 将IP分配给容器/pod。(用户定义的IP,而不是群集IP)
  • 问题1.docker macvlan是否有其他选择

    我们可以在节点上运行命令吗(不是在pod/容器上)?(部署吊舱/服务时)


    我们可以用用户定义的IP创建kubernetes网络吗?(我认为LB/NP/Ingress对用户定义的IP没有帮助,如果我错了,请纠正我!)

    Kubernetes有自己非常专业的网络实现。它无法像Docker MacVLAN安装程序那样轻松地为每个进程分配唯一的外部可访问IP地址。Kubernetes也不能重用Docker网络基础设施。通常,集群负责为pod和服务分配IP地址,您不能自己指定它们

    因此,在库伯内特斯:

  • 您不能手动为对象分配IP地址
  • 集群内部IP地址不能从集群外部直接访问
  • Kubernetes构造只能在任意选择的节点上启动容器(可能有一些约束;可能在每个节点上),但通常不会在单个特定节点上启动容器,也不能在节点上运行非容器命令

  • 根据您所描述的,Salt Stack、Ansible或Chef等更通用的集群自动化工具可能会更好地满足您的需求。这将允许您直接在托管节点上启动进程,如果这些进程是服务器类型的进程,则可以使用主机的IP地址正常访问这些进程。

    Kubernetes有自己的非常专门的网络实现。它无法像Docker MacVLAN安装程序那样轻松地为每个进程分配唯一的外部可访问IP地址。Kubernetes也不能重用Docker网络基础设施。通常,集群负责为pod和服务分配IP地址,您不能自己指定它们

    因此,在库伯内特斯:

  • 您不能手动为对象分配IP地址
  • 集群内部IP地址不能从集群外部直接访问
  • Kubernetes构造只能在任意选择的节点上启动容器(可能有一些约束;可能在每个节点上),但通常不会在单个特定节点上启动容器,也不能在节点上运行非容器命令

  • 根据您所描述的,Salt Stack、Ansible或Chef等更通用的集群自动化工具可能会更好地满足您的需求。这将允许您直接在托管节点上启动进程,如果这些进程是服务器类型的进程,则可以使用主机的IP地址正常访问它们。

    您可以查看MetalLB,特别是Layer2和本地流量策略 () 您无法将IP分配给POD,但当您创建服务类型LoadBalancer(例如http路由服务,如Traefik)时,MetalLB将帮助将该服务绑定到节点的IP

    例如,您可以看到服务Trafik的外部IP被报告为我节点的地址—192.168.1.201

    NAME     STATUS   ROLES                  AGE   VERSION        INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
    node02   Ready    <none>                 8d    v1.20.2+k3s1   192.168.1.202   <none>        Alpine Linux v3.13   5.10.10-0-virt   containerd://1.4.3-k3s1
    node01   Ready    control-plane,master   8d    v1.20.2+k3s1   192.168.1.201   <none>        Alpine Linux v3.13   5.10.10-0-virt   containerd://1.4.3-k3s1
    
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
    node02 Ready 8d v1.20.2+k3s1 192.168.1.202高山Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
    节点01就绪控制平面,主控8d v1.20.2+k3s1 192.168.1.201高山Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
    
    第二季度: 当然可以,k8s不会接管节点。你可以用ssh连接到它,然后随心所欲地运行它

    第一季度: 没有

    
    命名空间名称类型CLUSTER-IP EXTERNAL-IP端口
    默认服务/kubernetes ClusterIP 10.43.0.1 443/TCP
    kube系统服务/kube dns群集IP 10.43.0.10 53/UDP、53/TCP、9153/TCP
    kube系统服务/度量服务器群集IP 10.43.254.20 443/TCP
    kube系统服务/traefik LoadBalancer 10.43.130.1192.168.1.201 80:31666/TCP,443:31194/TCP,8080:31199/TCP
    默认服务/whoami群集IP 10.43.61.10 80/TCP
    
    您可以查看MetalLB,特别是第2层和本地流量策略 () 您无法将IP分配给POD,但当您创建服务类型LoadBalancer(例如http路由服务,如Traefik)时,MetalLB将帮助将该服务绑定到节点的IP

    例如,您可以看到服务Trafik的外部IP被报告为我节点的地址—192.168.1.201

    NAME     STATUS   ROLES                  AGE   VERSION        INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
    node02   Ready    <none>                 8d    v1.20.2+k3s1   192.168.1.202   <none>        Alpine Linux v3.13   5.10.10-0-virt   containerd://1.4.3-k3s1
    node01   Ready    control-plane,master   8d    v1.20.2+k3s1   192.168.1.201   <none>        Alpine Linux v3.13   5.10.10-0-virt   containerd://1.4.3-k3s1
    
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
    node02 Ready 8d v1.20.2+k3s1 192.168.1.202高山Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
    节点01就绪控制平面,主控8d v1.20.2+k3s1 192.168.1.201高山Linux v3.13 5.10.10-0-virt containerd://1.4.3-k3s1
    
    第二季度: 当然可以,k8s不会接管节点。你可以用ssh连接到它,然后随心所欲地运行它

    第一季度: 没有

    
    命名空间名称类型CLUSTER-IP EXTERNAL-IP端口
    默认服务/kubernetes ClusterIP 10.43.0.1 443/TCP
    库贝系统