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
原文地址:https://www.cnblogs.com/sqbk/p/14976123.html