[[email protected] guestbook]# cat redis-master-deployment.yaml apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: redis-master labels: app: redis spec: selector: matchLabels: app: redis role: master tier: backend replicas: 1 template: metadata: labels: app: redis role: master tier: backend spec: containers: - name: master image: 192.168.9.14/public/redis # or just image: redis resources: requests: cpu: 100m memory: 100Mi ports: - containerPort: 6379 [[email protected] guestbook]# kubectl apply -f redis-master-deployment.yaml deployment.apps/redis-master created
查看
[[email protected] guestbook]# kubectl get pods NAME READY STATUS RESTARTS AGE kuard-5cd647675b-65cwg 1/1 Running 0 2d1h kuard-5cd647675b-65r9c 1/1 Running 0 2d1h kuard-5cd647675b-f9r9f 1/1 Running 0 2d1h nginx 1/1 Running 0 47h nginx-78b75497b7-rpt8t 1/1 Running 0 24h redis-master-79c5f44c84-5wq2n 1/1 Running 0 39s
运行以下命令查看 Redis 主节点 Pod 中的日志
[[email protected] guestbook]# kubectl logs -f redis-master-79c5f44c84-5wq2n 1:C 22 Jan 2020 08:20:24.108 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 1:C 22 Jan 2020 08:20:24.108 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1, just started 1:C 22 Jan 2020 08:20:24.108 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf 1:M 22 Jan 2020 08:20:24.110 * Running mode=standalone, port=6379. 1:M 22 Jan 2020 08:20:24.110 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 1:M 22 Jan 2020 08:20:24.110 # Server initialized 1:M 22 Jan 2020 08:20:24.110 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled‘ as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 1:M 22 Jan 2020 08:20:24.111 * Ready to accept connections
创建 Redis 主节点的服务
[[email protected] guestbook]# ls redis-master-deployment.yaml redis-master-service.yaml [[email protected] guestbook]# cat redis-master-service.yaml apiVersion: v1 kind: Service metadata: name: redis-master labels: app: redis role: master tier: backend spec: ports: - port: 6379 targetPort: 6379 selector: app: redis role: master tier: backend
创建 Redis 主节点的服务
[[email protected] guestbook]# kubectl apply -f redis-master-service.yaml service/redis-master created [[email protected] guestbook]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kuard ClusterIP 10.110.133.234 <none> 80/TCP 2d2h kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d2h redis-master ClusterIP 10.102.97.125 <none> 6379/TCP 9s
启动 Redis 从节点
[[email protected] guestbook]# ls redis-master-deployment.yaml redis-master-service.yaml redis-slave-deployment.yaml [[email protected] guestbook]# cat redis-slave-deployment.yaml apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: redis-slave labels: app: redis spec: selector: matchLabels: app: redis role: slave tier: backend replicas: 2 template: metadata: labels: app: redis role: slave tier: backend spec: containers: - name: slave image: registry.cn-hangzhou.aliyuncs.com/lina/gb-redisslave:v1 resources: requests: cpu: 100m memory: 100Mi env: - name: GET_HOSTS_FROM value: dns # Using `GET_HOSTS_FROM=dns` requires your cluster to # provide a dns service. As of Kubernetes 1.3, DNS is a built-in # service launched automatically. However, if the cluster you are using # does not have a built-in DNS service, you can instead # access an environment variable to find the master # service‘s host. To do so, comment out the ‘value: dns‘ line above, and # uncomment the line below: # value: env ports: - containerPort: 6379
[[email protected] guestbook]# kubectl apply -f redis-slave-deployment.yaml deployment.apps/redis-slave created [[email protected] guestbook]# kubectl get pods NAME READY STATUS RESTARTS AGE kuard-5cd647675b-65cwg 1/1 Running 0 2d2h kuard-5cd647675b-65r9c 1/1 Running 0 2d2h kuard-5cd647675b-f9r9f 1/1 Running 0 2d2h nginx 1/1 Running 0 47h nginx-78b75497b7-rpt8t 1/1 Running 0 24h redis-master-79c5f44c84-5wq2n 1/1 Running 0 20m redis-slave-784476f99-hngj8 0/1 ErrImagePull 0 6s redis-slave-784476f99-pvl7p 0/1 ErrImagePull 0 6s
创建 Redis 从节点的 Service
[[email protected] guestbook]# ls redis-master-deployment.yaml redis-master-service.yaml redis-slave-deployment.yaml redis-slave-service.yaml [[email protected] guestbook]# cat redis-slave-service.yaml apiVersion: v1 kind: Service metadata: name: redis-slave labels: app: redis role: slave tier: backend spec: ports: - port: 6379 selector: app: redis role: slave tier: backend
[[email protected] guestbook]# kubectl apply -f redis-slave-service.yaml service/redis-slave created [[email protected] guestbook]# kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kuard ClusterIP 10.110.133.234 <none> 80/TCP 2d2h kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d2h redis-master ClusterIP 10.102.97.125 <none> 6379/TCP 22m redis-slave ClusterIP 10.110.55.92 <none> 6379/TCP 5s [[email protected] guestbook]# kubectl get services -o wide NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kuard ClusterIP 10.110.133.234 <none> 80/TCP 2d2h app=kuard kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d2h <none> redis-master ClusterIP 10.102.97.125 <none> 6379/TCP 22m app=redis,role=master,tier=backend redis-slave ClusterIP 10.110.55.92 <none> 6379/TCP 11s app=redis,role=slave,tier=backend
设置并公开留言板前端
[[email protected] guestbook]# cat frontend-deployment.yaml apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: frontend labels: app: guestbook spec: selector: matchLabels: app: guestbook tier: frontend replicas: 3 template: metadata: labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: registry.cn-hangzhou.aliyuncs.com/paul-xiong/gb-frontend:v4 resources: requests: cpu: 100m memory: 100Mi env: - name: GET_HOSTS_FROM value: dns # Using `GET_HOSTS_FROM=dns` requires your cluster to # provide a dns service. As of Kubernetes 1.3, DNS is a built-in # service launched automatically. However, if the cluster you are using # does not have a built-in DNS service, you can instead # access an environment variable to find the master # service‘s host. To do so, comment out the ‘value: dns‘ line above, and # uncomment the line below: # value: env ports: - containerPort: 80
查看运行
[[email protected] guestbook]# kubectl apply -f frontend-deployment.yaml
deployment.apps/frontend created
[[email protected] guestbook]# kubectl get pods -l app=guestbook -l tier=frontend NAME READY STATUS RESTARTS AGE frontend-696c6dcdb4-4jdkd 0/1 ContainerCreating 0 34s frontend-696c6dcdb4-glzgb 0/1 ContainerCreating 0 34s frontend-696c6dcdb4-gsn7x 0/1 ContainerCreating 0 34s
创建前端服务
[[email protected] guestbook]# cat frontend-service.yaml
apiVersion: v1
kind: Service
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# comment or delete the following line if you want to use a LoadBalancer
type: NodePort
# if your cluster supports it, uncomment the following to automatically create
# an external load-balanced IP for the frontend service.
# type: LoadBalancer
ports:
- port: 80
selector:
app: guestbook
tier: frontend
[[email protected] guestbook]# vi frontend-service.yaml [[email protected] guestbook]# vi frontend-service.yaml [[email protected] guestbook]# kubectl apply -f frontend-service.yaml service/frontend created [[email protected] guestbook]# kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend NodePort 10.111.192.148 <none> 80:30351/TCP 6s kuard ClusterIP 10.110.133.234 <none> 80/TCP 2d2h kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d2h redis-master ClusterIP 10.102.97.125 <none> 6379/TCP 56m redis-slave ClusterIP 10.110.55.92 <none> 6379/TCP 34m
通过 NodePort
查看前端服务
[[email protected] guestbook]# kubectl get service frontend NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend NodePort 10.111.192.148 <none> 80:30351/TCP 99s
扩展 Web 前端
[[email protected] guestbook]# kubectl scale deployment frontend --replicas=5 deployment.apps/frontend scaled [[email protected] guestbook]# kubectl get pods NAME READY STATUS RESTARTS AGE frontend-696c6dcdb4-8lpls 1/1 Running 0 2m15s frontend-696c6dcdb4-djf5w 1/1 Running 0 6s frontend-696c6dcdb4-gnn2r 1/1 Running 0 2m15s frontend-696c6dcdb4-rmzw7 1/1 Running 0 2m15s frontend-696c6dcdb4-s7gmb 1/1 Running 0 6s
[[email protected] guestbook]# kubectl scale deployment frontend --replicas=2 deployment.apps/frontend scaled [[email protected] guestbook]# kubectl get pods NAME READY STATUS RESTARTS AGE frontend-696c6dcdb4-gnn2r 1/1 Running 0 2m54s frontend-696c6dcdb4-rmzw7 1/1 Running 0 2m54s
清理:
kubectl delete deployment -l app=redis kubectl delete service -l app=redis kubectl delete deployment -l app=guestbook kubectl delete service -l app=guestbook
原文地址:https://www.cnblogs.com/jackluo/p/12229207.html
时间: 2024-10-29 17:28:42