K8S-网络模型、POD/RC/SVC YAML 语法官方文档

一、部署组合型的应用
 
1、使用配置文件启动replicas集合
 
k8s通过Replication Controller来创建和管理各个不同的重复容器集合(实际上是重复的pods)。
 
Replication Controller会确保pod的数量在运行的时候会一直保持在一个特殊的数字,即replicas的设置。
这个功能类似于Google GCE的实例组管理和AWS的弹性伸缩。
 

在快速开始中,通过kubectl run以下的YAML文件创建了一个rc运行着nginx:

apiVersion: v1
kind: ReplicationController
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

rc可以通过create命令像创建pod一样来创建:

$ kubectl create -f ./nginx-rc.yaml
replicationcontrollers/my-nginx

和直接创建pod不一样,rc将会替换因为任何原因而被删除或者停止运行的Pod,比如说pod依赖的节点挂了。所以我们推荐使用rc来创建和管理复杂应用,即使你的应用只要使用到一个pod,在配置文件中忽略replicas字段的设置即可。

2、查看Replication Controller的状态

$ kubectl get rc
CONTROLLER   CONTAINER(S)   IMAGE(S)   SELECTOR    REPLICAS
my-nginx     nginx          nginx      app=nginx   2
这个状态表示,你创建的rc将会确保你一直有两个nginx的副本。
 
也可以和直接创pPod一样查看创建的Pod状态信息:
$ kubectl get pods
NAME             READY     STATUS    RESTARTS   AGE
my-nginx-065jq   1/1       Running   0          51s
my-nginx-buaiq   1/1       Running   0          51s
3、删除Replication Controller
 
当你想停止你的应用,删除你的rc,可以使用:
$ kubectl delete rc my-nginx
replicationcontrollers/my-nginx
默认的,这将会删除所有被这个rc管理的pod,如果pod的数量很大,将会花一些时间来完成整个删除动作,如果你想使这些pod停止运行,请指定--cascade=false。
如果你在删除rc之前尝试删除pod,rc将会立即启动新的pod来替换被删除的pod,就像它承诺要做的一样。
4、Labels
 
k8s使用用户自定义的key-value键值对来区分和标识资源集合(就像rc、pod等资源),这种键值对称为label。
在上面的例子中,定义pod的template字段包含了一个简单定义的label,key的值为app,value的值为nginx。所有被创建的pod都会卸载这个label,可以通过-L参数来查看:
$ kubectl get rc my-nginx -L app
CONTROLLER   CONTAINER(S)   IMAGE(S)   SELECTOR    REPLICAS   APP
my-nginx     nginx          nginx      app=nginx   2          nginx
默认情况下,pod的label会复制到rc的label,同样地,k8s中的所有资源都支持携带label。
 
更重要的是,pod的label会被用来创建一个selector,用来匹配过滤携带这些label的pods。
























阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