Deployment介绍
Deployment是kubernetes 1.2引入的概念,用来解决Pod的编排问题。Deployment可以理解为RC的升级版(RC+Reolicat Set)。特点在于可以随时知道Pod的部署进度,即对Pod的创建、调度、绑定节点、启动容器完整过程的进度展示。
使用场景
创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程。
检查Deployment的状态来确认部署动作是否完成(Pod副本的数量是否达到预期值)。
更新Deployment以创建新的Pod(例如镜像升级的场景)。
如果当前Deployment不稳定,回退到上一个Deployment版本。
挂起或恢复一个Deployment。
Service介绍
Service定义了一个服务的访问入口地址,前端应用通过这个入口地址访问其背后的一组由Pod副本组成的集群实例,Service与其后端的Pod副本集群之间是通过Label Selector来实现“无缝对接”。RC保证Service的Pod副本实例数目保持预期水平。
外部系统访问Service的问题
IP类型 | 说明 |
---|---|
Node IP | Node节点的IP地址 |
Pod IP | Pod的IP地址 |
Cluster IP | Service的IP地址 |
环境介绍
主机 | IP地址 | 服务 |
---|---|---|
master | 192.168.1.21 | k8s |
node01 | 192.168.1.22 | k8s |
node02 | 192.168.1.23 | k8s |
一,Delpoyment和service的简单使用
1.练习写一个yaml文件,要求使用自己的私有镜像,要求副本数量为三个。
[root@master ~]# vim xgp.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: xgp-web
spec:
replicas: 3
template:
metadata:
labels:
app: xgp-server
spec:
containers:
- name: web
image: 192.168.1.21:5000/web:v1
(1)执行一下
[root@master ~]# kubectl apply -f xgp.yaml --recore
(2)查看一下
[root@master ~]# kubectl get pod
(3)访问一下
[root@master ~]# curl 10.244.2.16
(4)更新一下yaml文件,副本加一
[root@master ~]# vim xgp.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: xgp-web
spec:
replicas: 4
template:
metadata:
labels:
app: xgp-server
spec:
containers:
- name: web
image: 192.168.1.21:5000/web:v1
<1>执行一下
[root@master ~]# kubectl apply -f xgp.yaml --recore
<2>查看一下
[root@master ~]# kubectl get pod
副本数量加一,如果yaml文件的副本为0,则副本数量还是之前的状态,并不会更新。
2.练习写一个service文件
[root@master ~]# vim xgp-svc.yaml
kind: Service
apiVersion: v1
metadata:
name: xgp-svc
spec:
selector:
app: xgp-server
ports:
- protocol: TCP
port: 80
targetPort: 80
(1)执行一下
[root@master ~]# kubectl apply -f xgp-svc.yaml
(2)查看一下
[root@master ~]# kubectl get svc
(3)访问一下
[root@master ~]# curl 10.107.119.49
3.修改yaml文件
[root@master ~<