我是靠谱客的博主 完美小天鹅,最近开发中收集的这篇文章主要介绍虚拟化网络专题(1) - NamespaceNamespace系列文章目录前言一、pandas是什么?二、使用步骤总结参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Namespace

Namespace是Linux内核提供的一种全局资源隔离方案,位于特定Namespace空间中运行的程序认为系统中所有的资源都是独占的,就像拥有一台独立的物理机。不同Namespace空间的进程完全隔离,一个namespace空间的进程完全感知不到其他namespace进程的存在。

容器化技术正是用了内核的namespace特性,实现了不同容器之间进程的完全隔离。

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • Namespace
  • 系列文章目录
  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结
    • 资源隔离
      • 查看进程归属namespace
      • 系统支持的最大namespace数量
    • 操作网络命名空间
      • 命令
      • 查看命名空间
  • 参考


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、pandas是什么?

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

资源隔离

内核到底隔离了哪些资源呢?下面是列表:

Namespace Flag            Page                  Isolates
Cgroup    CLONE_NEWCGROUP cgroup_namespaces(7)  Cgroup root directory
IPC       CLONE_NEWIPC    ipc_namespaces(7)     System V IPC, POSIX message queues
Network   CLONE_NEWNET    network_namespaces(7) Network devices, stacks, ports, etc.
Mount     CLONE_NEWNS     mount_namespaces(7)   Mount points
PID       CLONE_NEWPID    pid_namespaces(7)     Process IDs
Time      CLONE_NEWTIME   time_namespaces(7)    Boot and monotonic clocks
User      CLONE_NEWUSER   user_namespaces(7)    T{User and group IDs T}
UTS       CLONE_NEWUTS    uts_namespaces(7)     Hostname and NIS domain name

列说明:

  • 第一列是namespace名称;
  • 第二列是通过API调用时使用的Flag值;
  • 第三列对应了man page说明;
  • 第四列描述了该Namespace隔离的资源列表

查看进程归属namespace

每个进程的/proc/PID/ns/目录下保存了该进程使用的namespace属性信息:

hxg@hubuntu:~/github$ sudo ls -l /proc/1/ns/
总用量 0
lrwxrwxrwx 1 root root 0  5月 11 02:15 cgroup -> 'cgroup:[4026531835]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 ipc -> 'ipc:[4026531839]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 mnt -> 'mnt:[4026531840]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 net -> 'net:[4026531992]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 pid -> 'pid:[4026531836]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 pid_for_children -> 'pid:[4026531836]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 time -> 'time:[4026531834]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 time_for_children -> 'time:[4026531834]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 user -> 'user:[4026531837]'
lrwxrwxrwx 1 root root 0  5月 11 02:15 uts -> 'uts:[4026531838]'

最后一列表示为DeviceID : inodeNumber,如果不同的进程,其namespace资源指向的inodeNumber相同,则证明两个进程归属同一个namespace。

系统支持的最大namespace数量

/proc/sys/user/目录下的max_XXX_namespaces文件记录了XXX类型namespace支持的数量,列表如下:

hxg@hubuntu:~/github$ sudo ls /proc/sys/user/
max_cgroup_namespaces  max_ipc_namespaces  max_pid_namespaces	max_uts_namespaces
max_inotify_instances  max_mnt_namespaces  max_time_namespaces
max_inotify_watches    max_net_namespaces  max_user_namespaces

下面查看的是PID namespace支持数量,为23074个:

hxg@hubuntu:~/github$ sudo cat /proc/sys/user/max_pid_namespaces 
23074

操作网络命名空间

命令

本系列文章目的是为了讲清楚虚拟化网络,所以我们将重点看网络的namespace。

系统提供了ip netns命令操作网络namespace,功能如下:

[root@worker2 ~]# ip netns help
Usage: ip netns list
       ip netns add NAME
       ip netns set NAME NETNSID
       ip [-all] netns delete [NAME]
       ip netns identify [PID]
       ip netns pids NAME
       ip [-all] netns exec [NAME] cmd ...
       ip netns monitor
       ip netns list-id

查看命名空间

默认情况下系统中没有任何网络命名空间,为了验证功能,我们需要手工创建。

下面的命令用于创建网络命名空间nst1

[root@worker2 ~]# ip netns add nst1

创建出来的命名空间文件位于/var/run/netns/目录下:

[root@worker2 ~]# ls /var/run/netns
nst1

接下来我们看下nst1命名空间中的网络配置,空的命名空间只有lo设备,看起来真的像是一台独立的物理机:

[root@worker2 ~]# ip netns exec nst1 ifconfig lo up
[root@worker2 ~]# ip netns exec nst1 ifconfig -a
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
		...

参考

  • https://man7.org/linux/man-pages/man7/namespaces.7.html

最后

以上就是完美小天鹅为你收集整理的虚拟化网络专题(1) - NamespaceNamespace系列文章目录前言一、pandas是什么?二、使用步骤总结参考的全部内容,希望文章能够帮你解决虚拟化网络专题(1) - NamespaceNamespace系列文章目录前言一、pandas是什么?二、使用步骤总结参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部