搭建單機版的kubernetes集羣

1、環境準備

一、CentOS7下安裝etcd和kubernetesnode

[root@jin-120 ~]# yum install -y etcd kubernetes

二、關閉防火牆並設置開機不啓動mysql

[root@jin-120 ~]# systemctl stop firewalld
[root@jin-120 ~]# systemctl disable firewalld

三、修改配置文件/etc/sysconfig/docker,把OPTIONS的內容設置爲:linux

OPTIONS='--selinux-enabled=false --insecure-registry grc.io --log-driver=journald --signature-verification=false'

再修改kubernetes apiserver的配置文件/etc/kubernetes/apiserver,把--ADMISSION_CONTROL參數中的ServiceAcconut刪除。web

四、按順序啓動如下全部服務:sql

for i in etcd docker kube-apiserver kube-controller-manager kube-scheduler kubelet kube-proxy
do
    systemctl start $i
done

至此,咱們的單機版的kubernetes集羣環境就安裝好了。docker

2、啓動MySQL服務

一、建立一個MySQL服務的RC定義文件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:5.6
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

二、執行命令kubectl create -f mysql-rc.yaml建立RC,而後再用命令kubectl get rc查看建立的RC:vim

[root@jin-120 ~]# kubectl create -f mysql-rc.yaml
replicationcontroller "mysql" created
[root@jin-120 ~]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         1         1m

再查看RC定義生成的pod:api

[root@jin-120 ~]# kubectl get pod
NAME          READY     STATUS    RESTARTS   AGE
mysql-xcgj0   1/1       Running   0          1m

三、咱們再建立一個關於MySQL service的文件:vim mysql-svc.yaml,內容以下:瀏覽器

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql

運行命令建立service:

[root@jin-120 ~]# kubectl create -f mysql-svc.yaml 
service "mysql" created

查看是否建立成功:

[root@jin-120 ~]# kubectl get svc
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   10.254.0.1      <none>        443/TCP    1d
mysql        10.254.70.236   <none>        3306/TCP   11s

能夠看到,MySQLservice被分配了一個10.254.70.236的Cluster IP,這樣,kubernetes集羣中的其餘新建立的Pod就能夠經過service的Cluster IP+port6379來鏈接和訪問了。

3、啓動Tomcat應用

一、建立對應的RC文件myweb-rc.yaml,內容以下:

kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 1
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
        - name: myweb
          image: kubeguide/tomcat-app:v1
          ports:
          - containerPort: 8080
          env:
          - name: MYSQL_SERVICE_HOST
            value: 'mysql'
          - name: MYSQL_SERVICE_PORT
            value: '3306'

二、執行命令kubectl create -f myweb-rc.yaml建立RC,而後再用命令kubectl get rc查看建立的RC:

[root@jin-120 ~]# kubectl create -f myweb-rc.yaml 
replicationcontroller "myweb" created
[root@jin-120 ~]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         1         13m
myweb     1         1         1         16s

再查看RC定義生成的pod:

[root@jin-120 ~]# kubectl get pods
NAME          READY     STATUS    RESTARTS   AGE
mysql-xcgj0   1/1       Running   2          15m
myweb-jmll1   1/1       Running   0          1m

三、咱們再建立一個關於myweb service的文件:vim myweb-svc.yaml,內容以下:

apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb

建立並查看建立的service:

[root@jin-120 ~]# kubectl create -f myweb-svc.yaml 
service "myweb" created
[root@jin-120 ~]# kubectl get svc
NAME         CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes   10.254.0.1       <none>        443/TCP          1d
mysql        10.254.70.236    <none>        3306/TCP         13m
myweb        10.254.218.251   <nodes>       8080:30001/TCP   9s

至此,咱們的集羣就已經搭建完畢。

4、測試

在瀏覽器裏輸入地址:http://虛擬機IP:30001/demo/:

看到如上網頁,說明咱們搭建的單機版kubernetes集羣成功了。

咱們能夠嘗試單擊"Add"按鈕添加一條記錄並提交,提交後,數據就會被寫入MySQL數據庫中。

相關文章
相關標籤/搜索