虚拟机的良好命名约定或方案是什么?
我们正在总部构建一个虚拟化硬件服务器集群,并在我们的每个州办事处构建一个类似的集群(每个州一个集群)。
我们需要命名虚拟化硬件服务器,这是比较容易的部分,但我们还需要为将在虚拟化硬件上运行的虚拟机 (VM) 提出一个命名约定。
命名约定需要具有足够的描述性,以便管理员和开发人员轻松识别 VM 的用途,但又要足够短,以免在键盘上产生重复性劳损。
为了让事情变得更有趣,我们现有的硬件命名约定在企业的功能区域之间有所不同。内部一致,但不同。有不同的文化,例如 AIX、HP-UX、Linux、Windows。
我最初的想法是构建一个 DNS 或 Active Directory 列表,每台机器有两个名称:一个名称在整个企业中是唯一的,并且具有相当的描述性;另一个名称是功能区域的本地名称。基本上,一个企业 VM 名称空间和一个功能区 VM 名称空间。企业 VM 名称可以很长,因为主要是机器使用它们来跨企业映射功能区 VM 名称。功能区名称需要简短明了,以便开发人员可以在头脑中轻松管理它们。
我创建了一个名为 \\dc1\bank 的 DFS 命名空间。还有一些来自其他文件服务器的其他文件夹(例如 \\dc1\bank\folder1 是 \\fs1\folder1 上的文件夹)。我想限制用户直接访问其他文件服务器上的文件夹(例如:限制直接访问 \\fs1\folder1 )。我可以在 Windows Server 2008 R2 中执行此操作吗?
我已经在godaddy.com注册了一个域名,我也在Linode.com出租了托管空间
Linode 给了我一个永久的 IP。如何将此IP链接到godaddy.com的域名?
有没有办法检查另一个挂载命名空间的文件和目录?
setns(2)系统调用似乎能够将线程移动到另一个命名空间,但如果此功能尚未内置到程序(shell、文件服务器等)中,则似乎需要执行新进程。而且由于目标挂载命名空间可能不包含所需的二进制文件,这是一个问题。
编辑:
我正在寻找的是一种“用户友好”的方式来访问命名空间中的文件。例如,我可以想象有一种方法可以将命名空间挂载在主机系统的某处。但因为我不知道什么是可能的,所以我在问。
有一个进程在其自己的网络命名空间中运行。我想远程登录到机器并在此进程网络命名空间中运行命令,类似这样(17543 是具有自己的网络命名空间的进程的 pid):
# ip netns exec /proc/17543/ns/net ifconfig
Cannot open network namespace "/proc/17543/ns/net": No such file or directory
# ls /proc/17543/ns/net
/proc/17543/ns/net
Run Code Online (Sandbox Code Playgroud)
它抱怨网络名称空间不存在,但看起来该文件存在。如何在另一个进程网络命名空间中运行命令?
我正在测试 k8s 调试功能,包括调试 pod 和临时容器,但我无法弄清楚如何将“目标”pod 的文件系统正确映射到调试容器中。
我想使用递归绑定挂载 * 链接两个不相交的挂载命名空间,以便容器 A 将容器 B 的根视为容器 B 的根,/containerB反之亦然。包括所有卷和其他安装。
目标是让目标 pod 的完整文件系统树,包括映射到调试容器的子目录(例如 )的卷和其他挂载/run/target。如果目标容器挂载持久卷,则应映射这些挂载点,因此,例如,如果目标容器具有,/data则调试容器应具有已安装的/run/target/data.
或者,可以将调试容器文件系统树“注入”到目标容器中,因此可以在调试容器/run/debug时公开可用的调试容器根。nsenter包括它的像 procfs 这样的挂载,所以它的功能齐全。
我希望能够例如调试容器提供的gdb -p $target_pid位置。为此,必须能够从目标容器中找到进程可执行文件。gdbgdb
我探索了一些解决方法。但我真正想做的是将mount --rbind目标容器 FS 树转移到来宾上,反之亦然。给定一个定制的特权调试容器,例如:
apiVersion: v1
kind: Pod
metadata:
name: debugcontainer
namespace: default
spec:
nodeName: TARGET_NODE_NAME_HERE
enableServiceLinks: true
hostIPC: true
hostNetwork: true
hostPID: true
restartPolicy: Never
containers: …Run Code Online (Sandbox Code Playgroud) 我刚刚开始探索网络命名空间。我尝试按照http://www.opencloudblog.com/?p=42中的文章实现以下简单设置
+--------+ +------------+ +--------+ | |------+ +------+ |------+ +------| | |nstest2 |veth-2++------++veth-b| 默认 |veth-a++-----++veth-1| nstest1| | |------+ +------+ 命名空间 |------+ +------| | +--------+ +------------+ +--------+
我执行以下命令:
#setup namespace nstest1
sudo ip netns add nstest1
sudo ip netns exec nstest1 ip link set dev lo up
sudo ip link add veth-a type veth peer name veth-1
sudo ip link set veth-1 netns nstest1
sudo ip netns exec nstest1 ip addr add 10.0.1.1/24 dev veth-1
sudo ip netns exec nstest1 …Run Code Online (Sandbox Code Playgroud) 我知道容器使用主机的内核,据我所知,这就是我们不需要操作系统的原因。我的问题是(我在网上找不到任何好的解释):
1) 如果是这种情况,那么我们是否会收到 shell 提示以及我们如何在容器上添加 systemctl、services 等内容
2) 例如,我们如何在 Ubuntu 主机上安装 CentOS 容器?在这种情况下,容器是否在容器映像中安装了操作系统?
namespaces ×8
linux ×3
docker ×2
linux-kernel ×2
mount ×2
containers ×1
dfs ×1
godaddy ×1
hosting ×1
kubernetes ×1
linode ×1
networking ×1
ping ×1
ubuntu-12.10 ×1