怎么搭建单机版的kubernetes集群

发布时间:2021-09-14 18:13 来源:亿速云 阅读:0 作者:chen 栏目: 服务器

这篇文章主要讲解了“怎么搭建单机版的kubernetes集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么搭建单机版的kubernetes集群”吧!

一、环境准备

1、CentOS7下安装etcd和kubernetes

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

2、关闭防火墙并设置开机不启动

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

3、修改配置文件/etc/sysconfig/docker,把OPTIONS的内容设置为:

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

再修改kubernetes apiserver的配置文件/etc/kubernetes/apiserver,把--ADMISSION_CONTROL参数中的ServiceAcconut删除。

4、按顺序启动以下所有服务:

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

至此,我们的单机版的kubernetes集群环境就安装好了。

二、启动服务

1、创建一个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"

2、执行命令kubectl create -f mysql-rc.yaml创建RC,然后再用命令kubectl get rc查看创建的RC:

[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:

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

3、我们再创建一个关于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来连接和访问了。

三、启动Tomcat应用

1、创建对应的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'

2、执行命令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

3、我们再创建一个关于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

至此,我们的集群就已经搭建完毕。

四、测试

在浏览器里输入地址:http://虚拟机IP:30001/demo/:

看到如上网页,说明我们搭建的单机版kubernetes集群成功了。

我们可以尝试单击"Add"按钮添加一条记录并提交,提交后,数据就会被写入MySQL数据库中。

免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系QQ:712375056。