Kubernetes提供了两种负载分发策略:RoundRobin和SessionAffinity
◎ RoundRobin:轮询模式,即轮询将请求转发到后端的各个Pod上。
◎ SessionAffinity:基于客户端IP地址进行会话保持的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上。
如何指定kubernetes的负载均衡册率:kubernetes 默认是RoundRobin策略。
可以通过service.spec.sessionAffinity=ClientIP来启用SessionAffinity策略。
1kubectl get pods -o jsonpath={.items[0].metadata.name}
在此讲中, 我们介绍go的自动代码生成功能, 事实上kubernetes在很多地方都在用code generators这个功能, 我接下来会说如何使用code generators来编写custom resources
在kubernetes开发早期 , 随着越来越多的资源被加进系统, 越来越多的代码不得不被重写。 这个时候代码生成使得代码的维护更加容易 , 在早起是用Gengo library 之后在gengo的基础上, kubernetes发展出了k8s.io/code-generator 它是一个代码生成器的集合
使用代码生成器通常在代码生成器的调用都是一样的方法, 只是group...
作为kuberntes生态系统中最核心的扩展之一 , Custom Resources(CR) 扮演这重要角色 , 许多成功的项目都离不开CR的使用 ,比如Istio, Linkerd 2.0, AWS App Mesh等等
Kubernetes cluster version 1.7之后, CR作为主要的 Kubernetes API 资源存储在etcd 中 , 如下图所示,如果请求不是以下任何一个请求,则返回到 apiextensions-apiserver,该服务器为通过 CRDs 定义的资源提供服务
请求如果是aggregation的就使用aggregated API ser...
这次说的是如何通过kuberntes API 访问诸如pods , services, deployment等等对象和资源
kuberntes 的编程接口主要由k8s.io/client-go库组成 , client-go是一个典型的web服务客户端库, 它支持REST verbs, 比如: create , get, list ,update,delete,patch , 并且还支持watch
clinet-go在GitHub的地址是https://github.com/kubernetes/client-go , 它对kuberntes版本是一一对应的
它的对应表是:
...
kuberntes主节点控制平面由:API Server , controller manager和scheduler组成
kuberntes的核心是他的api服务器,但是api服务器是如何工作的呢,下面我们就仔细研究下他的HTTP接口
API服务器的HTTP接口从客户机的角度来看, 由于性能原因, 用JSON 或者protocol buffer协议来暴露其RESTful HTTP API
API服务器的HTTP接口再处理请求的时候,使用HTTP verbs(或者说是http方法)来查询和操作kuberntes资源
使用HTTP GET 来检索具有特定资源类型或者资源集合或者资源列表 ...
查看kubernetes的内部通讯地址
1kubectl get svc
12NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 46d
这个10.96.0.1就是内部的地址 , 是集群内部pod访问api-server的地址 , 可以查看具体的内容
1kubectl get svc kubernetes
12345678910111213Name: ...
节点亲和性
1kubectl explain pod.spec.affiniy
taint的effect定义对pod排斥效果:
NoSchedule: 仅影响调度过程 , 对现存pod对象不产生影响
NoExecute: 既影响调度过程 也影响现在的pod对象
PreferNoSchedule: 影响调度过程 不过你非要调度也可以
先下载nginx-ingress1for file in configmap.yaml default-backend.yaml namespace.yaml rbac.yaml tcp-services-configmap.yaml udp-services-configmap.yaml with-rbac.yaml;do wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/$file; done
部署一个NodePort讲上面下载好的文件先应用起来 , 这个时候去名为ingress...
用户持有者的名称就是账号名 , 就是证书的subj
用来认证接入api-server
创建kubernetes认证的新用户test1cd /etc/kubernetes/pki
1(umask 077; openssl genrsa -out test.key 2048)
1openssl req -new -key test.key -out test.csr -subj "/CN=test"
1openssl x509 -req -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out test.crt ...