创建资源的两种方式
用命令行的方式创建:
//创建Pod控制器,deployments
[root@master ~]# kubectl run web --image=nginx --replicas=5
//查看控制器情况
[root@master ~]# kubectl get deployments.
//查看资源详细信息
[root@master ~]# kubectl describe deployments. web
PS:查看某种资源对象,没有指名称空间,默认是在default名称空间,可以加上-n选项,查看指定名称空间
[root@master ~]# kubectl get pod -n=kube-system
注意:直接运行创建的Deployment资源对象,是经常使用的一个控制器类型,除了deployment,还有rc,rs等Pod控制器,Deployment是一个高级的Pod控制器
//创建Service资源类型
[root@master ~]# kubectl expose deployment web --name=web-svc --port=80 --type=NodePort
PS:如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePoet
映射端口范围:30000-32767
服务的扩容与缩容:
[root@master ~]# kubectl scale deployment web --replicas=8
//通过修改yuml文件进行扩容与缩容
[root@master ~]# kubectl edit deployments. web
服务的升级与回滚:
[root@master ~]# kubectl set image deployment web web=nginx:1.15
//通过修改配置文件进行升级
[root@master ~]# kubectl edit deployments. web
//回滚
[root@master ~]# kubectl rollout undo deployment web
配置清单(yml、yaml):
常见yaml文件写法,以及字段的作用:
五个一级字段:
apiVersion:
api版本信息
kind:
资源对象的类别
metadata:
元数据。名称字段必须写
spec:
用户期望的状态
status:
资源现在处于什么样的状态
Deployment
[root@master ~]# vim web.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: web
spec:
replicas: 2
template:
metadata:
labels:
app: web_server
spec:
containers:
- name: nginx
image: nginx
[root@master ~]# kubectl apply -f web.yaml
service
kind: Service
apiVersion: v1
metadata:
name: web-svc
spec:
selector: //标签选择器,和Deployment里的标签要一样
app: web_server
ports:
- protocol: TCP
port: 80
targetPort: 80
[root@master ~]# kubectl apply -f web-svc.yml
使用相同的标签和标签选择器,使两个资源对象相互关联
PS:(本质的意义:提供一个统一的接口)
创建的Service资源对象,默认的type为ClusterIP,意味着集群内任何节点都可以访问,它的作用是为后端真正提供服务的Pod提供一个统一的访问接口,如果想要外网访问服务,应该把type改为NodePort
kind: Service
apiVersion: v1
metadata:
name: web-svc
spec:
type: NodePort //指定类型,让外网来访问
selector:
app: web_server
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30033 //指定集群映射端口,范围是30000-32767