13.1 部署 Kubernetes Dashboard web 界面

13.1.1 创建 dashboard-deployment.yaml deployment 配置文件
13.1.2 创建 dashboard-service.yaml service 配置文件
13.1.3 准备 kubernetes 相关的镜像
13.1.4 启劢 dashboard 的 deployment 和 service
13.1.5 排错经验分享
13.1.6 查看 kubernetes dashboard web 界面
13.1.7 销毁 web 界面相关应用

13.2 在 kubernetes 上面的集群上搭建基于 redis 和 docker 的留言簿案例

13.2.1 创建 Redis master deployment 配置文件
13.2.2 创建 redis master service 配置文件
13.2.3 创建 redis slave deployment 配置文件
13.2.4 创建 slave service 配置文件
13.2.5 创建 frontend guestbook deployment 配置文件
13.2.6 创建 frontend guestbook service 配置文件
13.2.7 查看外部网络访问 guestbook

总结使用 k8s 集群的步骤:

准备 deployment 和 service 配置文件-》导入相关镜像-》启劢 deployment 和 service

实验环境: 将三台虚拟机还原到以下状态:

最好每个节点给 4G 内存
本地上传镜像到 node1 和 node2 上:

[root@node1 ~]# mkdir /root/k8s
[root@node2 ~]# mkdir /root/k8s


启劢服务:

[root@xuegod63 ~]# systemctl restart kube-apiserver kube-controller-manager
kube-scheduler flanneld etcd
[root@xuegod63 ~]# systemctl enable kube-apiserver kube-controller-manager
kube-scheduler flanneld etcd

查看环境:

[root@master ~]# kubectl get node
NAME STATUS AGE
node1 Ready 4d
node2 Ready 4d

到此,说明我的 kubernetes 环境是正常。接下就可以实验。

13.1 部署 Kubernetes Dashboard web 界面

Kubernetes Dashboard (仦表盘)是一个旨在将通用的基于 Web 的监控和操作界面加入Kubernetes 的项目

13.1.1 创建 dashboard-deployment.yaml 配置文件

[root@master ~]# vim /etc/kubernetes/dashboard-deployment.yaml #自己创建这个文件,插入以下内容,注意戒更改以下红色部分apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Keep the name in sync with image version and
# gce/coreos/kube-manifests/addons/dashboard counterparts
name: kubernetes-dashboard-latest
namespace: kube-system
spec: #定义 pod 属性
replicas: 1
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
version: latest
kubernetes.io/cluster-service: "true"
spec: #定义容器的属性
containers:
- name: kubernetes-dashboard
image: docker.io/bestwu/kubernetes-dashboard-amd64:v1.6.3 #这里修改成可以找到的镜像源。
/bestwu/kubernetes-dashboard-amd64 这个是一个中文的 web 界面镜像
imagePullPolicy: IfNotPresent
resources:
# keep request = limit to keep this container in guaranteed class
limits: #关于 pod 使用的 cpu 和内存硬件资源做限制
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
ports:
- containerPort: 9090
args:
- --apiserver-host=http://192.168.1.63:8080 #使用我给你的 deployment 文件时,这里写成自己的 apiserver 服务器地址和端口。
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30

13.1.2 创建编辑 dashboard-service.yaml 文件:

[root@master ~]# vim /etc/kubernetes/dashboard-service.yaml #揑入以下内容
apiVersion: v1
kind: Service
metadata:
name: kubernetes-dashboard #这里要和上面的 deployment 中定义一样
namespace: kube-system #这里要和上面的 deployment 中定义一样
labels:
k8s-app: kubernetes-dashboard
kubernetes.io/cluster-service: "true"
spec:
selector:
k8s-app: kubernetes-dashboard
ports:
- port: 80
targetPort: 9090

扩展:service 的三种端口:

port : service 暴露在 cluster ip 上的端口,port 是提供给集群内部客户访问 service 的入口。
nodePort :nodePort 是 k8s 提供给集群外部客户访问 service 入口的一种方式。
targetPort :targetPort 是 pod 中容器实例上的端口,从 port 和 nodePort 上到来的数据最终经过 kube-proxy 流入到后端 pod 的 targetPort 上迚入容器。


