1 环境准备

 
节点 主机名 IP OS
Master     k8s-master        192.168.57.1       centos 7       
Node1  k8s-node-1 192.168.57.2 centos 7

2 离线包下载

我已经整理好需要的可以@我

3 设置主机名

     Master上执行:hostnamectl --static set-hostname k8s-master
     Node1上执行:hostnamectl --static set-hostname k8s-node-1
 
     重启
     reboot

4 分别修改节点的hosts文件,并使内容保持一致

# 编辑hosts文件

    vi /etc/hosts

# 新增下面的内容,wq保存。

192.168.57.1 k8s-master  
192.168.57.2 k8s-node-1

5 关闭防火墙

systemctl stop firewalld       
systemctl disable firewalld
6 master节点与node节点做互信
    ssh-keygen
    ssh-copy-id k8s-node-1
 

下面7-13步需要在Master和Node上都执行

7 关闭selinux

# 编辑config文件

    vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled,wq保存。

# 当前临时关闭selinux(不重启临时关闭selinux的方式)

    setenforce 0
 

8  关闭swap

# 当前临时关闭虚拟内存

    swapoff -a
    若不关闭下面初始化master的时候会存在下图的错误:
    
 

# 修改/etc/fstab文件

     vi /etc/fstab

# 加#注释掉下面的语句屏蔽SWAP的自动挂载,wq保存

      #/dev/mapper/centos-swap swapswapdefaults0 0
 

9 配置路由参数,防止kubeadm报路由警告

# 将内容写入k8s.conf文件

 

cat <<EOF >  /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF

 

# 立即生效

      sysctl --system
10 安装docker
   rpm -ihv docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
   发现缺少依赖包的错误
 
   在mypackages目录下执行 
   yum -y install *.rpm
   然后再执行  
   rpm -ihv docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
   
   rpm -ihv docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
若出现下图情况需要先执行以下 rpm -ihv libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
 
   systemctl start docker && systemctl enable docker
   docker version
   
11 导入镜像
  在k8s_images/docker_images目录下执行
    
     for i in $(ls *.tar);do docker load < $i;done
 
    
12 安装kubelet  kubectl kubeadm包
     在k8s_images目录下执行    
     rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
     rpm -ivh kubernetes-cni-0.6.0-0.x86_64.rpm kubelet-1.9.9-9.x86_64.rpm kubectl-1.9.0-0.x86_64.rpm
     rpm -ivh kubeadm-1.9.0-0.x86_64.rpm
           
13 启动kubelet 
   systemctl start kubelet && sudo systemctl enable kubelet
 
14  初始化Master(Master执行)
      kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16
    我执行的时候出现没有默认路由的错误,最后发现是我设置静态IP的时候忘了分配网关导致的,设置好网关重新执行
      发现存在错误
      
      cat /var/log/message
      
 
      是kubelet默认的cgroup的driver和docker的不一样导致的,docker默认的cgroupfs,kubelet默认为systemd,编辑10-                             kubeadm.conf修改为cgroupfs   (node也需要修改)
      vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
   
 
     重启
      systemctl daemon-reload && systemctl restart kubelet
      环境reset
      kubeadm reset
      重新初始化
      kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16

 
      kubeadm join 这句话要记录下来 node节点加入master的时候要用到
     
     忘了可以通过 kubeadm token list查看
     默认token 24小时就会过期,后续的机器要加入集群需要重新生成token
     kubeadm token create
     查看kubelet状态
      systemctl status kubelet
      
 
15 此时root用户还不能使用kubelet控制集群需要,配置下环境变量(Master执行)

对于非root用户

mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
    对于root用户
    export KUBECONFIG=/etc/kubernetes/admin.conf
    也可以直接放到~/.bash_profile
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
    source一下环境变量
source ~/.bash_profile

kubectl version查看版本

  
 
  
16  安装网络,可以使用flannel、calico、weave、macvlan这里我用的flannel(Master执行)
   
   kube-flannel.yml里面的网段要和 kubeadm --pod-network-cidr设置的一致 默认是10.244.0.0/16
   在k8s_images目录下执行 
   kubectl create -f kube-flannel.yml
 
 
17 节点加入Master(Node执行)
     执行上面保存的kubeadm join 这句话
     kubeadm join --token f22fa7.6a1d26bae177b5f4 192.168.57.1:6443 --discovery-token-ca-cert-hash             sha256:2043570da1eaebcf9229910b68b0840cc1080712f20e682504be317aae824d9c

 
18 验证node 和pod 如下图代表Kubernetes 1.9.0 离线安装成功(Master执行)
  kubectl get nodes
  
 
  kubectl get pods --all-namespaces
   
 
  docker ps
   
 
19 部署kubernetes-dashboard(Master执行)
     编辑kubernetes-dashboard.yaml  设置type为 NodePort ,设置在范围30000-32767内的任意端口,我设置的是32000,(端口范围可以通过kube-apiserver.yaml修改)
   
 
     kubectl create -f kubernetes-dashboard.yaml
   
   
     设置验证方式默认验证方式有kubeconfig和token,这里都不用,我们使用basicauth的方式进行apiserver的验证。

创建/etc/kubernetes/pki/basic_auth_file, 用于存放用户名、密码、用户ID。

  echo 'admin,admin,2' > /etc/kubernetes/pki/basic_auth_file

编辑kube-apiserver.yaml,给kube-apiserver添加basic_auth验证

