CentOS7环境安装Kubernetes

CentOS7环境安装Kubernetes

通过Rancher安装Kubernetes的文章前面已经写过,但那时是需要科学上网才能安装成功(下载gcr.io/google_containers/XXXXX的镜像),本次实战依旧是用Rancher来安装Kubernetes,但是会做一些设置,使得不用也能成功安装K8S环境,另外,在CentOS7环境下,有些设置如果处理不当也会导致安装失败或者加入节点失败,所以也会在本文中交代清楚;

章节列表

1. 标准化机器准备,不论是master还是node节点,都要先做一些同样的设置,本章会将这些步骤列出,请参照本章对每一台机器做同样的设置;

2. 安装master,配置模板;

3. 在K8S环境加入机器,并快速部署一个应用作为体验;

4. 安装kubectl工具;

版本信息

本次涉及到的重要软件的版本信息如下:

1. 操作系统:CentOS Linux 7 (3.10.0)

2. Docker:1.12.3

3. Kubernetes:v1.8.3

机器信息

整个环境由两台CentOS7的机器组成,如下:

hostname      IP地址    作用       内存大小

master    192.168.119.129     主控制节点    2G

node1     192.168.119.130     业务节点       4G

接下来的操作是通用的,在master和node1两台机器上都要一模一样的做一遍;

建议以root身份来执行以下操作,或者通过sudo su -命令获取root权限;

检查hostname

检查文件/etc/hostname,确保master和node1的不一样,我这边master的hostname就叫master,node的hostname叫node1;

修改后需要重启机器;

检查hosts

检查文件/etc/hosts,确保有hostname和本机IP的配置:

1. 对于master应该有这么一行:192.168.119.129 master

2. 对于node1应该有这么一样:192.168.119.130 node1

IP和DNS

IP地址不能冲突;

能正常解析域名,执行curl www.baidu.com,可以返回网站的html内容;

防火墙

如果是测试环境就关闭防火墙,如果是生产环境需要做详细的设置,关闭防火墙的方法如下:

1. 查看当前防火墙状态:systemctl status firewalld.service

2. 禁止开机启动:systemctl disable firewalld.service

3. 关闭防火墙:systemctl stop firewalld.service

关闭SELinux

打开文件/etc/selinux/config,找到SELINUX=xxxxx这行,改为SELINUX=disabled;

修改后需要重启机器;

开启IPV4转发

打开文件/etc/sysctl.conf,检查是否有net.ipv4.ip_forward = x这样的配置;

如果有就保证x等于1,如果没有就加一行:net.ipv4.ip_forward = 1

修改并保存后,执行命令sysctl -p使配置生效;

执行命令sysctl -a|grep “ip_forward”,查看最新的配置,应该有如下内容:

1.   net.ipv4.ip_forward = 1

2.   net.ipv4.ip_forward_use_pmtu = 0

重启

做完上述步骤后,如果有改动,最好重启机器,以免有设置未能生效;

关闭Swap交换分区

执行命令swapoff -a关闭Swap交换分区;

安装Docker1.2.3版本

什么版本的Docker才能适配Rancher和Kubernetes?rancher的官网给出了一份列表,请参考:http://rancher.com/docs/rancher/v1.6/zh/hosts/#docker,本文我们使用推荐的1.2.3版本,以下是安装步骤:

1. 执行命令:

mkdir -p ~/_src \

&& cd ~/_src \

&&wgethttp://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm \

&& wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.3-1.el7.centos.x86_64.rpm \

&& wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm \

&& yum localinstall -y docker-engine-selinux-1.12.3-1.el7.centos.noarch.rpm docker-engine-1.12.3-1.el7.centos.x86_64.rpm docker-engine-debuginfo-1.12.3-1.el7.centos.x86_64.rpm

systemctl enable docker

启动docker:

systemctl start docker

执行docker version命令,看到如下信息:

Client:

 Version:      1.12.3

 API version:  1.24

 Go version:   go1.6.3

 Git commit:   6b644ec

 Built:       

 OS/Arch:      linux/amd64

Server:

 Version:      1.12.3

 API version:  1.24

 Go version:   go1.6.3

 Git commit:   6b644ec

 Built:       

 OS/Arch:      linux/amd64

设置Docker镜像加速

此时如果用docker pull命令下载镜像,本地会连接hub.docker.com网站去下载,耗时较长,因此我们可以设置docker镜像加速,使得本地连接去国内镜像仓库下载,镜像加速的设置有很多种,本章以阿里云的设置为例,步骤如下:

创建目录:

mkdir -p /etc/docker

设置镜像仓库地址:

tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://xwx6wxd1.mirror.aliyuncs.com"]

}

EOF

重新加载配置:

systemctl daemon-reload

重启docker服务:

systemctl restart docker