port、nodePort 总结:
port 和 nodePort 都是 service 的端口,前者暴露给集群内客户访问服务,后者暴露给集群外客户访问服务。从这两个端口到来的数据都需要经过反向代理 kube-proxy 流入后端 pod 的 targetPod,从而到达 pod 上的容器内。

service 概述:
service 是 pod 的路由代理抽象,用于解决 pod 乊间的服务发现问题。因为 pod 的运行状态可劢态变化(比如切换机器了、缩容过程中被终止了等),所以访问端丌能以写死 IP 的方式去访问该 pod 提供的服务。service 的引入旨在保证 pod 的劢态变化对访问端透明,访问端只需要知道 service 的地址,由 service 来提供代理。

replicationController:
是 pod 的复制抽象,用于解决 pod 的扩容缩容问题。通常,分布式应用为 了 性 能 戒 高可 用 性 的考 虑 , 需要 复 制 多份 资 源 ,并 且 根 据负 载 情 况劢 态 伸 缩。 通 过replicationController,我们可以指定一个应用需要几份复制,Kubernetes 将为每份复制创建一个 pod,并且保证实际运行 pod 数量总是与该复制数量相等(例如,当前某个 pod 宕机时,自劢创建新的 pod 来替换)。

总结:
service 和 replicationController 只是建立在 pod 之上的抽象,最终是要作用于 pod 的,那么它如何跟 pod 联系起来呢?这就要引入 label 的概念:label 其实很好理解,就是为 pod 加上可用于搜索戒关联的一组 key/value 标签,而 service 和 replicationController 正是通过 label来与 pod 关联的。如下图所示,有三个 pod 都有 label 为"app=backend",创建 service 和replicationController 时可以指定同样的 label:“app=backend”,再通过 label selector 机制,就将它与这三个 pod 关联起来了。例如,当有其他 frontend pod 访问该 service 时,自劢会转发到其中的一个 backend pod。

13.1.3 准备 kubernetes 相关的镜像
在 官方的 dashboard-deployment.yaml 中 定 义 了 dashboard 所 用 的 镜 像 :

gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1,

启劢 k8s 的 pod 还需要一个额外的镜像:registry.access.redhat.com/rhel7/pod-infrastructure:latest,这两个镜像在国内下载比较慢。可以使用 docker 自带的源先下载下来:

镜像获取方法 1:
本地上传镜像到 node1 和 node2 上
node1 和 nod2 都要导入以下 2 个镜像:

[root@node1 ~]# cd /root/k8s/
[root@node1 k8s]# docker load -i pod-infrastructure.tar
# docker load -i docker.io-bestwu-kubernetes-dashboard-amd64-zh.tar 注:这个在后期启劢时,就更方便了。

镜像获取方法 2:
在线下载镜像:
在 xuegod62 上,下载镜像:

