namespace

k8s 2. 重要概念

半城伤御伤魂 提交于 2020-01-12 20:08:10
参考《每天5分钟玩转kubernetes》 ColdMan著。 一、概念 1. Cluster cluster是计算、存储和网络资源的集合, k8s使用这些资源运行基于容器的应用 2. Master cluster的大脑,主要职责是调度,决定将应用放在哪里运行。在linux上运行(物理机or虚拟机)。为了高可用,可运行多个master。 3. Node 职责是运行容器应用。由master管理,监控、汇报容器状态,要据master要求管理容器生命周期。运行于linux(物理机or虚拟机) 4. Pod 最小工作单元,每个pod包含1个or多个容器。作为整体被master调度到node上运行。 4.1 引入pod(比容器更高层次的抽象)的目的: (1) 可管理性。 将需要一起工作的(紧密联系的)容器封装到同一个部署单元,以pod为最小单位进行调度、扩展、共享资源、管理生命周期。 (2) 通信和资源共享。 pod中所有容器使用同一个网络namespace(相同ip+port),可直接用localhost通信。共享存储,k8s挂载volume到pod,本质是将volume挂载到pod中的每个容器。 4.2 Pods的2种使用方式 (1) 运行单一容器 one-container-per-Pod, 只将单个容器简单封装成pod. (2) 运行多个容器

浅谈C++中指针和引用的区别

╄→尐↘猪︶ㄣ 提交于 2020-01-11 06:46:00
指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法。 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。如: int a=1;int *p=&a; int a=1;int &b=a; 上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。 而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。 (2)可以有const指针,但是没有const引用; (3)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a是不合法的) (4)指针的值可以为空,但是引用的值不能为NULL,并且引用在定义的时候必须初始化; (5)指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了。 (6)"sizeof引用"得到的是所指向的变量(对象)的大小,而"sizeof指针"得到的是指针本身的大小; (7)指针和引用的自增(++)运算意义不一样; 2.指针和引用作为函数参数进行传递时的区别。 (1)指针作为参数进行传递: 复制代码 #include<iostream>

带Rcpp的R包制作

偶尔善良 提交于 2020-01-11 02:04:37
带Rcpp文件的R包 New project—New directory—R package(选择package w/rcpp,命名,放置目录) description 删除R、Src、man下所有的文件以及namespace,然后编写自己的函数,rcpp函数,man文档照样是Ctrl+Alt+Shift+R实现 devtools::document() check build Remark: 修改的时候记得把Src编译出来的东西给删除,不然老报错。 example删了是没毛病的,不删的话容易报错,之后尝试了很多方法,在另一个大神的博客上找到了解决方案, 修改namespace 。大致就是用devtools::document()将namespace,Rd文档,Export文件都写好之后,要对namespace进行修改: export("hello")#######这个是用roxgen自动写入的 import(Rcpp)####这个要自己加上 useDynLib(temp, .registration = TRUE)#temp要自己修改成包名(包名,R函数名,RC函数名可以不一样) 来源: CSDN 作者: ordinaryJue 链接: https://blog.csdn.net/ordinaryJue/article/details/103898393

Docker 容器资源隔离 namespace(十)

纵饮孤独 提交于 2020-01-11 00:39:45
一、简介 Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法。不知道你是否还记得很早以前的 Unix 有一个叫 chroot 的系统调用(通过修改根目录把用户 jail 到一个特定目录下),chroot 提供了一种简单的隔离模式:chroot 内部的文件系统无法访问外部的内容。Linux Namespace 在此基础上,提供了对 UTS、IPC、mount、PID、network、User 等的隔离机制。 举个例子,我们都知道,Linux 下的超级父亲进程的PID是1,所以,同 chroot 一样,如果我们可以把用户的进程空间 jail 到某个进程分支下,并像 chroot 那样让其下面的进程 看到的那个超级父进程的 PID 为1,于是就可以达到资源隔离的效果了(不同的 PID namespace 中的进程无法看到彼此) Linux Namespace的6大类型 类型 功能说明 Mount Namespace 提供磁盘挂载点和文件系统的隔离能力 IPC Namespace 提供进程间通信的隔离能力 Network Namespace 提供网络隔离能力 UTS Namespace 提供主机名隔离能力 PID Namespace 提供进程隔离能力 User Namespace 提供用户隔离能力 二、Mount Namespace Mount

我们为什么会删除不了集群的 Namespace?

