在云环境中(必要云供应商可以支持)创建一个集群外部的负载均衡器,并为使用该负载均衡器的 IP 地址作为 服务的访问地址。此时 ClusterIP 和 NodePort 的访问方式仍旧可用。
下图中有两个服务Service A(黄色虚线)和Service B(蓝色虚线) Service A 将哀求转发到 IP 为 10.10.10.1 的Pod上, Service B 将哀求转发到 IP 为 10.10.10.2、10.10.10.3、10.10.10.4 的Pod上。
Service 将外部哀求路由到一组 Pod 中,它提供了一个抽象层,使得 Kubernetes 可以在不影响服务调用者的情况下,动态调理容器组(在容器组失效后重新创建容器组,增长或者减少同一个 Deployment 对应容器组的数量等)。
在每个节点上都有Kube-proxy服务,Service使用其将链接路由到Pod
伸缩(Scaling)应用步伐
可以通过更改deployment配置文件中的replicas项来设置开启的POD数量
在前面,我们创建了一个 Deployment,然后通过 服务提供访问 Pod 的方式。我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用步伐。当流量增多导致应用步伐POD负载加重后,我们必要对应用步伐进行伸缩操作,增长POD数量来减轻负担,访问流量将会通过负载均衡在多个POD之间转发。 伸缩 的实现可以通过更改 nginx-deployment.yaml 文件中摆设的 replicas(副本数)来完成
service account 是由 Kubernetes API管理的账户。它们都绑定到了特定的 namespace,并由 API server 主动创建,或者通过 API 调用手动创建。Service account 关联了一套凭据,存储在 Secret,这些凭据同时被挂载到 pod 中,从而允许 pod 与 kubernetes API 之间的调用。(service account的使用见k8s安全部分)
Use Account(用户账号):一般是指由独立于Kubernetes之外的其他服务管理的用户账号,例如由管理员分发的密钥、Keystone一类的用户存储(账号库)、乃至是包 含有用户名和暗码列表的文件等。Kubernetes中不存在表现此类用户账号的对象, 因此不能被直接添加进 Kubernetes 系统中 。
X509 client certs
客户端证书认证,X509 是一种数字证书的格式标准,是 kubernetes 中默认开启使用最多的一种,也是最安全的一种。api-server 启动时会指定 ca 证书以及 ca 私钥,只要是通过同一个 ca 签发的客户端 x509 证书,则认为是可信的客户端,kubeadm 安装集群时就是基于证书的认证方式。
user 生成 kubeconfig就是X509 client certs方式。
Service Account Tokens
由于基于x509的认证方式相对比较复杂,不实用于k8s集群内部pod的管理。Service Account Tokens是 service account 使用的认证方式。定义一个 pod 应该拥有什么权限。一个 pod 与一个服务账户相干联,该服务账户的凭据(token)被放入该pod中每个容器的文件系统树中,位于/var/run/secrets/kubernetes.io/serviceaccount/token
service account 主要包含了三个内容:namespace、token 和 ca
节点亲和性( nodeAffinity )
节点亲和性主要是用来控制 pod 要摆设在哪些主机上,以及不能摆设在哪些主机上的,演示一下:
查看node的label命令
kubectl get nodes --show-labels
复制代码
给节点打上label标签
kubectl label nodes k8s-node01 com=justtest
node/k8s-node01 labeled
复制代码
当node 被打上了相干标签后,在调理的时间就可以使用这些标签了,只必要在 Pod 的spec字段中添加 nodeSelector 字段
apiVersion: v1
kind: Pod
metadata:
name: node-scheduler
spec:
nodeSelector:
com: justtest
复制代码
Pod 亲和性( podAffinity )
pod 亲和性主要处置惩罚的是 pod 与 pod 之间的关系,比如一个 pod 在一个节点上了,那么另一个也得在这个节点,或者你这个 pod 在节点上了,那么我就不想和你待在同一个节点上。
污点与容忍度 节点亲和性是 Pod的一种属性,它使 Pod 被吸引到一类特定的节点。 污点(Taint)则相反——它使节点可以或许排斥一类特定的 Pod。
污点标记选项: