第一章 k8s入門(簡單的Java web項目)
環境: VMware Workstation在本機虛擬一個64位的Centos7虛擬機
-
環境準備
-
關閉防火牆
systemctl disable firewalld systemctl stop firewalld
-
安裝etcd和Kubernetes軟件(會自動安裝Docker軟件)
yum install -y etcd kubernetes
-
按順序啓動所有服務
systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy
-
-
啓動MySQL服務
-
MySQL鏡像
docker pull daocloud.io/library/mysql:latest
-
構建Mysql RC定義文件(可以使用vim創建),命名mysql-rc.yaml 內容如下:
apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456"
-
發佈到kubernetes集羣中,在master節點執行命令(注:此時可能出現問題,如:問題1:no resource found,問題2:status的狀態是ContainerCreating而不是running,如果出現此問題請看關於創建rc和pod出現的問問題)
$ kubectl create -f mysql-rc.yaml replicationcontroller "mysql" created
查看創建的rc
$ kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 14s
查看pod創建情況
$ kubectl get pods NAME READY STATUS RESTARTS AGE mysql-srd1m 1/1 Running 0 41s
-
創建一個與之關聯的k8s Service-Mysql的定義文件(文件名爲mysql-svc.yaml),內容如下:
apiVersion: v1 kind: Service metadata: name: mysql spec: ports: - port: 3306 selector: app: mysql
運行kubectl命令,創建service
kubectl create -f mysql-svc.yaml
查看剛剛創建的service
$ kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 8d mysql 10.254.55.41 <none> 3306/TCP 13s
-
-
啓動Tomcat服務
- 拉取Tomcat鏡像
docker pull kubeguide/tomcat-app:v2
- 構建Tomcat RC定義文件,命名myweb-rc.yaml
內容如下:
完成rc創建和驗證apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 2 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: myweb image: kubeguide/tomcat-app:v1 ports: - containerPort: 8080
$ kubectl create -f myweb-rc.yaml replicationcontroller "myweb" created $ kubectl get rc NAME DESIRED CURRENT READY AGE mysql 1 1 1 23h myweb 2 2 2 12s $ kubectl get pods NAME READY STATUS RESTARTS AGE mysql-srd1m 1/1 Running 1 23h myweb-fqlvz 1/1 Running 0 40s myweb-ggrlg 1/1 Running 0 40s
- 創建對應的Service,文件名(myweb-svc.yaml),內容如下
創建並驗證apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 8080 nodePort: 30001 selector: app: myweb
$ kubectl create -f myweb-svc.yaml service "myweb" created $ kubectl get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 8d mysql 10.254.55.41 <none> 3306/TCP 42m myweb 10.254.237.187 <nodes> 8080:30001/TCP 21s
- 拉取Tomcat鏡像