day3kubenetes 基础概念


RC  
我们可以通过修改RC的副本数,来实现Pod的动态缩放(Scaling)
kubectl scale rc redis-slaves  --replicas=3
需要 注意的是,删除RC并不会影响该RC已经创建好的Pod,为了删除所有的Pod,可以设置replicas的值为0,然后更新该RC
另外kubectl提供了stop和delete命令来一次性的删除RC和RC控制的全部Pod
1.4.6Deployment
是Kubenetes1.2引入的新概念,为了更好地解决POD的编排问题,为此Deployment使用了Replica set来实现目的
我们可以把它看为是RC的一次升级。
优点:可以获取当前pod“部署的进度”
使用场景:
创建一个Deployment对象生成对应的Relica Set并完成Pod副本的创建过程
检查部署状态是否完成
更新Deployment以创建新的pod
如果当前状态不稳定,可以先回滚到早期的Deploymen版本
@挂起或者恢复一个Deployment
Deployment与REPLICA的定义很相似,除了api声明与kind类型等有所区别:
eg:
首先创建一个为tomcat-deployment.yaml的deployment描述文件
apiversion: extensions/v1betal
kind: Deployment
metadata:
        name: frontend
spec:
    replicas: 1
    selector:
        matchLabels:
            tier: frontend
        matchExpressions:
            - { key: tier, operator: In, Value: [frontend]}
    template:
        metadata:
            labels:
                app:  app-demo
                tier: frontend
            spec:
                containers:
                - name: tomcat-demo
                    image: tomcat
                    imagePullPolicy: IfnotPresent
                    ports:
                    - containerPort: 8080
运行下述描述文件创建Deployment
#kubectl create -f tomcat-deployment.yaml
............
获取Deploymen的信息
kubectl get deployments
NAMEM DESURED CURRENT UP-TO-DATE AVAILABLE AGE
..........
查看对应的REPLICA SET 
kubectl get rs
......
--------------------------------
HPA(POD横向自动扩容)
简单创建一个HPA资源对象
kubectl autoscale deployment php-apache  --cpu-percent=90  --min=1 --max=10
-----------------------service--------------------
客户端一般都是通过一个负载均衡器为这组Pod开启一个对外的服务端口。。。
手动创建一个服务
tomcat-service.yaml
apiVersion: v1
kind: Service
metadata:
    name: tomcat-service
spec:
    ports:
    - port: 8080
    selector:
    tier: fronted
    
这个服务拥有tier=frontend的label的所有Pod实例都属于它
#kubectl create  -f  tomcat-server.yaml
........
之前创建 Deployment刚好pod拥有这个标签,
kubectl get endpoints
........
获取服务的更多信息
kubectl    get svc tomcat-service -o yaml
............................
服务发现机制(dns发现机制 服务名ji域名)
外部系统访问service的问题

Node ip   :node 节点的ip
pod IP :pod 的ip(docker0网桥生成的)pod间通信就是通过虚拟的二层网络
cluster ip :service的ip地址(伪造的)
    仅作用于service的cluster ip (来源于cluster ip地址池)
    无法被ping (因没有实体的网络对象)
    cluster ip+servcie port组成一个具体的通信端口,单独的不具备通信功能
内部三者之间采用一种特殊的路由规则:与一般的ip路由不同
实际中可能要用cluster ip so  在serviced 定义中做如下的拓展 
apiVersion: v1
kind: Service
metadata:
        name: tomcat-service
    spec:
     type: NodePort  ***
     ports:
        - port: 8080
            nodePort: 31002   #访问接口
        selector:
            tier: frontend
在外部系统只要用任意一个Node的ip+nodeport端口号即可访问此服务
在任意node上运行netstat命令就可以看到有NodePort的端口被监听
netstat -tlp | grep  31002
.......
负载均衡。。问题
type=NodePort  改为   type=LoadBalancer
---------------------------------------------------
1.4.9
Volume
与docker相似但不全相同
kubenetes中的volume与pod的生命周期相同
当容器终止时volume中的数据也不会丢失
最后 kubenetes支持多种类型的volume,GlusterFS\Ceph
-------------------------------------------------
.....
spec:     
    volumes:
    - name: datavol
    emptyDir()
    .....
            VolumeMounts:
                -    mountPath: /mydata-data
                name: dadavol
                ..
----------------------volume文件集中管理ConfigMap(资源对象)
-----------------------------------------------------------------------
1.emptyDir

是在pode分配到node时创建的(default null) USEAGE:
@临时空间
@长时间任务的中间过程CheckPoint的临时保存目录
@多容器共享目录
2.hostPath  pod挂载在宿主机上的文件或者目录
@永久保存日志等文件
@可通过定义hostPath为宿主机/var/lib/docker目录  使容器内部可以直接访问Docker的文件系统
@如果使用了资源配额管理,无法将hostPath在宿主机上使用资源纳入管理
3.gcePersistentDisk(这种类型的表示使用了PD)
PD上的数据会永久保存,当pod删除时PD只是被卸载了
必须先创建一个永久磁盘才能使用gcePersistentDisk
限制条件:
node需是GCE虚拟机
虚拟机需要与PD存在相同的GCE项目中和ZONE中
gcloud命令创建一个PD
gcloud compute disk create --size=500GB     --zone=us-centrall -a mydata-data-disk
eg:
volumes:
- name: test-volume
gcePersistentDisk:
    pdName: mydata-data-disk
    fsType: ext4
4. awsElasticBlockSTORE
......
5. NFS(网络文件系统)
需部署一个 nfsserver
eg:
volumes:
- name: nfsserver
server: nfs-serever.localhost
path: "/"
-------------------------------------------Persistent Volume
pv只是网络存储,不属于任何的node,但可以访问
pv定义于pod之外
pv目前的类型:GCE  nfs RBD ISCSCI gfs
---------------------------------namespace-----------------------------
stop here


 

猜你喜欢

转载自blog.csdn.net/weixin_41752144/article/details/81207665