搭建单机版的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数据库中。

相关文章
相关标签/搜索