摘要: 1:用的最多的是nodePort,如下nginx的service,将type设置成NodePort,同时nodePort设置成30010(k8s为了不与宿主机的端口冲突,默认限制了30000以下的端口) 这样通过任何一个节点IP+30010就可以访问nginx 2:loadbalancer模式,只有 阅读全文
posted @ 2017-10-18 15:24 深空灰 阅读(7709) 评论(0) 推荐(0) 编辑
摘要: pod本身是无状态,所以很多有状态的应用,就需要将数据进行持久化。 1:将数据挂在到宿主机。但是pod重启之后有可能到另外一个节点,这样数据虽然不会丢但是还是有可能会找不到 2:挂到外部存储,如nfs 上述说的是简单的存储方法,直接在deployment中定义了具体的存储,但是这样会存在几个问题。 阅读全文
posted @ 2017-10-18 15:11 深空灰 阅读(1916) 评论(0) 推荐(0) 编辑
摘要: deployment是k8s中部署应用最常见的一种方式。如果不需要被访问,那么只需要定义deployment即可。如果需要被其他服务访问,那么可以创建一个service与其绑定,通过访问service来访问对应的服务。 如上创建一个nginx的应用,访问任意节点IP:30010端口就就可以看到ngi 阅读全文
posted @ 2017-10-18 14:41 深空灰 阅读(1690) 评论(0) 推荐(0) 编辑
摘要: k8s集群中有三类IP: 1:宿主机的物理网卡IP,比如192.168.255.* 2:cni创建的网卡的IP,比如172.16.*.* 3:虚拟的IP(即ClusterIP ,无法ping通,通过代理连接),172.19.*.* 如果在任何一台机器上查看网卡name能看到那么多网卡。如下图。 et 阅读全文
posted @ 2017-10-18 14:13 深空灰 阅读(858) 评论(0) 推荐(0) 编辑
摘要: namespace 通常用来划分项目 默认kubectl命令 操作的namespace是default kube-system是k8s的系统组件namespaces 切换namespaces: 阅读全文
posted @ 2017-10-18 14:09 深空灰 阅读(1742) 评论(0) 推荐(0) 编辑
摘要: nodeAffinity(主机亲和性),podAffinity(POD亲和性)以及podAntiAffinity(POD反亲和性) nodeAffinity使用场景 : ● 将S1服务的所有Pod部署到指定的符合标签规则的主机上。 ● 将S1服务的所有Pod部署到除部分主机外的其他主机上。podAf 阅读全文
posted @ 2017-10-18 14:02 深空灰 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 1:helm(部署工具,可以用来部署常用的应用,替代kubelet原生命令) https://github.com/kubernetes/helm 应用列表:https://github.com/kubernetes/charts/tree/master/stable 2:Prometheus Op 阅读全文
posted @ 2017-10-18 14:01 深空灰 阅读(1220) 评论(0) 推荐(0) 编辑
摘要: #地址见:https://github.com/SILLKY/kubernetes-pro/tree/master/Master-HA#包括其他一些文件,适当版本1.6.1#!/bin/bash host=master.k8s host1=master1.k8s host2=master2.k8s ip0=192.168.255.125 ip1=192.168.255.126 ip2=192... 阅读全文
posted @ 2017-10-18 13:47 深空灰 阅读(1276) 评论(0) 推荐(0) 编辑
摘要: 设置prometheus 的web hook 为对应服务: 报警的配置如下,设置了web hook url,报警就会把消息发给web hookurl,但是这里的数据格式和钉钉要求的格式不一样,所以后面会加一层。 由于部署在k8s中,url 是 'http://dingding-alerts:80/' 阅读全文
posted @ 2017-10-18 13:39 深空灰 阅读(2760) 评论(0) 推荐(0) 编辑
摘要: dashboard在多人使用的时候经常遇到误操作的情况,为了对dashboard进行限制,对dashboard进行了权限控制, 这里主要限制只允许pod被删除。1:创建对应权限的ClusterRole(这里主要值允许pods被删除) 注意的一点是为了让dashboard显示heapster的监控数据 阅读全文
posted @ 2017-10-18 13:33 深空灰 阅读(1039) 评论(0) 推荐(0) 编辑
摘要: 注意:不能修改hostnamecurl -sSL http://aliacs-k8s.oss-cn-hangzhou.aliyuncs.com/installer/kubemgr-1.6.1.sh >kubemgr-aliyun-1.6.1.shchmod +x kubemgr-aliyun-1.6 阅读全文
posted @ 2017-10-18 11:01 深空灰 阅读(4894) 评论(1) 推荐(0) 编辑
摘要: 有时候容器在running的状态,但是里面的服务挂了,这个就难办了,所以k8s提供了一种检查服务是否健康的方法 Liveness Probe的种类: ● ExecAction:在container中执行指定的命令。当其执行成功时,将其退出码设置为0; ● TCPSocketAction:执行一个TC 阅读全文
posted @ 2017-10-18 09:44 深空灰 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 实际应用中发现,部分节点性能不足,某些较大的服务如果跑在这些机器上。会很快消耗该机器的内存和cpu资源,如果用uptime看一下的就会发现负载特别高(合理的范围这个值应该等于cpu个数),高到一定值就会导致该节点挂了。 比较好的方式是 1:底层,采用性能高的服务器用openstack分出多个虚机,通 阅读全文
posted @ 2017-10-18 09:40 深空灰 阅读(10477) 评论(1) 推荐(4) 编辑
摘要: 操作基本命令: 通过yaml文件创建: kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete) kubectl apply -f xxx.yaml (创建+更新,可以重复使用) 通过yaml文件删除: kubectl delete -f xxx.yaml 阅读全文
posted @ 2017-10-18 09:12 深空灰 阅读(14872) 评论(1) 推荐(1) 编辑
摘要: 如图,在调试中发生缓存区溢出的报错。而且是在函数返回的时候发生的。 来说一下缓存区溢出的原理。在进入到该函数会首先将函数的返回地址写在内存中H,然后函数中用的局部变量定义都会在缓存区中,一开始声明的时候都确定了各种变量的长度,但是当我们异常的改变了这个变量的长度,之后,就发生了缓存区溢出的情况,当溢 阅读全文
posted @ 2016-09-26 14:41 深空灰 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 1:没有自动生成web.xml文件 解决方法:新建web工程的时候最后会选择是否创建web.xml文件 2:通过url映射无法打开对应网站 解决方法: 1:首先保证<servlet-class>里面的是包名+类名 2:确定web-inf文件中是否有class文件,如果没有项目->java build 阅读全文
posted @ 2016-08-11 10:07 深空灰 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 在正常情况下,c++模板是不允许在头文件声明,在cpp文件中实现。那是因为在cpp文件在编译时内存必须要给它分配储存空间。但是模板本身是一种泛型,在没有明确定义声明类型前,编译器也无法知道它的大小。所以就会出现链接失败。 如果这样子编译的话,就会提示: 常用的解决方法一共有2种: 1是将定义也在头文 阅读全文
posted @ 2016-06-17 10:47 深空灰 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 条款5:了解C++默默编写并且调用了哪些函数 1、 构造函数,析构函数,拷贝赋值函数,拷贝构造函数。 2、 类中包含引用的时候无法进行一般的赋值操作,必须自己定义拷贝赋值操作符 条款6:若不想使用编译器自动生成的函数就应该明确拒绝 1、 声明为private可以阻止(单不绝对安全,member函数和 阅读全文
posted @ 2016-06-15 15:56 深空灰 阅读(217) 评论(0) 推荐(0) 编辑
摘要: ZMQ是什么? 这是个类似于Socket的一系列接口,他跟Socket的区别是:普通 的socket是端到端的(1:1的关系),而ZMQ却是可以N:M 的关系,人们对BSD套接字的了解较多的是点对点的连接,点对点连接需要显式地建立连接、销毁连接、选择协议(TCP/UDP)和处理错误等,而ZMQ屏 蔽 阅读全文
posted @ 2016-06-04 17:54 深空灰 阅读(24336) 评论(0) 推荐(0) 编辑
摘要: 信号量在多线程中,主要是用于线程的同步或者限制线程运行的数量。 所谓同步,当流程1运行在线程1中,流程2运行在线程2中,流程2必须在流程1结束之后才能开始执行。你会怎么做,所有就需要给出一个流程1结束的信号。 在信号来之前,让线程2先在某个位置等待,这个使用方式和互斥锁有点类似,互斥从某种意义上也是 阅读全文
posted @ 2016-05-21 14:58 深空灰 阅读(5040) 评论(0) 推荐(1) 编辑
摘要: 首先贴一段win32API实现的多线程的代码,使用CreateThread实现,如果不要传参数,就把第四个参数设为NULL 下面是执行的结果 互斥锁: 当一个全局的共有资源被多个线程同时调用会出现意想不到的问题,比如你去银行取出所有钱,同时又转所有钱到支付宝,如果这两块同时执行,就有可能转出双倍的钱 阅读全文
posted @ 2016-05-21 14:30 深空灰 阅读(26233) 评论(2) 推荐(1) 编辑
摘要: 条款1:视C++为一个语言联邦 1、C、Object-Oriented C++、Template C++ 、STL 组成了C++,高效编程取决你使用C++的哪一部分 条款2:尽量用const ,enum,inline替换 #define 1、Const 代替 #define中普通的宏,编译器会对类型 阅读全文
posted @ 2016-04-12 19:42 深空灰 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 1、类中所有的属性全部设置为private 然后在需要在外部调用的属性,每个都自己写Get方法返回,或者用Set方法设置 2、类成员变量采用m_前缀,代表类成员 3、采用单例模式 这样在程序的任何地方都可以调用CConfig::GetInstance()来获取CConfig这个只有一个的实例。 4、 阅读全文
posted @ 2016-04-12 19:30 深空灰 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 机器学习可分为监督学习和无监督学习。有监督学习就是有具体的分类信息,比如用来判定输入的是输入[a,b,c]中的一类;无监督学习就是不清楚最后的分类情况,也不会给目标值。 K-近邻算法属于一种监督学习分类算法,该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属 阅读全文
posted @ 2016-04-04 23:39 深空灰 阅读(3339) 评论(0) 推荐(2) 编辑
摘要: 所谓尾递归,就是在函数的最后一行调用原函数,进行递归。这个方法是完全合法的,但是存在一个问题。函数在调用自身进行递归的时候,包括调用的时候的入口,每一个函数的局部变量都是需要保存在寄存器中的,然后会以抽象的方式保存在堆顶部。这一些的工作都是由一个栈来完成,所储存的的信息被称为活动记录,或叫做栈帧。如 阅读全文
posted @ 2016-03-30 19:42 深空灰 阅读(847) 评论(1) 推荐(0) 编辑