搭建单节点(一个master和一个minion、k8s集群)多pod实验环境
2016-11-23 09:08
786 查看
一、环境描述
(1)两个node,一个master和一个minion,其中master节点的ip是192.168.110.151,minion的ip是192.168.110.152
(2)其中151的机器上启动私有registry,提供k8s集群所需要的image
(3)master节点上运行kube-apiserver、kube-controller-manager、kube-scheduler和etcd;minion节点上运行kube-
proxy、kubelet和etcd
(4)其中151机器的hostname是master,152机器的hostname是dockertest4
二、环境搭建
1、etcd环境搭建
(1)master节点操作,将etcd的etcd和etcdctl文件拷贝到/home/docker/xu/etcd目录下,然后在该目录下创建run.sh文件,文件内容如下:
(3)分别执行上述两个run.sh文件(执行命令./run.sh)
(4)在master节点的/home/docker/xu/etcd目录下执行./etcdctl member list命令,如果环境搭建成功会看见如下输出
2、k8s环境搭建
(1)将kubernetes\server\bin中的所有文件分别拷贝到master和minion节点的/home/docker/xu/k8s目录下
(2)在master节点的/home/docker/xu/k8s目录下编辑run-apiserver.sh、run-controller-manager.sh和run-scheduler.sh文件,文件内容分别如下:
注意:需要在/opt目录下创建k8s文件夹,并在k8s文件夹中创建相应的日志文件
需要给上述三个文件赋予可执行权限:chmod +x 文件名
(3)在master节点的/home/docker/xu/k8s目录下编辑run-proxy.sh、run-let.sh文件,文件内容分别如下:
注意:需要在/opt目录下创建k8s文件夹,并在k8s文件夹中创建相应的日志文件
需要给上述三个文件赋予可执行权限:chmod +x 文件名
(4)在master的/home/docker/xu/k8s执行如下命令:
./run-apiserver.sh
./run-controller-manager.sh
./run-scheduler.sh
(5)在minion节点的/home/docker/xu/k8s执行如下命令
./run-proxy.sh
./run-let.sh
(6)在master节点的/home/docker/xu/k8s执行如下命令,如果有下面的输出,说明集群搭建成功:
3、实验环境搭建
(1)实验描述
试验中会会创建两个pod,其中一个pod回去连接另一个pod进行通信
(2)在master节点的/home/docker/xu/test目录下创建mysql.yaml、tomcat.yaml,文件内容分别如下:
(3)创建tomcat镜像
Dockerfile文件内容如下
其中K8S.war是个javaweb工程。其实很简单就是一个jsp文件,jsp文件内容如下
创建tomcat镜像的命令(在Dockerfile和K8S.war所在的目录执行)
docker build -t 192.168.110.151:5000/tomcat8
(4)创建pod,在test目录下执行如下命令
kubectl create -f mysql.yaml和kubectl create -f tomcat.yaml
(5)然后在master节点的test目录下执行如下命令,并得到相应的输出,说明环境搭建成功
(6)数据表创建,通过docker exec进入mysql容器,然后创建bms数据库,并在bms中创建表bms_appuser。bms_appuser中有三个字段,分别是id name和value
(7)然后在152的节点的浏览器中访问http://192.168.110.101:8080/K8S/index.jsp
页面显示内容如下:
卡号
00901016
0090051F
00900E33
4、实验结束
(1)两个node,一个master和一个minion,其中master节点的ip是192.168.110.151,minion的ip是192.168.110.152
(2)其中151的机器上启动私有registry,提供k8s集群所需要的image
(3)master节点上运行kube-apiserver、kube-controller-manager、kube-scheduler和etcd;minion节点上运行kube-
proxy、kubelet和etcd
(4)其中151机器的hostname是master,152机器的hostname是dockertest4
二、环境搭建
1、etcd环境搭建
(1)master节点操作,将etcd的etcd和etcdctl文件拷贝到/home/docker/xu/etcd目录下,然后在该目录下创建run.sh文件,文件内容如下:
killall -9 etcd ./etcd \ -name etcd0 \ -data-dir etcd0.etcd \ -initial-advertise-peer-urls http://master:2380 \ -listen-peer-urls http://master:2380 \ -listen-client-urls http://master:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://master:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster etcd0=http://master:2380,etcd1=http://dockertest4:2380 \ -initial-cluster-state new(2)minion节点上的操作,将etcd的etcd和etcdctl文件拷贝到/home/docker/xu/etcd目录下,然后在该目录下创建run.sh文件,文件内容如下:
killall -9 etcd ./etcd \ -name etcd1 \ -data-dir etcd1.etcd \ -initial-advertise-peer-urls http://dockertest4:2380 \ -listen-peer-urls http://dockertest4:2380 \ -listen-client-urls http://dockertest4:2379,http://127.0.0.1:2379 \ -advertise-client-urls http://dockertest4:2379 \ -initial-cluster-token etcd-cluster \ -initial-cluster etcd0=http://master:2380,etcd1=http://dockertest4:2380 \ -initial-cluster-state new
(3)分别执行上述两个run.sh文件(执行命令./run.sh)
(4)在master节点的/home/docker/xu/etcd目录下执行./etcdctl member list命令,如果环境搭建成功会看见如下输出
root@master:/home/docker/xu/etcd# ./etcdctl member list a8393743a0bdfe3: name=etcd1 peerURLs=http://dockertest4:2380 clientURLs=http://dockertest4:2379 isLeader=true c93427c50eaf2937: name=etcd0 peerURLs=http://master:2380 clientURLs=http://master:2379 isLeader=false
2、k8s环境搭建
(1)将kubernetes\server\bin中的所有文件分别拷贝到master和minion节点的/home/docker/xu/k8s目录下
(2)在master节点的/home/docker/xu/k8s目录下编辑run-apiserver.sh、run-controller-manager.sh和run-scheduler.sh文件,文件内容分别如下:
./kube-apiserver --address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range='192.168.110.0/24' --kubelet_port=10250 --v=0 --logtostderr=true --etcd_servers=http://192.168.110.151:2379 --allow_privileged=false >> /opt/k8s/kube-apiserver.log 2>&1 &
./kube-controller-manager --v=0 --logtostderr=false --log_dir=/opt/k8s/kube --master=192.168.110.151:8080 >> /opt/k8s/kube-controller-manager.log 2>&1 &
./kube-scheduler --master='192.168.110.151:8080' --v=0 --log_dir=/opt/k8s/kube >> /opt/k8s/kube-scheduler.log 2>&1 &
注意:需要在/opt目录下创建k8s文件夹,并在k8s文件夹中创建相应的日志文件
需要给上述三个文件赋予可执行权限:chmod +x 文件名
(3)在master节点的/home/docker/xu/k8s目录下编辑run-proxy.sh、run-let.sh文件,文件内容分别如下:
./kube-proxy --logtostderr=true --v=0 --master=http://192.168.110.151:8080 --hostname_override=192.168.110.152 >> /opt/k8s/kube-proxy.log
./kubelet --logtostderr=true --v=0 --allow-privileged=false --log_dir=/opt/k8s/logs/kube --address=0.0.0.0 --port=10250 --hostname_override=192.168.110.152 --api_servers=http://192.168.110.151:8080 >> /opt/k8s/kube-kubelet.log
注意:需要在/opt目录下创建k8s文件夹,并在k8s文件夹中创建相应的日志文件
需要给上述三个文件赋予可执行权限:chmod +x 文件名
(4)在master的/home/docker/xu/k8s执行如下命令:
./run-apiserver.sh
./run-controller-manager.sh
./run-scheduler.sh
(5)在minion节点的/home/docker/xu/k8s执行如下命令
./run-proxy.sh
./run-let.sh
(6)在master节点的/home/docker/xu/k8s执行如下命令,如果有下面的输出,说明集群搭建成功:
root@master:/home/docker/xu/kubernetes/server/bin# kubectl get nodes NAME STATUS AGE 192.168.110.152 Ready 1d
root@master:/home/docker/xu/kubernetes/server/bin# kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health": "true"}
root@master:/home/docker/xu/kubernetes/server/bin# kubectl cluster-info Kubernetes master is running at http://localhost:8080 To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
3、实验环境搭建
(1)实验描述
试验中会会创建两个pod,其中一个pod回去连接另一个pod进行通信
(2)在master节点的/home/docker/xu/test目录下创建mysql.yaml、tomcat.yaml,文件内容分别如下:
apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql_pod --- apiVersion: v1 kind: ReplicationController metadata: name: mysql-deployment spec: replicas: 1 template: metadata: labels: app: mysql_pod spec: containers: - name: mysql image: 192.168.110.151:5000/mysql imagePullPolicy: IfNotPresent ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456"
apiVersion: v1 kind: Service metadata: name: hpe-java-web spec: type: NodePort ports: - port: 8080 nodePort: 31002 selector: app: hpe_java_web_pod --- apiVersion: v1 kind: ReplicationController metadata: name: hpe-java-web-deployement spec: replicas: 1 template: metadata: labels: app: hpe_java_web_pod spec: containers: - name: myweb image: 192.168.110.151:5000/tomact8 imagePullPolicy: IfNotPresent ports: - containerPort: 8080
(3)创建tomcat镜像
Dockerfile文件内容如下
FROM tomcat MAINTAINER xuguokun <921586520@qq.com> ADD K8S.war /usr/local/tomcat/webapps/
其中K8S.war是个javaweb工程。其实很简单就是一个jsp文件,jsp文件内容如下
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="java.sql.*" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <table border="1" align="center"> <tr> <td>卡号</td> </tr> <% String driverClass="com.mysql.jdbc.Driver"; String ip=System.getenv("MYSQL_SERVICE_HOST"); String port=System.getenv("MYSQL_SERVICE_PORT"); System.out.println(port+"asasdfasdfasdfasdfasd"); //String ip = "localhost"; //String port = "3306"; Connection conn; try{ Class.forName(driverClass); conn = java.sql.DriverManager.getConnection("jdbc:mysql://"+ip+":"+port+"/bms", "root","123456"); Statement stmt=conn.createStatement(); String sql="select * from bms_appuser"; ResultSet rs=stmt.executeQuery(sql); while(rs.next()){ %> <tr> <td><%=rs.getString(3) %></td> </tr> <% } } catch(Exception ex){ ex.printStackTrace(); } %> </table> </body> </html>
创建tomcat镜像的命令(在Dockerfile和K8S.war所在的目录执行)
docker build -t 192.168.110.151:5000/tomcat8
(4)创建pod,在test目录下执行如下命令
kubectl create -f mysql.yaml和kubectl create -f tomcat.yaml
(5)然后在master节点的test目录下执行如下命令,并得到相应的输出,说明环境搭建成功
root@master:/home/docker/xu/test# kubectl get pods NAME READY STATUS RESTARTS AGE hpe-java-web-deployement-w8kts 1/1 Running 0 12h mysql-deployment-ovz6y 1/1 Running 0 12h
root@master:/home/docker/xu/test# kubectl get service NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE hpe-java-web 192.168.110.101 <nodes> 8080/TCP 12h kubernetes 192.168.110.1 <none> 443/TCP 1d mysql 192.168.110.158 <none> 3306/TCP 12h
root@master:/home/docker/xu/test# kubectl exec hpe-java-web-deployement-w8kts -- printenv | grep SERVICE MYSQL_SERVICE_HOST=192.168.110.158 KUBERNETES_SERVICE_PORT_HTTPS=443 HPE_JAVA_WEB_SERVICE_PORT=8080 MYSQL_SERVICE_PORT=3306 HPE_JAVA_WEB_SERVICE_HOST=192.168.110.101 KUBERNETES_SERVICE_HOST=192.168.110.1 KUBERNETES_SERVICE_PORT=443
(6)数据表创建,通过docker exec进入mysql容器,然后创建bms数据库,并在bms中创建表bms_appuser。bms_appuser中有三个字段,分别是id name和value
(7)然后在152的节点的浏览器中访问http://192.168.110.101:8080/K8S/index.jsp
页面显示内容如下:
卡号
00901016
0090051F
00900E33
4、实验结束
相关文章推荐
- MQ集群测试环境搭建(多节点负载均衡,共享一个kahaDB文件(nas方式))
- 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)
- FreeBSD搭建一个大型网站架构的实验环境
- CDH 集群环境Master节点IP变更
- Spark1.2集群环境搭建(Standalone+HA) 4G内存5个节点
- 搭建一个大型网站架构的实验环境(FreeBsd+Nginx+Squid+Apache)
- 搭建一个大型网站架构的实验环境(Squid缓存服务器篇)
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.3.Oracle 集群节点间连通失败
- oracle DG 主备库为RAC及一个主库对多个从库的实验环境搭建
- (大数据之hadoop)Hadoop2.2.0版本多节点集群及eclipse开发环境搭建
- 《Orange's 一个操作系统的实现》学习笔记(一) 实验环境搭建
- 搭建一个大型网站架构的实验环境(Nginx代理服务器篇)
- 搭建一个大型网站架构的实验环境(FreeBsd+Nginx+Squid+Apache)
- 研究实验一 搭建一个精简的C语言开发环境
- 用GNS3和主机搭建一个实验环境来验证单网卡多IP多路由的可行性
- orange's 一个操作系统的实现 实验环境搭建
- jboss-5.1.0.GA 集群环境搭建 APACHE 双节点 单网卡地址 单机
- VMware workstation -- 实验环境搭建系列(二) 使用 Custom 方式创建一个新虚拟机
- hbase环境搭建,启动之后HMaster挂掉,或者是集群里,只启动了HMaster节点,HRegionServer节点没有启动的问题
- 搭建一个大型网站架构的实验环境(FreeBsd+Nginx+Squid+Apache)