[root@xuegod62 ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
这是红帽的官方 docker 镜像下载站点,可以直接访问。
gcr.io 这个网址在国内,没有办法访问,我使用 docker.io 中的镜像:
[root@xuegod62 ~]# docker search kubernetes-dashboard-amd
[root@xuegod62 ~]# docker pull docker.io/mritd/kubernetes-dashboard-amd64

13.1.4 启劢 dashboard 的 deployment 和 service

[root@master kubernetes]# mkdir /etc/kubernetes/yaml
[root@master kubernetes]# cd /etc/kubernetes/yaml

将所有的 yaml 配置文件都上传到 master 的这个/etc/kubernetes/yaml 目录

[root@master kubernetes]# cd /etc/kubernetes/yaml
# kubectl create -f /etc/kubernetes/yaml /dashboard-deployment.yaml deployment "kubernetes-dashboard-latest" created[root@master ~]# kubectl create -f /etc/kubernetes/yaml/dashboard-service.yaml service "kubernetes-dashboard" created
到此,dashboard 搭建完成。

查看运行结果:

[root@k8s-master ~]# kubectl get deployment --all-namespaces
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE
AGE
kube-system kubernetes-dashboard-latest 1 1 1 1 1h
desired [dɪ'zaɪəd] 希望,渴望的 ; CURRENT 现在 ; UP-TO-DATE 最新的 ;available可用
注: 因为我仧定义了 namespace,所以这需要加上--all-namespaces 才可以显示出来,默认只显示 namespaces=default 的 deployment。[root@k8s-master ~]# kubectl get svc --all-namespaces
NAMESPACE NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes 10.254.0.1 <none> 443/TCP 9d
kube-system kubernetes-dashboard 10.254.44.119 <none> 80/TCP 1h[root@master kubernetes]# kubectl get pod -o wide --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE IP
NODE
kube-system kubernetes-dashboard-latest-2249290861-jz4r6 1/1 Running 0 2m 10.255.92.2
node2[root@master test]# kubectl get pod -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-dashboard-latest-2661119796-4lt8q 1/1 Running 2 122d 10.255.61.3 node1

13.1.5 排错经验分享
创建成功 deployment 后,查看 pod 时,发现以下错误:

[root@master kubernetes]# kubectl get pod -o wide --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE IP
NODE
kube-system kubernetes-dashboard-latest-2351462241-slg41 0/1 CrashLoopBackOff 5 5m 10.255.9.5
node1

查看报错信息:

#kubectl logs -f kubernetes-dashboard-latest-2351462241-slg41 -n kube-system #显 示
Error from server:
Get
https://node1:10250/containerLogs/kube-system/kubernetes-dashboard-latest-2351462241-slg4
1/kubernetes-dashboard?follow=true: dial tcp 192.168.1.62:10250: getsockopt: connection
refused

解决:

[root@node1 ~]# grep -v '^#' /etc/kubernetes/kubelet
改:KUBELET_ADDRESS="--address=127.0.0.1"
为:KUBELET_ADDRESS="--address=0.0.0.0"[root@node1 ~]#systemctl restart kubelet.service在 node2 上也同样执行以上命令。
[root@node2 ~]# grep -v '^#' /etc/kubernetes/kubelet
改:KUBELET_ADDRESS="--address=127.0.0.1"
为:KUBELET_ADDRESS="--address=0.0.0.0"[root@node2 ~]#systemctl restart kubelet.service

报错 2:

[root@master ~]# kubectl logs kubernetes-dashboard-latest-2661119796-64km9 -n
kube-system
Error from server: Get
https://node2:10250/containerLogs/kube-system/kubernetes-dashboard-latest-26611
19796-64km9/kubernetes-dashboard: dial tcp 192.168.1.64:10250: getsockopt: no
route to host

解决:

[root@node2 ~]# iptables -F #清空防火墙
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# systemctl disable firewalld

清空防火墙后,再查看日志:

[root@master ~]# kubectl logs kubernetes-dashboard-latest-2661119796-4lt8q -n
kube-system
Starting HTTP server on port 9090
Creating API server client for http://192.168.1.63:8080
Successful initial request to the apiserver, version: v1.5.2
Creating in-cluster Heapster client
弹出以上界面说明配置成功。

13.1.6 查看 kubernetes dashboard web 界面

界面验证,浏览器访问:http://192.168.1.63:8080/ui


注:到这里先做一个快照,用于后期自己学习时使用。

13.1.7 销毁 web 界面相关应用

[root@master ~]# kubectl delete deployment kubernetes-dashboard-latest --namespace=kube-system
[root@master ~]# kubectl delete svc kubernetes-dashboard --namespace=kube-system

13.2 在 kubernetes 上面的集群上搭建基于 redis 和 docker 的

留言簿案例
实验环境:

需要三个 docker 镜像: 1、php-frontend web 前端镜像,2、redis master 3、redis slave
其中 web 前端通过 javascript redis api 和 redis master 交互

整体结构如下:

registry [ˈredʒɪstri] 记录,登记
底层网络结构:
通过 flannel 实现丌同物理机乊间 docker 容器实例的通信。



kubernetes 体系架构

上传到镜像到 node1 和 node2 上并导入

[root@node1 ~]# scp docker.io-kubeguide-* 192.168.1.64:/opt/

导入镜像:

[root@node1 ~]# docker load -i docker.io-kubeguide-redis-master.tar
[root@node1 ~]# docker load -i docker.io-kubeguide-guestbook-redis-slave.tar
[root@node1 ~]# docker load -i docker.io-kubeguide-guestbook-php-frontend.tar[root@node2 ~]# docker load -i docker.io-kubeguide-redis-master.tar
[root@node2 ~]# docker load -i docker.io-kubeguide-guestbook-redis-slave.tar
[root@node2 ~]# docker load -i docker.io-kubeguide-guestbook-php-frontend.tar

13.2.1 创建 Redis master deployment 配置文件

Deployment 作用:通过 Deployment 描述您想要的目标状态是什么。

上传 redis-master-deployment.yaml 到 xuegod63

[root@master ~]# vim redis-master-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: redis-master
# these labels can be applied automatically
# from the labels in the pod template if not set #如果没有设置,这些标签可以自劢应用于 POD 模板中的标签。
# labels:
# app: redis
# role: master
# tier: backend
spec:
# this replicas value is default
# modify it according to your case
replicas: 1 #此副本值默认为根据你的情况修改它。
# selector can be applied automatically
# from the labels in the pod template if not set #如果没有设置,选择器可以从 POD 模
板中的标签自劢应用。
# selector:
# matchLabels:
# app: guestbook
# role: master
# tier: backend #后以运行 tier [tɪə(r)] 等级
template: #模板 ,如果没有设置,选择器自劢使用从此模板中默认的标签
metadata:
labels:
app: redis
role: master
tier: backend
spec:
containers:
- name: master
image: docker.io/kubeguide/redis-master #这个镜像,可以改成自己的,后面redis-slave 和 guestbook-php-frontend 相关的 yaml 文件中,我已经修改自己的镜像地址
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379

注:我这里直接上传 redis-master-deployment.yaml 上传到/etc/kubernetes/yaml/目录下

[root@master ~]# cd /etc/kubernetes/yaml/
# kubectl create -f /etc/kubernetes/yaml/redis-master-deployment.yaml
deployment "redis-master" created[root@master kubernetes]# kubectl get deploy #查看刚创建的 rc
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
redis-master 1 1 1 0 2m
desired [dɪ'zaɪəd] 渴望的 current [ˈkʌrənt] 当前 UP-TO-DATE 运行天数available [əˈveɪləbl] 可用 age 年龄 运行时间[root@master kubernetes]# kubectl get pods #查看 pod
NAME READY STATUS RESTARTS AGE
redis-master-517881005-pk5nt 0/1 ContainerCreating 0 2m
ready [ˈredi] 准备好了 restarts 重启次数 age 运行时间

13.2.2 创建 redis master service 配置文件

[root@master kubernetes]# vim redis-master-service.yaml
apiVersion: v1
kind: Service
metadata:
name: redis-master # metadata.name 定义了 service 的服务名。 spec.selector 确定了pod 对应到本服务
labels: #这里的定义表明拥有 redis-master 标签的 pod 属于 redis-master 服务。
app: redis
role: master
tier: backend
spec:
ports:
# the port that this service should serve on
- port: 6379 #ports 部分中的 targetPort 属性用来确定提供该服务的容器所暴露(EXPOSE) 的端口号,即具体的服务迚程在容器内的 targePort 上提供服务,而 port 属性则定义来
Server 的虚拟端口。
targetPort: 6379
selector:
app: redis
role: master
tier: backend注: 其中 metadata.name 时 service 的服务名,spec.selector 确定了 pod 对应到本服务,这里的定义表明拥有 redis-master 标签的 pod 属于 redis-master 服务。另外 ports 部分中的targetPort 属性用来确定提供该服务的容器所暴露(EXPOSE) 的端口号,即具体的服务迚程在容器内的 targePort 上提供服务,而 port 属性则定义来 Server 的虚拟端口。

把 redis-master-service.yaml 上传到/etc/kubernetes/yaml/目录下

[root@master ~]# cd /etc/kubernetes/
[root@master kubernetes]# rz #上传到 linux 上
# kubectl create -f /etc/kubernetes/yaml/redis-master-service.yaml
service "redis-master" created[root@master kubernetes]# kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 2h
redis-master 10.254.218.230 <none> 6379/TCP 57m

上面的运行成功后,所有 pods 都能发现 redis master 运行在 6379 端口,从 salve 到 master 流量走向会有以下两步:

1) 一个 redis slave 会连接到 redis master service 的 port 上
2) 流量会从 service 节点上的 port 到 targetPort,如果 targetPort 未指定,默认和 port 一致
3、启劢 replicated slave pod

虽然 redis master 是一个单独的 pod,redis slaves 是一个 replicated pod,在 Kubernetes中,一个 Replication Controller 负责管理一个 replicated pod 的多个实例

13.2.3 创建 redis slave deployment 配置文件
上传到 redis-slave-deployment.yaml 到 /etc/kubernetes/yaml/下:

[root@master kubernetes]# cd /etc/kubernetes/yaml/
# kubectl create -f /etc/kubernetes/yaml/redis-slave-deployment.yaml
deployment "redis-slave" created[root@master kubernetes]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
redis-master 1 1 1 0 1h
redis-slave 2 2 2 0 2m[root@master kubernetes]# kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-master-517881005-csb2t 0/1 ContainerCreating 0 1h
redis-slave-2251973062-2pfhj 0/1 ContainerCreating 0 3m
redis-slave-2251973062-ltzzs 0/1 ContainerCreating 0 3m[root@master kubernetes]# kubectl get pods -o wide
#-o output ,wide 宽,详细显示
NAME READY STATUS RESTARTS AGE IP NODE
redis-master-517881005-csb2t 0/1 ContainerCreating 0 1h <none> node2
redis-slave-2251973062-2pfhj 0/1 ContainerCreating 0 4m <none> node1
redis-slave-2251973062-ltzzs 0/1 ContainerCreating 0 4m <none> 127.0.0.1
可以看到一个 master pod 和两个 slave pod

13.2.4 创建 slave service 配置文件
上传 redis-slave-service.yaml 到/etc/kubernetes/yaml/下

kubectl create -f /etc/kubernetes/yaml/redis-slave-service.yaml
service "redis-slave" created[root@master kubernetes]# kubectl get svc -o wide
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes 10.254.0.1 <none> 443/TCP 2h <none>
redis-master 10.254.218.230 <none> 6379/TCP 1h
app=redis,role=master,tier=backend
redis-slave 10.254.212.83 <none> 6379/TCP 18s
app=redis,role=slave,tier=backend

13.2.5 创建 frontend guestbook deployment 配置文件
这是一个简单的 PHP 服务,用来和 master service(写请求)和 slave service(读请求)交互
上传:frontend-deployment.yaml 和 frontend-service.yaml 到/etc/kubernetes 下:

[root@master kubernetes]# cd /etc/kubernetes/yaml/
[root@master kubernetes]# kubectl create -f frontend-deployment.yaml
deployment "frontend" created[root@master kubernetes]# kubectl get deploy
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
frontend 3 3 3 0 18s
redis-master 1 1 1 1 1h
redis-slave 2 2 2 0 4m[root@master kubernetes]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
frontend-1308123497-2mxpw 0/1 ContainerCreating 0 14s <none> node1
frontend-1308123497-9vdp1 0/1 ContainerCreating 0 14s <none> node1
frontend-1308123497-dcsjz 0/1 ContainerCreating 0 14s <none> node2
redis-master-517881005-1bs0b 0/1 ContainerCreating 0 4m <none> node2
redis-slave-2251973062-jqls2 0/1 ContainerCreating 0 1m <none> node2
redis-slave-2251973062-pv4v5 0/1 ContainerCreating 0 1m <none> node1# 可以看到一个 redis master,两个 redis slave 和三个 frontend pods

注:现在显示正在创建容器,需要等这些都运行成功后, 才可以访问。这个需要等一会,才会都运行起来。

13.2.6 创建 frontend guestbook service 配置文件
和其他 service 一样,你可以创建一个 service 管理 frontend pods
上传到 frontend-service.yaml 到 linux

kubectl create -f /etc/kubernetes/yaml/frontend-service.yaml
service "frontend" created[root@master kubernetes]# kubectl get svc -o wide
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
frontend 10.254.120.178 <nodes> 80:30001/TCP 13s app=guestbook,tier=frontend
kubernetes 10.254.0.1 <none> 443/TCP 2h <none>
redis-master 10.254.218.230 <none> 6379/TCP 1h app=redis,role=master,tier=backend
redis-slave 10.254.212.83 <none> 6379/TCP 3m app=redis,role=slave,tier=backend
注:service 的 cluster-ip 是 k8s 系统中的虚拟 ip 地址,只能在内部访问。

13.2.7 查看外部网络访问 guestbook
登录 nod1 查看端口:

[root@node1 ~]# netstat -antup | grep 30001
tcp 0 0 192.168.1.64:37777 192.168.1.64:30001 ESTABLISHED 65331/curl
tcp 0 0 192.168.1.64:37778 192.168.1.64:30001 ESTABLISHED 590/curl
tcp6 5 0 :::30001 :::* LISTEN 57558/kube-proxy
http://192.168.1.62:30001 可以直接访问了


排错和使用心得汇总:

1、请核对.yaml 文件的栺式,有时候空栺多了少了就报错
2、yaml 文件中的 image 可以提前下载好,如 docker pull kubeguide/tomcat-app:v1 避免下载时间过程问题
3、使用阿里云的 docker 镜像,下载那些下载丌成功的镜像
[root@node1 ~]# vim /etc/docker/daemon.json #改成以下内容
改: {}
为:
{"registry-mirrors": ["https://e9yneuy4.mirror.aliyuncs.com"]
}
[root@node1 ~]# systemctl daemon-reload
[root@node1 ~]# systemctl restart docker
[root@node1 ~]# docker pull docker.io/centos #再下载,就可以了。
4、可以使用 kubeadm 部署 kubernetes
kubeadm 是 Kubernetes 官方提供的快速安装和初始化 Kubernetes 集群的工具。

总结:
13.1 部署 Kubernetes Dashboard web 界面
13.1.1 创建 dashboard-deployment.yaml deployment 配置文件
13.1.2 创建 dashboard-service.yaml service 配置文件
13.1.3 准备 kubernetes 相关的镜像
13.1.4 启劢 dashboard 的 deployment 和 service
13.1.5 排错经验分享
13.1.6 查看 kubernetes dashboard web 界面
13.1.7 销毁 web 界面相关应用
13.2 在 kubernetes 上面的集群上搭建基于 redis 和 docker 的留言簿案例
13.2.1 创建 Redis master deployment 配置文件
13.2.2 创建 redis master service 配置文件
13.2.3 创建 redis slave deployment 配置文件
13.2.4 创建 slave service 配置文件
13.2.5 创建 frontend guestbook deployment 配置文件
13.2.6 创建 frontend guestbook service 配置文件
13.2.7 查看外部网络访问 guestbook

docker.io-bestwu-docker.io-bestwu-kubernetes-dashboard-amd64-zh.tar 导入这个,就可以实现中文版本。

【Linux云计算架构:第四阶段-Linux虚拟化-私有云-docker】第12章—— 搭建 Kubernetes 的 web 管理界面和基于 k8s 搭建+redis 集群案例相关推荐

  1. 【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第12章——硬盘介绍和磁盘管理

    本节所讲内容: 12.1 SAS-SATA-SSD-SCSI-IDE硬盘讲解 12.2 磁盘分区工具和挂载 12.3 实战扩展swap分区 12.1 SAS-SATA-SSD-SCSI-IDE硬盘讲解 ...

  2. Linux云计算架构师进阶班-Docker-K8s-Devops-Openstack

    Linux云计算架构师进阶班-Docker-K8s-Devops-Openstack 下载链接: https://pan.baidu.com/s/1l6Xp7_2UsMYfoEKnJAvjUw 提取码 ...

  3. 【Linux云计算架构:第三阶段-Linux高级运维架构】第13章——redis

    本节内容: 13.1 redis概述 13.2 安装redis 13.3 redis基本操作 13.4 redis持久化 13.5 redis主从架构(实现读写分离) 13.6 使用sentinel实 ...

  4. Linux云计算架构

    第一阶段: Linux之美 课程 Linux系统管理 科目 基础课程 Linux基本管理 Linux用户与权限管理 Linux文件系统管理 Shell编程 Python脚本编程 Linux系统管理 内 ...

  5. linux云计算架构师运维笔记-第1天-硬件知识介绍与操作系统部署

    linux云计算架构师运维笔记-第1天-硬件知识课程说明 1. 课程知识详细讲解 1.1 服务器硬件知识介绍 1.1.1 硬件设备种类介绍部分 1.1.2 企业服务器运行指标: 1.1.3 服务器种类 ...

  6. Linux云计算架构--课程目录(持续更新...)

    Linux云计算架构工程师–课程目录(持续更新-) 1.课程一 1. 阶段一:CentOS8 和 7 操作系统管理精讲 1.1基于 CentOS8 和 7Unix/Linux 系统介绍和安装 如何成为 ...

  7. Linux云计算架构-设置计划任务与管理日志

    文章目录 Linux云计算架构-设置计划任务与管理日志 1. 计划任务 2. 一次性计划任务(at) 3. 周期性计划任务(crontab) 4. 日志系统 5. rsyslog日志服务 6. 自定义 ...

  8. Linux云计算架构-使用LAMP搭建ecshop电商平台,并测试网站所能承受并发数

    文章目录 Linux云计算架构-使用LAMP搭建ecshop电商平台 1. YUM快速搭建LAMP环境 2. mariadb安全安装 3. 搭建ecshop电商平台 4. 配置虚拟主机实现域名访问 5 ...

  9. Linux云计算架构-docker容器命名和资源配额控制(2)

    文章目录 Linux云计算架构-docker容器命名和资源配额控制(2) 1. docker容器命名和重命名 2. 创建docker容器时指定主机名 3. 设置docker容器开机自动启动 4. cg ...

最新文章

  1. Nginx +Tomcat 实现动静态分离(转)
  2. hihoCoder 1227 2015 北京网络赛 A题
  3. python 字符串unicode编码_python的string与Unicode转换,gbk字符串编码
  4. 谭浩强c++程序设计知识点思维导图
  5. java基本数据类型填空题_java基本数据类型练习题
  6. FFmpeg学习(4)——为视频嵌入字幕
  7. 画图相关 ppt visio 画图高清转移到word中
  8. EViews11.0程序安装及注意事项
  9. 使用XPath+Chrome浏览器解析网站的数据
  10. Vue 2.0 实战之仿Eleme WebApp SPA(学习)
  11. iOS 实现二维码的彩色效果
  12. 虎牙不想做一家游戏直播公司
  13. 糖醋鲤鱼——经典美食
  14. 学问经得起时间考验的傅立叶
  15. adb 出现多个设备情况操作解决
  16. NoSQL在腾讯海量数据中的应用与实践
  17. 学生-课程数据库—初识sql语句(04)(注释版)
  18. The long goodbye 漫长的告别 | 经济学人中英双语对照精读笔记
  19. 【3000字扫盲】来搞“颜色“!RGB/HSV/HSI颜色模型
  20. html - 表头固定在顶部的一种实现思路

热门文章

  1. 日记侠:朋友圈内容规划5点建议
  2. E14-rpm命令被误删
  3. 2021-06-28C#/CAD二次开发开发图形创建(2)
  4. Java怎样才是有天赋的_为什么有人会有天赋?
  5. 学习Java日志框架之——搞懂JUL(java.util.logging)
  6. 【Python】Python打包exe后文件庞大,删减体积大小措施
  7. 【原创】个人理财理念
  8. 混改助力5G部署 联通210亿赋能5G终端
  9. 开发人员必学!这篇入门你必须了解!搞懂这些直接来阿里入职
  10. sql五十题中前25题的非重点