zoukankan      html  css  js  c++  java
  • liunx uts命名空间

    UTS命名空间是Linux内核Namespace(命名空间)的一个子系统,主要用来完成对容器HOSTNAME和domain的隔离,同时保存内核名称、版本、以及底层体系结构类型等信息。
    UTS命名空间是扁平化的结构,不同的命名空间之间没有层级关系。
    Uts命名空间的用来隔离系统的这些信息,使得用户在容器中查看到的信息是当前容器的系统、版本,不同于主机的,内核通过uts_namespace对当前系统中多个容器的这些信息进行统一管理,每一个容器对应有一个自己的uts_namespace,用来隔离容器的内核名称、版本等信息,不同容器查看到的都是属于自己的信息,相互间不能查看

    查看当前状态的进程树

    启一个终端查看

    [root@k8s-nginx1 ~]# pstree -pl
    systemd(1)─┬─NetworkManager(793)─┬─{NetworkManager}(816)
               │                     └─{NetworkManager}(818)
               ├─agetty(803)
               ├─auditd(765)───{auditd}(766)
               ├─crond(798)
               ├─dbus-daemon(788)
               ├─irqbalance(796)
               ├─lvmetad(613)
               ├─master(1283)─┬─pickup(4030)
               │              └─qmgr(1285)
               ├─nginx(1114)───nginx(1115)
               ├─polkitd(791)─┬─{polkitd}(809)
               │              ├─{polkitd}(810)
               │              ├─{polkitd}(811)
               │              ├─{polkitd}(812)
               │              ├─{polkitd}(815)
               │              └─{polkitd}(820)
               ├─rngd(794)
               ├─rsyslogd(1027)─┬─{rsyslogd}(1131)
               │                └─{rsyslogd}(1132)
               ├─sshd(1029)───sshd(4052)───bash(4054)───pstree(4088)
               ├─systemd-journal(588)
               ├─systemd-logind(792)
               ├─systemd-udevd(617)
               └─tuned(1023)─┬─{tuned}(1552)
                             ├─{tuned}(1553)
                             ├─{tuned}(1555)
                             └─{tuned}(1556)

    查看当前进程的uts,$$表示当前进程的PID,这里等同于4054

    使用readlink 查看namespace的inode number

    [root@k8s-nginx1 ~]# readlink  /proc/$$/ns/uts  /proc/4054/ns/uts
    uts:[4026531838]
    uts:[4026531838]

    查看当前进程的hostname

    [root@k8s-nginx1 ~]# hostname
    k8s-nginx1

    创建新的uts namespace  查看当前状态进程树

    [root@k8s-nginx1 ~]# unshare  --uts bash
    [root@k8s-nginx1 ~]# pstree -pl
    systemd(1)─┬─NetworkManager(793)─┬─{NetworkManager}(816)
               │                     └─{NetworkManager}(818)
               ├─agetty(803)
               ├─auditd(765)───{auditd}(766)
               ├─crond(798)
               ├─dbus-daemon(788)
               ├─irqbalance(796)
               ├─lvmetad(613)
               ├─master(1283)─┬─pickup(4030)
               │              └─qmgr(1285)
               ├─nginx(1114)───nginx(1115)
               ├─polkitd(791)─┬─{polkitd}(809)
               │              ├─{polkitd}(810)
               │              ├─{polkitd}(811)
               │              ├─{polkitd}(812)
               │              ├─{polkitd}(815)
               │              └─{polkitd}(820)
               ├─rngd(794)
               ├─rsyslogd(1027)─┬─{rsyslogd}(1131)
               │                └─{rsyslogd}(1132)
               ├─sshd(1029)───sshd(4052)───bash(4054)───bash(4091)───pstree(4100)# 比上面多出一个bash(4091)
               ├─systemd-journal(588)
               ├─systemd-logind(792)
               ├─systemd-udevd(617)
               └─tuned(1023)─┬─{tuned}(1552)
                             ├─{tuned}(1553)
                             ├─{tuned}(1555)
                             └─{tuned}(1556)

    4054与4091的uts inode number不同,说明这两个线程处在不同的namespace

    [root@k8s-nginx1 ~]# readlink  /proc/$$/ns/uts  /proc/4091/ns/uts
    uts:[4026532430]
    uts:[4026532430]

    设置当前进程的hostname

    新的hostname不会立即生效,执行exec bash,使用新bash取代当前bash,使hostname生效

    [root@k8s-nginx1 ~]# hostname namespace-01
    [root@k8s-nginx1 ~]# exec bash
    [root@namespace-01 ~]# hostname
    namespace-01

     另启一个终端

    查看进程树

    [root@k8s-nginx1 ~]# pstree -pl
    systemd(1)─┬─NetworkManager(793)─┬─{NetworkManager}(816)
               │                     └─{NetworkManager}(818)
               ├─agetty(803)
               ├─auditd(765)───{auditd}(766)
               ├─crond(798)
               ├─dbus-daemon(788)
               ├─irqbalance(796)
               ├─lvmetad(613)
               ├─master(1283)─┬─pickup(4030)
               │              └─qmgr(1285)
               ├─nginx(1114)───nginx(1115)
               ├─polkitd(791)─┬─{polkitd}(809)
               │              ├─{polkitd}(810)
               │              ├─{polkitd}(811)
               │              ├─{polkitd}(812)
               │              ├─{polkitd}(815)
               │              └─{polkitd}(820)
               ├─rngd(794)
               ├─rsyslogd(1027)─┬─{rsyslogd}(1131)
               │                └─{rsyslogd}(1132)
               ├─sshd(1029)───sshd(4052)─┬─bash(4054)───bash(4091)
               │                         └─bash(4115)───pstree(4130)
               ├─systemd-journal(588)
               ├─systemd-logind(792)
               ├─systemd-udevd(617)
               └─tuned(1023)─┬─{tuned}(1552)
                             ├─{tuned}(1553)
                             ├─{tuned}(1555)
                             └─{tuned}(1556)

    查看当前uts进程

    [root@k8s-nginx1 ~]# readlink  /proc/$$/ns/uts  /proc/4115/ns/uts
    uts:[4026531838]
    uts:[4026531838]

    查看当前进程的hostname

    [root@k8s-nginx1 ~]# hostname
    k8s-nginx1

    创建新的uts namespace 查看进程树

    [root@k8s-nginx1 ~]# unshare  --uts bash
    [root@k8s-nginx1 ~]# pstree -pl
    systemd(1)─┬─NetworkManager(793)─┬─{NetworkManager}(816)
               │                     └─{NetworkManager}(818)
               ├─agetty(803)
               ├─auditd(765)───{auditd}(766)
               ├─crond(798)
               ├─dbus-daemon(788)
               ├─irqbalance(796)
               ├─lvmetad(613)
               ├─master(1283)─┬─pickup(4030)
               │              └─qmgr(1285)
               ├─nginx(1114)───nginx(1115)
               ├─polkitd(791)─┬─{polkitd}(809)
               │              ├─{polkitd}(810)
               │              ├─{polkitd}(811)
               │              ├─{polkitd}(812)
               │              ├─{polkitd}(815)
               │              └─{polkitd}(820)
               ├─rngd(794)
               ├─rsyslogd(1027)─┬─{rsyslogd}(1131)
               │                └─{rsyslogd}(1132)
               ├─sshd(1029)───sshd(4052)─┬─bash(4054)───bash(4091)
               │                         └─bash(4115)───bash(4133)───pstree(4142)#新的进程4133
               ├─systemd-journal(588)
               ├─systemd-logind(792)
               ├─systemd-udevd(617)
               └─tuned(1023)─┬─{tuned}(1552)
                             ├─{tuned}(1553)
                             ├─{tuned}(1555)
                             └─{tuned}(1556)

    查看当前进程的uts

    [root@k8s-nginx1 ~]# readlink /proc/$$/ns/uts /proc/4133/ns/uts
    uts:[4026532431]
    uts:[4026532431]
    [root@k8s-nginx1 ~]# hostname  namespace-02
    [root@k8s-nginx1 ~]# exec bash
    [root@namespace-02 ~]# hostname
    namespace-02

     三个namespace之间设置的hostname互不影响,所有进程退出之后,namespace将被自动删除,inode number回收利用

    使用exit退出namespace

    [root@namespace-02 ~]# hostname
    namespace-02
    [root@namespace-02 ~]# exit
    exit
    [root@k8s-nginx1 ~]# 
    [root@k8s-nginx1 ~]# pstree -pl
    systemd(1)─┬─NetworkManager(793)─┬─{NetworkManager}(816)
               │                     └─{NetworkManager}(818)
               ├─agetty(803)
               ├─auditd(765)───{auditd}(766)
               ├─crond(798)
               ├─dbus-daemon(788)
               ├─irqbalance(796)
               ├─lvmetad(613)
               ├─master(1283)─┬─pickup(4030)
               │              └─qmgr(1285)
               ├─nginx(1114)───nginx(1115)
               ├─polkitd(791)─┬─{polkitd}(809)
               │              ├─{polkitd}(810)
               │              ├─{polkitd}(811)
               │              ├─{polkitd}(812)
               │              ├─{polkitd}(815)
               │              └─{polkitd}(820)
               ├─rngd(794)
               ├─rsyslogd(1027)─┬─{rsyslogd}(1131)
               │                └─{rsyslogd}(1132)
               ├─sshd(1029)───sshd(4052)─┬─bash(4054)───bash(4091)
               │                         └─bash(4115)───pstree(4165)#进程4133已经没有了
               ├─systemd-journal(588)
               ├─systemd-logind(792)
               ├─systemd-udevd(617)
               └─tuned(1023)─┬─{tuned}(1552)
                             ├─{tuned}(1553)
                             ├─{tuned}(1555)
                             └─{tuned}(1556)
    [root@k8s-nginx1 ~]# readlink /proc/$$/ns/uts  /proc/4133/ns/uts
    uts:[4026531838]
    [root@k8s-nginx1 ~]# nsenter  --target 4091  --uts bash
    [root@namespace-01 ~]# readlink  /proc/$$/ns/uts
    uts:[4026532430]
    [root@namespace-01 ~]# hostname
    namespace-01
    [root@namespace-01 ~]# 

      

  • 相关阅读:
    MFC的奇异non-modality模态对话框
    用于对话框,窗体视图,对话框和属性类型的布局管理器
    在。net中定制OpenFileDialog
    NFS的使用
    snmp-get
    zabbix-trap
    部署
    /etc/rc.local
    gj的交换机在升级了ios之后最新数据不刷新,
    计算型监控项
  • 原文地址:https://www.cnblogs.com/caonw/p/11933377.html
Copyright © 2011-2022 走看看