至此,机器的标准化准备工作已经完成了,经过了上述操作的机器可以直接拿来安装master,或者作为node加入到kubernetes环境;

安装rancher

master机器执行以下命令,即可安装rancher

docker run -d --restart always --name rancher-server -p 8080:8080 rancher/server:v1.6.11-rc3 && docker logs -f rancher-server

以上命令会下载rancher镜像再启动容器,并且会输出容器控制台的信息,等到控制台信息不再滚动时,在浏览器访问192.168.119.129:8080,可以看到初始页面,在页面的右下角选择简体中文后,页面如下所示: 

CentOS7环境安装Kubernetes_第1张图片CentOS7环境安装Kubernetes_第2张图片

至此,rancher安装成功,接下来就是kubernetes的搭建工作了;

配置环境模板

搭建kubernetes之前,我们先创建一个环境模板用来给环境配置基本信息: 
1.
如下图,选择环境管理 

CentOS7环境安装Kubernetes_第3张图片

2. 点击下图红框中的添加环境模板 

CentOS7环境安装Kubernetes_第4张图片

3. 如下图,在新的页面上,输入模板名称、选择”Kubernetes”、点击编辑设置 

CentOS7环境安装Kubernetes_第5张图片

4. 如下图,下拉菜单只有一个选择,请选中: 

CentOS7环境安装Kubernetes_第6张图片

5. 会出现一个配置参数的页面,只需要修改其中的三个参数,如下图: 

CentOS7环境安装Kubernetes_第7张图片

上图四个红框填入的内容如下表所示:

名称

Private Registry for Add-Ons and Pod Infra Container Image

registry.cn-shenzhen.aliyuncs.com

Image namespace for Add-Ons and Pod Infra Container Image

rancher_cn

Image namespace for kubernetes-helm Image

rancher_cn

Pod Infra Container Image

rancher_cn/pause-amd64:3.0

6. 将页面拖动到最底部,点击设置按钮,如下图: 

CentOS7环境安装Kubernetes_第8张图片

7. 再将页面拖动到最底部,点击创建按钮,如下图: 

这样我们就完成了环境模板的配置,这里面的参数帮助rancher寻找国内的镜像仓库,从而避免了无法从google仓库下载镜像的问题,在以往这个问题是通过科学上网来解决的;

创建Kubernetes

1.点击“创建环境”按钮,如下图红框: 

CentOS7环境安装Kubernetes_第9张图片

2. 在创建环境的页面中,输入新的环境的名称,选择我们刚才创建的环境模板,在点击底部的“创建”按钮,如下图: 

CentOS7环境安装Kubernetes_第10张图片

3. 如下图红框所示,在左上角位置选择刚刚创建的环境,可以看到目前环境已经OK,正在等待node的加入: 

CentOS7环境安装Kubernetes_第11张图片

至此,Kubernetesmaster已经搭建完毕;

机器信息

整个环境由两台CentOS7的机器组成,如下:

hostname

IP地址

作用

内存大小

master

192.168.119.129

主控制节点

2G

node1

192.168.119.130

业务节点

4G

