『中级篇』k8s的Service简介和演示(67)
2018-10-22 11:04:24
李明
  • 访问次数: 379
  • 注册日期: 2018-07-09
  • 最后登录: 2020-03-30

原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』k8s的Service简介和演示(67)

我们在使用pod的时候,pod之前可以相互ping通的,机器本身也可以ping通pod和另外机器的pod,如果是一个serivce的话,我们通过端口号,就可以访问service。源码: github.com/limingios/d…

1

不要直接使用和管理Pods,为什么?

  • 当我们使用ReplicaSet 或者ReplicationController做水平扩展scale的时候,Pods可能被结束。

  • 当我们使用Deployment的时候,我们去更新Docker Image Version,旧的Pods会被结束,然后新的Pods创建,Ip地址发生了变化。

Service

  • kubectl expoese命令,会给我们的pod创建一个Service,供外部访问。

  • Service 主要有三种类型:

  1. ClsterIP

  2. NodePort

  3. LoadBalancer

  • 另外也可以使用DNS,但是需要DNS的add-on

Service的演示

  • 创建service。

get pod kubectl get pod -o wide kubectl expose pods nginx #查看到已经创建的service kubectl get


  • 访问service

ping 10.254.233.245 复制代码


  • 创建deployment

 cd deployk8s-master/  cd labs/  cd deployment/ more deployment_nginx.yml


apiVersion: apps/v1 kind: Deployment metadata:   name: nginx-deployment   labels:     app: nginx spec:   replicas: 3   selector:     matchLabels:       app: nginx   template:     metadata:       labels:         app: nginx     spec:       containers:       - name: nginx         image: nginx:1.12.2         ports:         - containerPort: 80


kubectl create -f deployment_nginx.yml kubectl get pods -o wide


我们进入node节点访问这些deployment




  • 创建deploy对应的service

kubectl get deployment expose deployment nginx-deployment kubectl get svc 复制代码

1
1

service内部的修改部署

kubectl edit deployment nginx-deployment 复制代码

1

PS:根据你修改的文件内容,它就自动更新了,但是ip没有发生改变,这就是service的强大。但是目前这种直接改deloyment文件的形式,不是推荐的因为他不是滚动更新,下次说下滚动更新。

1