1.kubernetes各种特性
kubernetes通过各种Controller来管理Pod的生命周期,主要有Deployment,ReplicaSet,DaemonSet,Job,StatefuleSet等。
- Deployment
- DaemonSet
DaemonSet的不同之处在于:每个NODE上最多只能运行一个副本 - Job
Job的属于工作类容器,主要是用于一次性任务。
Job可以并行运行
Job可以定时,类似于Linux cron
2.通过Service访问Pod
- kubernetes的Service在逻辑上代表了一组Pod,具体是哪些Pod,则由label挑选。
- Service有自己的IP,而且是固定不变的,所以即使Pod挂了,重新运行一个Pod,有了新的Pod IP,对于客户端来说也是一样的,因为Service的IP并没有改变。
- 客户端只需要访问Service的IP就好了,kubernetes则是负责建立和维护Service与Pod的映射关系(通过iptables)
2.1 clusterIP 访问Service
通过kubectl get svc 能看到ClusterIP,ClusterIP只能在集群内部访问到。
2.2 DNS 访问Service
DNS访问依赖于dns组件,每当有新的Service创建,dns组件会添加该Service的DNS记录。
Cluster中的Pod可以通过<Service_name>:<Namespace_name>访问service(如果Pod和Service同属于一个namespace,可以省略namespace的名字)
2.3 外网访问Service
外网使用NodePort访问Service。
Service通过Cluster节点的静态端口对外提供服务。
Cluster外部通过<NodeIP>:<NodePort>访问Service
实现方式是在yaml中添加type:NodePort,ye比如
apiVersion: v1
kind: Service
metadata:
name: httpd-svc
spec:
type: NodePort
selector:
run: httpd
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 30000