网站制作费用预算表,雅诗兰黛网络营销策划书,网站建设交流材料,响应式网站宽度Service 
它提供了服务程序和外部的各种组件通信的能力#xff1a; 1 Service 有固定的IP和端口 2 Service 背后是pod在工作 Kubernetes 会给Service分配一个静态 IP 地址#xff0c;Service自动管理、维护后面动态变化的 Pod 集合#xff0c;当客户端访问 Service#xff…Service 
它提供了服务程序和外部的各种组件通信的能力 1 Service 有固定的IP和端口 2 Service 背后是pod在工作 Kubernetes 会给Service分配一个静态 IP 地址Service自动管理、维护后面动态变化的 Pod 集合当客户端访问 Service它就根据某种策略把流量转发给后面的某个 Pod。 Service使用了iptables技术每个节点上的kube-proxy组件自动维护iptables规则。 客户端不需要关心Pod的具体地址只要访问Service的固定IP地址。 Service会根据iptables规则转发请求给后端的Pod。 支持多种services 
NodePort NodePort服务监听节点上的一个端口并将请求转发给Pod。把Service通过端口号暴露到集群中的节点主机。ClusterIPCusterIP是默认的Service的IP地址是一个虚拟IP地址类似Swarm分配了VIP。只能kubernetes集群内部访问使用外部网络无法ping通。服务在cluster内部创建一个虚拟IP以实现不同服务之间的通信比如一组前端服务器到一组后端服务器。LoadBalancerLoadBalancer需要搭配云厂商第三方的负载均衡器来使用。它在支持的云供应商中为我们的应用程序提供一个负载平衡器。ExternalNameExternalName的服务将service映射到 DNS CNAME不常用。 
NodePort 
NodePort 服务可以将节点上的端口映射到pod上。 这里理清三个端口 1 pod会有一个端口 这个pod服务的端口 2 Service会有一个端口,Service的端口背后可能有多个pod,相当于是一个统一入口。 3 这个节点上提供外部访问有一个端口,节点端口只能在一个有效的范围内默认情况下是30,000到32,767  
#监控节点的变化
kubectl get pods -wapiVersion: v1
kind: Service
metadata: name: myapp-service
spec:type: NodePortports:- port: 80 #这个端口必须要有targetPort: 80 #默认和port一致nodePort: 30008 #默认随机一个端口selector:app: myapp #这个选择器会取选对应的pod作为这个Service的podCusterIP 
web应用程序一般有不同种类的部分所有单元都分配了一个IP地址。但是这些IP不是静态的。这些组件随时可能出现故障并且创建新的pod。因此不能依赖这些IP地址进行应用程序之间的内部通信。 每个service都在集群内获得一个IP和分配给它的名称这是其他路径访问该service时应使用的名称。这种类型的service称为ClusterIP。 
apiVersion: v1
kind: Service
metadata: name: backend
spec:type: ClusterIP #默认就是ClusterIPports:- port: 80targetPort: 80selector:app: myapptype: backendNamespace 
Kubernetes在集群首次启动时自动创建默认名称空间default namespace。Namespace 主要起到限制起到隔离资源的作用。 
Kubernetes在内部创建了一组pod和service如网络方案、DNS服务等。为了将这些与用户隔离开来防止意外删除或修改这些服务Kubernetes在集群启动时创建的另一个名为kube-system的名称空间下创建了这些服务。 
Kubernetes自动创建的第三个名称空间被称为kube-public创建应向所有用户开放的资源的地方。 
将Kubernetes集群用于企业或生产目的时可能要考虑使用名称空间。例如在开发和生产环境中使用同一个集群但同时在它们之间隔离资源可以为它们各自创建一个不同的名称空间。在开发环境中工作时就不会意外地修改生产环境中的资源。 
apiVersion: v1
kind: Namespace
metadata:name: dev#通过yml方式创建
kubectl create -f namespace-dev.yml
#通过命令创建
kubectl create namespace dev
#查看命令空间,查看当前集群有哪些命名空间
kubectl get ns集群内部可以通过下面这个规则进行通信  一个名字空间里的资源也可以简单地以name通信。如果要连接另一个名字空间的服务必须将名称空间的名称附加到服务的名称上。例如对于默认名称空间中的web pod要连接到dev环境或名称空间中的数据库使用servicename.namespace.svc.cluster.local格式dbservice.dev.svc.cluster.local。 
#获取某个namespace下的pods
kubectl get pods --namespacedev
#下面这两条命令都是一样的都是获取所有pod对应的命令空间
kubectl get pods --all-namespaces
kubectl get pods -A资源配额 
kubectl create -f resource-quota.ymlresource-quota.yml 
apiVersion: v1
kind: ResourceQuota
metadata:name: compute-quotanamespace: dev #指定限制的namespace
spec:hard:pods: 10 #限制pod数量最多是10个requests.cpu: 4 #限制cpu申请的时候为4个requests.memory: 5Gi #限制内存limits.cpu: 10 #使用限制limits.memory: 10Gi #使用限制这里申请和使用是有区别的安装Request取申请但是使用的时候最大可以到limits 
切换命名空间 
#将当前的命令空间切换为dev
kubectl config set-context $(kubectl config current-context) --namespacedev