vi /etc/kubernetes/manifests/kube-apiserver.yaml

 

添加- --basic_auth_file=/etc/kubernetes/pki/basic_auth_file,wq保存。保存后若API pod停止了

然后重启kubelet服务:

  systemctl restart kubelet        ,kubelet 会重启 kube-apiserver Pod

ps:-与--之间的不是空格

更新apiserver

     kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
 

授权,k8s 1.6以后的版本都采用RBAC授权模型,给admin授权默认cluster-admin是拥有全部权限的,将admin和cluster-admin bind这样admin就有cluster-admin的权限。

    kubectl create clusterrolebinding login-on-dashboard-with-cluster-admin --clusterrole=cluster-admin --user=admin

验证apiserver

curl --insecure https://192.168.57.1:6443 -basic -u admin:admin
     
 

通过火狐浏览器访问https://192.168.57.2:32000,192.168.57.2是节点IP

 

基本下面输入用户名密码登录后页面

 
注:由于我在当前主机上装的时候忘了一些截图,所以上面部分截图是我在别的上装的时候的截图

CentOS7-部署kubernetes的更多相关文章

  1. Centos7部署kubernetes API服务(四)

    1.准备软件包 [root@linux-node1 bin]# pwd /usr/local/src/kubernetes/server/bin [root@linux-node1 bin]# cp ...

  2. [Kubernetes]CentOS7部署Kubernetes集群

    环境介绍及安装前准备 三台机器,用于部署k8s的运行环境: 节点 ip Master 192.168.243.138 Node1 192.168.243.139 Node2 192.168.243.1 ...

  3. Centos7部署Kubernetes集群

    目录贴:Kubernetes学习系列 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作系统采用Centos7.3 64位,细节如下. [root@localhost ~]# uname -a ...

  4. centos7部署kubernetes

    参考:https://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html 1.环境介绍及准备: 1.1 物理机操作系统 物理机操作系统采用Centos7.3 ...

  5. Centos7部署Kubernetes集群(单工作节点)+配置dashboard可视化UI

    目标:docker+kubernetes+cadvosor+dashboard 一:物理硬件 两台虚拟机(centos7):一台做为主节点(master),一台做为工作节点(node) [root@M ...

  6. Centos7部署kubernetes准备工作(一)

    一.准备工作: 1.创建三台虚拟机:(在node1配置好环境,然后关机克隆出node2.node3.并修改网卡.主机名即可) linux-node1.example.com 192.168.43.21 ...

  7. Centos7部署kubernetes Proxy(七)

    1.配置kube-proxy使用LVS(三个节点都装上去) [root@linux-node1 ssl]# yum install -y ipvsadm ipset conntrack [root@l ...

  8. Centos7部署kubernetes集群CA证书创建和分发(二)

    1.解压软件包 [root@linux-node1 ~]# cd /usr/local/src/ [root@linux-node1 src]# ls k8s-v1.10.1-manual.zip [ ...

  9. Centos7部署kubernetes测试k8s应用(九)

    1.创建一个deployment [root@linux-node1 ~]# kubectl run net-test --image=alpine --replicas=2 sleep 360000 ...

  10. centos7 使用kubeadm 快速部署 kubernetes 国内源

    前言 搭建kubernetes时看文档以及资料走了很多弯路,so 整理了最后成功安装的过程已做记录.网上的搭建文章总是少一些步骤,想本人这样的小白总是部署不成功(^_^). 准备两台或两台以上的虚拟机 ...

随机推荐

  1. python中with语句的使用

    引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用) ...

  2. python获取最大值

    python2 中获取int最大值 import sys print sys.maxint 但是在python3中,报错: AttributeError: module 'sys' has no at ...

  3. 使用Spring基于应用层实现读写分离(一)基础版

    背景 我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案, 其中一个是主库,负责写入数据,我们称之为:写库: 其它都是从库,负责读取数据 ...

  4. JVM----双亲委派模型

    加载类的开放性 我们在了解双亲委派模型之前,不得不先了解一下什么是类加载器.虚拟机设计团队之初是希望类加载过程“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作能放到虚拟机外部实现,以便于让 ...

  5. 基于角色的权限控制系统(role-based access control)

    role-based access control(rbac),指对于不同角色的用户,拥有不同的权限 .用户对应一个角色,一个角色拥有若干权限,形成用户-角色-权限的关系,如下图所示.当一个用户进行访 ...

  6. R-CNN论文阅读摘要

    论文链接: https://arxiv.org/pdf/1311.2524.pdf Abstract Our approach combines two key insights: (1) one c ...

  7. Mysql Errors

    Mysql Errors Table of Contents 1. ERROR 1044 1.1. 42000 2. ERROR 1045 2.1. 28000 2.1.1. 无登录权限 2.1.2. ...

  8. Eclipse中给SVN添加项目

    SVN添加项目, 1.在svn资源库中的目标路径上右键,新建一个远程文件夹,文件夹名称和项目名称一致即可. 2,在新建的远程目录上右键,选导入,导入我们要放到svn的本地项目. 3.导入时选中项目的名 ...

  9. Android云端APP

    使用HbuilderX打包APP 首先创建一个 5+APP+使用MUI项目 <!DOCTYPE html> <html> <head> <meta chars ...

  10. React Native细节知识点总结<一>

    1.propTypes: static propTypes = { name:PropTypes.string, ID:PropTypes.number.isRequired, } 'isRequir ...