搭建單節點(一個master和一個minion、k8s叢集)多pod實驗環境
一、環境描述
(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文件,檔案內容如下:
(2)minion節點上的操作,將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
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命令,如果環境搭建成功會看見如下輸出
[email protected]:/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執行如下命令,如果有下面的輸出,說明叢集搭建成功:
[email protected]:/home/docker/xu/kubernetes/server/bin# kubectl get nodes
NAME STATUS AGE
192.168.110.152 Ready 1d
[email protected]:/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"}
[email protected]:/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 <[email protected]>
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目錄下執行如下命令,並得到相應的輸出,說明環境搭建成功[email protected]:/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
[email protected]:/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
[email protected]:/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、實驗結束
相關推薦
搭建單節點(一個master和一個minion、k8s叢集)多pod實驗環境
一、環境描述 (1)兩個node,一個master和一個minion,其中master節點的ip是192.168.110.151,minion的ip是192.168.110.152 (2)其中151的機器上啟動私有registry,提供k8s叢集所需要的image (3)m
一篇預定未達標的Chat(沉迷機器人作業系統(ROS)的一個理由和四種修仙祕籍)
這是第一次寫Chat,未達標也是情理之中的事兒,自己還需多多努力才行! 定價1.98元,人數設定100,即便達標,其實也毫無收益啊,在此非常感謝GitChat的推廣和CSDN的信任。 這篇Chat初稿寫了半年,是我三年機器人教學的總結,也許如我這般卑微之人,總結似乎毫無意
在程式設計競賽中,有6個評委為參賽選手打分,分數為0-100的整數分。 選手的最後得分為:去掉一個最高分和一個最低分的4個評委平均值 * 請寫程式碼實現(不考慮小數部分)
import java.util.Scanner; /* * 需求:在程式設計競賽中,有6個評委為參賽選手打分,分數為0-100的整數分。 * 選手的最後得分為:去掉一個最高分和一個最低分的4個評委平均值 * 請寫程式碼實現(不考慮小數部分) * *
linux單節點配置flume1.5(剩下一個問題,會的請留言,感激不盡)
使用版本:hadoop2.7.3 jdk:1.7 flume:1.5 前提:hadoop已經啟動起來。jdk已經安裝好,並且配置了環境變數,此flume輪詢的資料夾是/itcast/logs資料夾,要提前建立。 下載flume1.5到你的系統中,解壓到你指定的目錄下。
刪除所有svn檔案(一個目錄和其各級子目錄下的) 兩種方法
[1]用find命令和其action來實現[2]用rm直接實現$ cd /tmp/xxx$ rm -rf `find . -name .svn`就可以實現了。刪除SVN目錄及從伺服器端刪除SVN版本庫檔案方法詳解 在學習SVN的過程中,你可能會遇到這樣的問題,如何刪除SVN目錄?如何從伺服器端徹底刪
給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。
pan stat 給定 arr 註意 turn 大於 交易 nbsp 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 註意你不能在買入股票前賣出股票。 示例 1
myBatis解決同時傳遞一個整數和一個Set的問題
程式碼如下: List<Item> getItemByNames(@Param("collection") Set<String> names, @Param("type") Integer type); 注意使用了Param註解 在mapper檔案中 &l
2. 給定一個 query 和一個 text,均由小寫字母組成。要求在 text 中找出以同樣的順序連 續出現在 query 中的最長連續字母序列的長度。例如, query 為“acbac”,text
2. 給定一個 query 和一個 text,均由小寫字母組成。要求在 text 中找出以同樣的順序連 續出現在 query 中的最長連續字母序列的長度。例如, query 為“acbac”,text 為 “acaccbabb”,那麼 text 中的“cba”為最長的連續出現
易學筆記-RabbitMQ教程1:一個生產者和一個消費者
易學筆記 十年IT經驗個人學習筆記分享: 開發語言:C/C++/JAVA/PYTHON/GO/JSP WEB架構:Servlets/springMVC/springBoot/springClound 容器架構:Docker容器/Docker叢集/Docker與微服務整合/
面試題(redis master和slave是怎麼實現資料同步的)
Redis的主從同步機制可以確保redis的master和slave之間的資料同步。按照同步內容的多少可以分為全同步和部分同步;按照同步的時機可以分為slave剛啟動時的初始化同步和正常執行過程中的資料修改同步;本文將對這兩種機制的流程進行分析。 全備份過程中,在sla
搭建vsftpd(本地使用者和虛擬使用者可以同時存在)
1關閉iptables,selinux 2安裝vsftpd # yum install vsftpd -y 3建立虛擬使用者檔案 [[email protected] ~] # vim /etc/vsftpd/vusers.txt one redhat two
寫入一個方法,輸入一個檔名和一個字串,統計這個字串在這個檔案中出現的次數。
public class Test1 { /* * * 寫一個方法,輸入一個檔名和一個字串,統計這個字串在這個檔案中出現的次數。 * */ public static void main
將一個Stream 和一個二進位制流轉換成字串
1. 將一個流轉換成字串 public partial class WebForm2 : System.Web.UI.Page { protected void Pag
在CentOS下,搭建單節點以及叢集spark
在網上搜了一些關於Linux下搭建spark環境的一些文章,有的不能用,有的有些老舊,今天,對於在Linux搭建spark環境,做一些筆記 我用的VMWare12和centos7,以及jdk1.7,scala-2.11.6和預編譯的spark-1.5.2-bin-hadoo
給定一個字串和一個整數k,對字串開頭算起的每2k個字元的前k個字元進行反轉。 如果還有少於k個字元,則將其全部撤消。 如果小於2k但大於或等於k個字元,則反轉前k個字元,
本題源自leetcode 541 ------------------------------------------------------------- 思路:遍歷字串,跳度為 2 * k.每次反轉前k 個字串。 程式碼: string reverseStr(stri
redis客戶端jedis基於spring搭建單節點或者叢集執行緒池連線
基於jedis執行緒池搭建單節點或叢集連線完整程式碼 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId&g
隨機六位驗證碼(至少包含一個字母和一個數字)
console.log(ranSixNumLet()) function ranSixNumLet(){ // 定義裝有數字的陣列 var num = []; // 定義裝有字母的陣列 var letter = []; // 定義裝有數字和字母的陣
qt opengl lesson2 繪製一個三角形和一個正方形
在lesson1的基礎上加入一個三角形和一個正方形。 #------------------------------------------------- # # Project created by QtCreator 2017-01-19T20:33:38 # #--
求一個矩陣中連續四個數字(行,列,正、反對角線)乘積的最大值。
最近在project Euler題目上,見到一個題覺得不錯,就花時間做了一下。 問題: a=[ [8, 2, 22,97,38,15,0,40,0,75, 4, 5, 7,78, 52, 12, 50, 77, 91, 8], [49 ,49 ,99 ,
php中的單引號(int型別和string型別的轉換)
示例程式碼: $a = '10'; var_dump(gettype($a)); settype($a,'int'); var_dump(gettype($a)); 此時輸出結果為:string、i