偶尔善良 提交于 2020-01-11 00:37:27
作者 | 声东 阿里云售后技术专家 导读 :阿里云售后技术团队的同学,每天都在处理各式各样千奇百怪的线上问题。常见的有网络连接失败、服务器宕机、性能不达标及请求响应慢等。但如果要评选的话,什么问题看起来微不足道事实上却让人绞尽脑汁,我相信肯定是“删不掉”的问题,比如文件删不掉、进程结束不掉、驱动卸载不了等。这样的问题就像冰山,隐藏在它们背后的复杂逻辑,往往超过我们的预想。 背景 今天我们讨论的这个问题,跟 K8s 集群的 Namespace 有关。Namespace 是 K8s 集群资源的“收纳”机制。我们可以把相关的资源“收纳”到同一个 Namespace 里,以避免不相关资源之间不必要的影响。 Namespace 本身也是一种资源。通过集群 API Server 入口,我们可以新建 Namespace,而对于不再使用的 Namespace,我们需要清理掉。Namespace 的 Controller 会通过 API Server,监视集群中 Namespace 的变化,然后根据变化来执行预先定义的动作。 有时候,我们会遇到下图中的问题,即 Namespace 的状态被标记成了 "Terminating",但却没有办法被完全删除。 从集群入口开始 因为删除操作是通过集群 API Server 来执行的,所以我们要分析 API Server 的行为。跟大多数集群组件类似,API

同一k8s集群中多nginx ingress controller

我们两清 提交于 2020-01-10 18:03:18
同一k8s集群中多nginx ingress controller 同一k8s集群中,若有多个项目(对应多个namespace)共用一个nginx ingress controller,因此任意注册到ingress的服务有变更都会导致controller配置重载,当更新频率越来越高时,此controller压力会越来越大,理想的解决方案就是每个namespace对应一个nginx ingress controller,各司其职。 NGINX ingress controller提供了ingress.class参数来实现多ingress功能 使用示例 如果你已配置好多个nginx ingress controller,则可在创建ingress时在annotations中指定使用ingress.class为nginx(示例)的controller: metadata: name: foo annotations: kubernetes.io/ingress.class: "nginx" 注意:将annotation设置为与有效ingress class不匹配的任何值将强制controller忽略你的ingress。 如果你只运行单个controller,同样annotation设置为除此ingress class或空字符串之外的任何值也会被controller忽略。 配置多个nginx

mybatis

99封情书 提交于 2020-01-10 02:12:57
mybatis 框架搭建 导入jar包 mybatis-3.4.1.jar ojdbc14.jar 创建mybatis核心配置文件 创建根包src src下创建mybatis-config.xml < mappers> < mapper resource="/userMapper.xml"> </ mappers> mapper映射文件 < mapper namespace=“test1”> < select id=“queryById” resultType=“com.model.Manager”> Dao层 测试类 Mybatis:面向接口编程 通过mapper映射文件中 namespace=“接口全路径”进而产生DAO层的代理对象 DAO接口: Mapper映射文件 < mapper namespace=“com.dao.UserDao”> < select id=“queryById” resultType=“com.model.Manager”> select * from manager where id=1 </ select> 测试类 总结:ibatis和mybatis区别: ibatis:mapper映射文件和Dao接口无管理,其中namespace起到模块化作用。在调用mapper映射文件sql时,通过namespace.标签ID mybatis:面向接口编程

Pod资源对象

大兔子大兔子 提交于 2020-01-09 23:54:38
Deployment,Service,Pod是k8s最核心的3个资源对象。 Deployment:最常见的无状态应用的控制器,支持应用的扩缩容,滚动更新等操作。 Service:为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问。 Pod:是运行容器以及调度的最小单位。同一个Pod可以同时运行多个容器,这些容器共享NET,UTS,IPC.除此之外还有USER,PID,MOUNT. ReplicationController:用于确保每个Pod副本在任意时刻都能满足目标数量,简单来说,它用于保证每个容器或容器组总是运行并且可以访问的:老一代无状态的Pod应用控制器。 ReplicaSet:新一代的无状态的Pod应用控制器,它与RC的不同之处在于支持的标签选择器不同,RC只支持等值选择器,RS还额外支持基于集合的选择器。 StatefulSet:用于管理有状态的持久化应用,如database服务程序,它与Deployment不同之处在于,它会为每一个Pod创建一个独立的持久性标识符,并确保每个Pod之间的顺序性。 DaemonSet:用于确保每一个节点都运行了某个Pod的一个副本,新增的节点一样会被添加此Pod,在节点移除时,此类Pod会被回收。 Job:用于管理运行完成后即可终止的应用,例如批量处理作业任务。 Volume:PV PVC

Kubernetes中Namespace与Pod

故事扮演 提交于 2020-01-09 23:54:33
一、Namespace 1)Namespace概述 Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。 Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-system namespace中。 Kubernetes中的名称空间与docker中的名称空间不同。K8s中的名称空间只是做了一个逻辑上的隔离。 2)Namespace常用的命令 (1)查询 [root@master ~]# kubectl get namespaces //查看K8s中存在的名称空间 NAME STATUS AGE default Active 6d21h kube-node-lease Active 6d21h kube-public Active 6d21h kube-system Active 6d21h //namespace包含两种状态”Active”和”Terminating”。在namespace删除过程中,namespace状态被设置成

k8s-api踩过的坑

断了今生、忘了曾经 提交于 2020-01-09 15:18:12
Namespace mismatch. Item namespace:statement. Operation namespace:apps client.batch().jobs().withName(namespace).create(job); 添加withName 来源: CSDN 作者: lovelyesz 链接: https://blog.csdn.net/lovelyesz/article/details/103907248