• k8s-redis集群属性简单解释


    练习的docker镜像都是从 kubeguide/xxx 权威指南中给的练习地址哈

    redis-RC

    [root@salt php-redis]# cat redis-master-controller.yaml 
    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: redis-master
      labels:
        name: redis-master
    spec:
      replicas: 1
      selector:
        name: redis-master
      template:
        metadata:
          labels:
            name: redis-master
        spec:
          containers:
          - name: master
            image: kubeguide/redis-master
            ports:
            - containerPort: 6379

    kind 值为 ReplicationController 表示是创建的是一个RC
    spec.selector是RC的pod选择器,监控和管理拥有这些标签(Lable)的pod实例,确保当前集群上始终有且仅有replicas个pod实例在运行

    replicas=1 只运行1个(名为redis-master的)pod实例

    当集群中运行的pod数量小于replicas时,RC会根据spec.template段定义的pod模板来生成一个新的pod实例,labels属性指定了该pod的标签,

    这里的labels必须匹配RC的spec.selector

    redis-service

    [root@salt php-redis]# cat redis-master-service.yaml 
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-master
      labels:
        name: redis-master
    spec:
      ports:
      - port: 6379
        targetPort: 6379
      selector:
        name: redis-master

    metadata.name是Service的服务名(ServiceName)

    spec.selector确定了选择哪些pod,这里定义为选择name=redis-master标签的pod

    port属性定义了service的虚拟端口号,targetPort属性指定后端pod内容器应用的端口号

    redis-slaveRC

    [root@salt php-redis]# cat redis-slave-controller.yaml 
    apiVersion: v1
    kind: ReplicationController
    metadata:
      name: redis-slave
      labels:
        name: redis-slave
    spec:
      replicas: 2
      selector:
        name: redis-slave
      template:
        metadata:
          labels:
            name: redis-slave
        spec:
          containers:
          - name: slave
            image: kubeguide/guestbook-redis-slave
            env:
            - name: GET_HOSTS_FROM
              value: env
            ports:
            - containerPort: 6379

    镜像中的启动脚本

    root@redis-slave-4d2zw:/data# cat /run.sh |grep -v "^#"|grep -v "^$"
    if [[ ${GET_HOSTS_FROM:-dns} == "env" ]]; then
      redis-server --slaveof ${REDIS_MASTER_SERVICE_HOST} 6379
    else
      redis-server --slaveof redis-master 6379
    fi

    redis-slave_service

    [root@salt php-redis]# cat redis-slave-service.yaml 
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-slave
      labels:
        name: redis-slave
    spec:
      ports:
      - port: 6379
      selector:
        name: redis-slave

    kubectl get 

    [root@salt php-redis]# kubectl get pod 
    NAME                 READY   STATUS    RESTARTS   AGE
    redis-master-d5sqn   1/1     Running   0          93m
    redis-slave-4d2zw    1/1     Running   0          11m
    redis-slave-tbrzt    1/1     Running   0          11m
    [root@salt php-redis]# kubectl get svc
    NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
    kubernetes     ClusterIP   10.68.0.1      <none>        443/TCP    17h
    redis-master   ClusterIP   10.68.153.64   <none>        6379/TCP   26m
    redis-slave    ClusterIP   10.68.228.91   <none>        6379/TCP   5m47s
  • 相关阅读:
    CompletionService--实现并行获取future.get()结果
    ConcurrentHashMap+FutureTask实现高效缓存耗时较长的业务结果获取
    Exchanger--线程执行过程中交换数据
    线程池的处理流程
    CyclicBarrier--栅栏,挡住指定数量线程后一次放行
    Semaphore--信号量,控制并发线程数,如流量控制
    CountDownLatch---多线程等待
    线程安全相关概念
    SimpleDateFormat非线程安全
    记java.lang.NoSuchMethodError错误解决过程
  • 原文地址:https://www.cnblogs.com/sqbk/p/14976123.html
Copyright © 2020-2023  润新知