将机器加入到K8S环境

  1. master机器的IP是192.168.119.129,所以在浏览器打开地址192.168.119.129:8080,左上角选择我们在上一章新增的环境,可以看到如下图的页面,点击红框中的“添加主机”:CentOS7环境安装Kubernetes_第12张图片
  2. 如下图,在页面上确认红框中的IP地址是不是你的master机器对外暴露的地址(多网卡的机器要关注),确认无误后点击保存” 
  3. CentOS7环境安装Kubernetes_第13张图片
  4. 如下图,点击红框按钮,会将此按钮左侧的文本信息复制下来:
  5. CentOS7环境安装Kubernetes_第14张图片

  6. 登录业务节点机器192.168.119.130,执行上一步中复制的文本,该命令会先下载docker镜像,然后启动容器去加入到K8S环境,此时再去刷新管理页面,见到如下图所示,已经感知到机器的加入,开始接下来的一系列操作,此时请耐心等待:
  7. CentOS7环境安装Kubernetes_第15张图片

  8. 节点加入成功后,页面如下图所示,点击红框中的按钮就进入了K8Sdashboard 
  9. CentOS7环境安装Kubernetes_第16张图片

    至此,我们已经完成了节点机器加入K8S环境的操作,接下来我们快速体验在K8S环境创建PodService的操作;

  10. 体验K8S环境

  11. 创建一个文件tomcat.yaml,内容如下:
  12. apiVersion: extensions/v1beta1

    kind: Deployment

    metadata:

      name: tomcat001

    spec:

      replicas: 1

      template:

        metadata:

         labels:

           name: tomcat001

        spec:

         containers:

         - name: tomcat001

           image: tomcat:7.0.82-jre7

           tty: true

           ports:

           - containerPort: 8080

    2. dashboard页面上传这个tomcat.yaml文件,操作如下图所示: 

    3. 等镜像下载和容器创建成功后,在dashboard的部署页面可以看到tomcat001的部署情况,如下图: 

    4. 创建一个文件tomcat-svc.yaml,内容如下:

    apiVersion: v1

    kind: Service

    metadata:

      name: tomcat001

    spec:

      type: NodePort

      ports:

           - port: 8080

             nodePort: 30018

      selector:

        name: tomcat001

    ---------------------

    5. dashboard页面上传这个tomcat-svc.yaml文件,操作如下图所示: 

    6. dashboard的服务页面,可以看到我们刚刚部署的服务,如下图所示: 

    7. 业务节点的IP地址是192.168.119.130,所以在浏览器访问192.168.119.130:30018,可以访问刚才创建的tomcat容器,如下图: 

    至此,添加节点以及快速体验K8S服务的实战就全部完成了,但是仅凭dashboard页面提供的服务,我们无法对K8S做更多操作;

    kubectl工具安装在哪里?

    kubectl是个客户端工具,可以安装在任意一台Linuxwindows或者Mac电脑上,只要这个电脑能够连接master节点,本次实战我们将kubectl安装在一台全新的CentOS7机器上;

    下载kubectl工具

    有三种下载方式,您可以选择其中任意一种: 
    1. linux机器上执行以下命令下载:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

    2.在我的GitHub下载,地址是:https://github.com/zq2599/blog_demos/blob/master/k8s_tools/kubectl/linux/kubectl.zip,在这个页面点击”download”按钮即可下载,下载后记得解压;

    3. 在csdn下载,地址:https://download.csdn.net/download/boling_cavalry/10297309

    设置工具

    1. kubectl文件下载到linux机器后,执行命令chmod +x ./kubectl,给文件可执行权限;

    2. 执行以下命令,将kubectl移动到可以全局访问的目录下:mv ./kubectl /usr/local/bin/kubectl

    3. linux机器的任意目录都能执行kubectl,直接输入kubectl然后回车,可以看到如下信息:

    kubectl controls the Kubernetes cluster manager.

    Find more information at https://github.com/kubernetes/kubernetes.

    Basic Commands (Beginner):

      create         Create a resource from a file or from stdin.

      expose         Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service

      run            Run a particular image on the cluster

      set            Set specific features on objects

      run-container  Run a particular image on the cluster. This command is deprecated, use "run" instead

    Basic Commands (Intermediate):

      get            Display one or many resources

      explain        Documentation of resources

      edit           Edit a resource on the server

      delete         Delete resources by filenames, stdin, resources and names, or by resources and label selector

    工具已经准备好,接下来我们把配置做好,使得kubectl可以连接到K8S上执行命令;

    配置参数

  13. 在rancher的管理页面上,点击下图红框1中的”CLI”,在出现的页面中点击红框2中的”生成配置“: 
  14. CentOS7环境安装Kubernetes_第17张图片

  15. 如下图,点击红框中的”复制到剪切板“,将按钮上方的配置信息复制下来: 
  16. CentOS7环境安装Kubernetes_第18张图片

    3. 在linux机器上,在家目录创建.kube文件夹,命令如下:

    #mkdir ~/.kube

    4. .kube文件夹下新建一个名为config的文件,把刚才复制的配置信息粘贴进来;

    至此,kubectl工具的安装配置就完成了,输入命令get service -a -o wide –all-namespaces试试,可以看到当前的服务列表:

    [root@v-test-test ~]# kubectl get service -a -o wide --all-namespaces

    NAMESPACE     NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE       SELECTOR

    default       kubernetes             ClusterIP   10.43.0.1               443/TCP          20h      

    default       tomcat001              NodePort    10.43.243.24            8080:30018/TCP   4h        name=tomcat001

    kube-system   heapster               ClusterIP   10.43.157.242           80/TCP           20h       k8s-app=heapster

    kube-system   kube-dns               ClusterIP   10.43.0.10              53/UDP,53/TCP    20h       k8s-app=kube-dns

    kube-system   kubernetes-dashboard   ClusterIP   10.43.199.86            80/TCP           20h       k8s-app=kubernetes-dashboard

    kube-system   monitoring-grafana     ClusterIP   10.43.112.198           80/TCP           20h       k8s-app=grafana

    kube-system   monitoring-influxdb    ClusterIP   10.43.200.65            8086/TCP         20h       k8s-app=influxdb

    kube-system   tiller-deploy          ClusterIP   10.43.28.153            44134/TCP        20h       app=helm,name=tiller

    至此,《CentOS7环境安装Kubernetes四部曲》就全部结束了,希望能够帮助您快速搭建环境,然后一起开始愉快的K8S之旅;

你可能感兴趣的:(CentOS7环境安装Kubernetes)