本文共 7931 字,大约阅读时间需要 26 分钟。
紧接上篇
注意: 时间不同步 Grafana 查看里面不会有数据
[root@node1 ~]# git clone https://github.com/kubernetes/heapster.git[root@node1 ~]# cd heapster/deploy/kube-config/influxdb/[root@node1 ~]# lsgrafana.yaml heapster.yaml influxdb.yaml
我们需要创建三个容器,修改镜像地址为阿里云镜像地址,否则无法 pull 下来镜像
1.Influxdb
[root@node1 influxdb]# vi influxdb.yaml#镜像地址修改为深圳镜像地址(如果下载不下来,分享完会附带资料,每个节点都要导入镜像)image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/heapster-influxdb-amd64:v1.3.3[root@node1 influxdb]# kubectl create -f influxdb.yaml kubectl get pods --namespace=kube-system -o wide
2.Grafana
[root@node1 influxdb]# vi grafana.yaml#镜像地址修改为深圳镜像地址(如果下载不下来,分享完会附带资料,每个节点都要导入镜像)image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/heapster-grafana-amd64:v4.4.3[root@node1 influxdb]# kubectl create -f grafana.yaml
3.Heapster
[root@node1 influxdb]# vi heapster.yaml #镜像地址修改为深圳镜像地址(如果下载不下来,本文档会附带,每个节点都要导入镜像)image: registry.cn-hangzhou.aliyuncs.com/outman_google_containers/heapster-amd64:v1.4.0- --source=kubernetes:http://192.168.31.221:8080?inClusterConfig=false&useServiceAccount=true&auth=
[root@node1 influxdb]# kubectl create -f heapster.yaml
4.查看三个容器的状态
5.访问 dashboard 进行测试
1.先安装 gluster 源
yum install centos-release-gluster -y
2.安装 glusterfs 组件
yum install -y glusterfs glusterfs-server glusterfs-fuse glust
3.创建 glusterfs 目录
mkdir /opt/glusterd
4.修改 glusterd 目录
sed -i 's/var\/lib/opt/g' /etc/glusterfs/glusterd.vol
5.启动 glusterfs
systemctl start glusterd.service && systemctl enable glusterd.service
6.配置 glusterfs
[root@node1 k8s]# vi /etc/hosts #每个节点都要配hosts
iptables -I INPUT -p tcp --dport 24007 -j ACCEPT
8.创建存储⽬录
mkdir /opt/gfs_data
9.添加节点到集群
# 执⾏操作的本机不需要probe 本机gluster peer probe node2.example.comgluster peer probe node3.example.com
10.查看集群状态
gluster peer status
11.配置 volume
GlusterFS 中的 volume 的模式有很多中,包括以下⼏种:
分布卷(默认模式):即DHT, 也叫 分布卷: 将⽂件已hash算法随机分布到 ⼀台服务器节点中存储。
复制模式:即 AFR, 创建 volume 时带 replica x 数量: 将⽂件复制到 replica x 个节点中。
条带模式:即 Striped, 创建 volume 时带 stripe x 数量: 将⽂件切割成数据块,分别存储到 stripe x 个节点中 ( 类似raid 0 )。
分布式条带模式:最少需要4台服务器才能创建。 创建 volume 时 stripe 2 server = 4 个节点: 是 DHT 与 Striped 的组合型。
分布式复制模式:最少需要4台服务器才能创建。 创建 volume 时 replica 2 server = 4 个节点:是 DHT 与 AFR 的组合型。
条带复制卷模式:最少需要4台服务器才能创建。 创建 volume 时stripe 2 replica 2 server = 4 个节点: 是 Striped 与 AFR 的组合型。三种模式混合: ⾄少需要8台 服务器才能创建。 stripe 2 replica 2 ,每4个节点 组成⼀个 组。
[root@node1 k8s]# gluster volume create k8s-volume node1.example.com:/opt/gfs_data/ node2.example.com:/opt/gfs_data/ node3.example.com:/opt/gfs_data/ force
12.查看 volume 状态
[root@node1 k8s]# gluster volume info
13.启动 分布卷
[root@node1 k8s]# gluster volume start k8s-volume
14.挂载测试
[root@node2 ~]# mount -t glusterfs node1.example.com:k8s-volume /media/
15.配置 endpoints
{ "kind": "Endpoints", "apiVersion": "v1", "metadata": { "name": "glusterfs-cluster" }, "subsets": [ { "addresses": [ { "ip": "192.168.0.221" } ], "ports": [ { "port": 1990 } ] }, { "addresses": [ { "ip": "192.168.0.222" } ], "ports": [ { "port": 1990 } ] } ]}[root@node1 ~]# kubectl create -f glusterfs-endpoints.json
查看 endpoints 信息
{ "kind": "Service", "apiVersion": "v1", "metadata": { "name": "glusterfs-cluster" }, "spec": { "ports": [ {"port": 1990} ] }}[root@node1 ~]# kubectl create -f glusterfs-service.json [root@node1 ~]# kubectl get svc
"path": "k8s-volume" #这里改为,gfs卷名字[root@node1 k8s]# kubectl create -f glusterfs-pod.json
[root@node1 k8s]# kubectl exec glusterfs mount | grep gluster
环境说明:
我们选取 master 192.168.0.221 做私有仓库地址 ( docker-ce 的安装这里不再描述)使用到的镜像:docker-registry-web.tar.gz #镜像仓库web展示registry-v2.6.2.tar.gz #镜像仓库容器docker-registry-web-conf.tar.gz #创建镜像仓库yaml配置文件
1.查看 docker 版本,配置 hosts 文件
[root@node1 ~]# vi /etc/hosts192.168.0.221 registry-srv192.168.0.221 registry-web
[root@node1 ~]# docker load -i docker-registry-web.tar.gz[root@node1 ~]# docker load -i registry-v2.6.2.tar.gz
3.创建容器
[root@node1 ~]# tar -zxvf docker-registry-web-conf.tar.gz
1)启动 registry:
# docker run -v /root/docker-registry-web/conf/registry-srv.yml:/etc/docker/registry/config.yml:ro -v /root/docker-registry-web/conf/auth.cert:/etc/docker/registry/auth.cert:ro -v /data:/var/lib/registry/ -p 5000:5000 --restart=always --name registry-srv -d registry:2.6.2
2)启动 registry-web
# docker run -d -v /root/docker-registry-web/conf/registry-web.yml:/conf/config.yml:ro -v /root/docker-registry-web/conf/auth.key:/conf/auth.key -v /root/docker-registry-web/db:/data -it -p 8081:8080 --link registry-srv --restart=always --name registry-web hyper/docker-registry-web
4.WEB 访问修改 admin 用户权限
账号 admin 密码 admin
5.配置本机使用私有仓库
[root@node1 ~]# echo '{ "insecure-registries":["registry-srv:5000"] }' >/etc/docker/daemon.json [root@node1 ~]# systemctl restart docker #重启docker[root@node1 ~]# docker start $(docker ps -a -q) #启动容器
6.上传镜像到 docker registry
[root@node1 ~]# docker login registry-srv:5000 -u'admin' -p'admin' #登录私有仓库[root@node1 ~]# docker tag 177391bcf802 registry-srv:5000/registry:2.6.2[root@node1 ~]# docker push registry-srv:5000/registry:2.6.2
#创建证书[root@node1 ~]# kubectl create secret docker-registry regsecret --docker-server=registry-srv:5000 --docker-username=admin --docker-password=admin --docker-email=admin@example.com
[root@node1 ~]# cat k8s/yaml/busybox.yaml apiVersion: v1kind: Podmetadata:name: busyboxnamespace: defaultspec:containers:- image: registry-srv:5000/busybox:latestcommand: - ping - "114.114.114.114"imagePullPolicy: IfNotPresentname: busyboxrestartPolicy: Always imagePullSecrets:- name: regsecret(红色字体即是,配置镜像拉取,使用该证书)
[root@node1 ~]# kubectl create -f k8s/yaml/busybox.yaml #创建容器
用过 kubernetes 的人都知道,kubernetes 的 service 的网络类型有三种:
registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:0.8.3(ingress controller 的镜像)
registry.cn-hangzhou.aliyuncs.com/google_containers/defaultbackend:1.0 (默认路由的servcie的镜像)
1.默认实例创建:
[root@node1 ingress]# kubectl create -f default-http-backend.yaml [root@node1 ingress]# kubectl expose rc default-http-backend --port=80 --target-port=8080 --namespace=kube-system #重要:为默认实例创建svc
2.ingress-controller 创建
[root@node1 ingress]# vi ingress-controller.yamlvalue: http://192.168.0.221:8080 #这里是master API地址 #镜像地址建议创建本地容器仓库[root@node1 ingress]# kubectl create -f ingress-controller.yaml
3.本实验通过 nginx 容器,这里通过 ingress 做入口访问 svc
[root@node1 ingress]# kubectl create -f ../k8s/nginx-deployment.yaml #创建nginx容器apiVersion: apps/v1beta2kind: Deploymentmetadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: 192.168.0.221:5000/nginx:v1 ports: - containerPort: 80[root@node1 ingress]# kubectl create -f ../k8s/nginx-service.yaml apiVersion: v1kind: Service metadata: name: nginx-service labels: app: nginx spec: ports: - port: 88 targetPort: 80 selector: app: nginx
[root@node1 ingress]# kubectl create -f ingress-nginx.yaml apiVersion: extensions/v1beta1kind: Ingressmetadata: name: nginxservicespec: rules: - host: test.info http: paths: - path: / backend: serviceName: nginx-service servicePort: 80
本机写 host 文件进行访问,外部写 host 文件,指向 node ip 即可
转载于:https://blog.51cto.com/51reboot/2058661