node.js操作mongodb学习小结
更新时间:2023-10-26 21:10
最满意答案
为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge, [root@minion1 ~]# ovs-vsctl add-br obr0 接下来建立gre,并将新建的gre0添加到obr0,在minion1上执行如下命令, [root@minion1 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.5 在minion2上执行, [root@minion2 ~]# ovs-vsctl add-port obr0 gre0 -- set Interface gre0 type=gre options:remote_ip=192.168.230.4 至此,minion1和minion2之间的隧道已经建立。然后我们在minion1和minion2上创建Linux网桥kbr0替代Docker默认的docker0(我们假设minion1和minion2都已安装Docker),设置minion1的kbr0的地址为172.17.1.1/24, minion2的kbr0的地址为172.17.2.1/24,并添加obr0为kbr0的接口,以下命令在minion1和minion2上执行。 [root@minion1 ~]# brctl addbr kbr0 //创建linux bridge [root@minion1 ~]# brctl addif kbr0 obr0 //添加obr0为kbr0的接口 [root@minion1 ~]# ip link set dev docker0 down //设置docker0为down状态 [root@minion1 ~]# ip link del dev docker0 //删除docker0 为了使新建的kbr0在每次系统重启后任然有效,我们在/etc/sysconfig/network-scripts/目录下新建minion1的ifcfg-kbr0如下: DEVICE=kbr0 ONBOOT=yes BOOTPROTO=static IPADDR=172.17.1.1 NETMASK=255.255.255.0 GATEWAY=172.17.1.0 USERCTL=no TYPE=Bridge IPV6INIT=no 同样在minion2上新建ifcfg-kbr0,只需修改ipaddr为172.17.2.1和gateway为172.17.2.0即可,然后执行systemctl restart network重启系统网络服务,你能在minion1和minion2上发现kbr0都设置了相应的IP地址。为了验证我们创建的隧道是否能通信,我们在minion1和minion2上相互ping对方kbr0的IP地址,从下面的结果发现是不通的,经查找这是因为在minion1和minion2上缺少访问172.17.1.1和172.17.2.1的路由,因此我们需要添加路由保证彼此之间能通信。 [root@minion1 network-scripts]# ping 172.17.2.1 PING 172.17.2.1 (172.17.2.1) 56(84) bytes of data. ^C --- 172.17.2.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1000ms [root@minion2 ~]# ping 172.17.1.1 PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data. ^C --- 172.17.1.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1000ms 由于通过ip route add添加的路由会在下次系统重启后失效,为此我们在/etc/sysconfig/network-scripts目录下新建一个文件route-eth0存储路由,这里需要注意的是route-eth0和ifcfg-eth0的黑体部分必须保持一致,否则不能工作,这样添加的路由在下次重启后不会失效。为了保证两台minion的kbr0能相互通信,我们在minion1的route-eth0里添加路由172.17.2.0/24 via 192.168.230.5 dev eno16777736,eno16777736是minion1的网卡,同样在minion2的route-eth0里添加路由172.17.1.0/24 via 192.168.230.4 dev eno16777736。重启网络服务后再次验证,彼此kbr0的地址可以ping通,如: [root@minion2 network-scripts]# ping 172.17.1.1 PING 172.17.1.1 (172.17.1.1) 56(84) bytes of data. 64 bytes from 172.17.1.1: icmp_seq=1 ttl=64 time=2.49 ms 64 bytes from 172.17.1.1: icmp_seq=2 ttl=64 time=0.512 ms ^C --- 172.17.1.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.512/1.505/2.498/0.993 ms
相关问答
更多-
如何在Docker上部署Kubernetes[2022-04-03]
为了解决跨minion之间Pod的通信问题,我们在每个minion上安装Open vSwtich,并使用GRE或者VxLAN使得跨机器之间Pod能相互通信,本文使用GRE,而VxLAN通常用在需要隔离的大规模网络中。对于Open vSwitch的具体安装步骤,可参考这篇博客,我们在这里就不再详细介绍安装步骤了。安装完Open vSwitch后,接下来便建立minion1和minion2之间的隧道。首先在minion1和minion2上建立OVS Bridge, [root@minion1 ~]# ovs-v ... -
如何在自己的电脑上部署服务器安放web项目?[2022-05-24]
安装tomcat,导出为war文件,放到安装tomcat目录里面的webapps里面,访问就行了 -
Kubernetes部署:控制容器的Docker运行命令(Kubernetes Deployments: Controlling Docker run Command for Containers)[2023-02-17]
我在xwiki方面没有太多经验,但我可以阐明一些看法。 你可以忽略--net和--name 您需要在部署中映射容器端口-p 我不确定音量-v用于什么。 如果这只是为了读取某些配置,则需要在Kubernetes中配置一个ConfigMap 所有环境变量-e都可以存储在ConfigMap中并包含在您的部署中。 我建议你看一下示例部署: https : //kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-co ... -
[根据评论中的讨论进行更新] 这里的问题是Docker CLI无法访问Docker引擎。 由于您使用的是Minikube,因此您可以将Docker CLI指向Minikube内的Docker引擎。 这将确保图像在minikube虚拟机内部生成,并随后在那里运行。 你可以运行命令: eval $(minikube docker-env) 该命令将设置Docker CLI与Minikube中的Docker引擎进行通信所需的参数,并且它应该能够运行失败的命令! [Updating based on discus ...
-
kubernetes是docker容器的编排(调度)系统,不在docker中运行,因为k8ts需要docker守护进程来安排和编排容器。 k8ts需要运行物理(裸机或其他)或虚拟机。 对于在本地运行kubernetes,您可以使用minikube 。 kubernetes is an orchestration(scheduling) system for docker container and don't run inside docker, because k8ts need docker daemo ...
-
将所有内容都部署在多个副本中,然后将Coffea和Tea服务作为NodePort公开并最终将Nginx作为LoadBalancer公开? 也许是的,这足以让你的应用程序正常工作,但最好的方法是使用集群IP的服务并通过Ingress公开它。 由于Ingress适用于路由,但不适合提供静态内容,因此您可以将Nginx用作仅用于静态内容的Web服务器。 您的应用程序看起来像隐藏在Ingress后面的3个服务: 带集群IP的咖啡服务 集群IP茶服务 集群IP作为静态内容的Web服务器的Nginx服务 这里有一个很好 ...
-
这是我最终使用的解决方案,可供任何可能在将来遇到此问题的人使用。 在需要运行其他泊坞窗镜像的主泊坞窗镜像中安装kubectl 。 我按照这些文档做了这个。 一旦你安装了kubectl ,它应该能够自动地与它运行的集群进行交互,并且不需要额外的认证。 接下来,要运行teammtes-image:latest的teammtes-image:latest镜像,您可以在python中执行以下操作: import subprocess subprocess.run(["kubectl", "run", "teamma ...
-
如何在Kubernetes上部署Kafka Stream应用程序?(How to deploy Kafka Stream applications on Kubernetes?)[2022-09-13]
我的应用程序有一些聚合/窗口操作,所以它有一些状态存储在state.dir 。 AFAIK,它还将状态存储的更改日志写入代理,那么可以将Kafka Stream应用程序视为无状态POD? 无状态pod和数据安全(=没有数据丢失):是的,就数据安全而言,您可以将该应用视为无状态pod; 也就是说,无论卡夫卡和卡夫卡数据流发生什么情况,都可以保证您不会丢失数据(并且如果您启用了精确的一次处理,它们也将保证后者)。 这是因为,正如您已经说过的那样,除非您明确禁用了此更改日志功能(默认情况下启用),否则应用程序中的 ... -
如何在kubernetes中部署Docker镜像的特定标签(How do I deploy specific tag of my docker image in kubernetes)[2022-09-19]
您可以使用kubectl set image来更新资源的容器图像。 例如: kubectl set image -f file.json jietest=myreg.azurecr.io/jietest:$TAG 。 You can use kubectl set image to update container image of a resource. For example: kubectl set image -f file.json jietest=myreg.azurecr.io/jietest ... -
在该示例中,默认应用程序在端口8080上,并且所有命令都设置为通过它暴露它。 由于您将其更改为5000(否则它将无法在该端口上本地工作),请仔细检查服务定义以确保它也在查看该端口。 这是kubectl describe service yourservicename命令。 此外,要通过节点端口远程访问它,您将通过描述为“nodeport”的端口进入,而不是端口5000 - 5000是内部端口,“nodeport”是外部端口。 In that example, the default app is on po ...