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. 关于hbase的数据迁移

    场景: 一套自己编译的Hbase集群 A 一套自己通过cloudera平台搭建的Hbase集群 B 注意:( 我的两套集群是同一个网段的) 方式1:通过快照方式进行数据迁移(不需要提前建表) 1):首 ...

  2. 【洛谷4542】 [ZJOI2011]营救皮卡丘(最小费用最大流)

    传送门 洛谷 Solution 这是一道神仙题! 考虑这个东西是个啥. emmm,如果两个点要到达,一定不能经过比他们大的. 所以Floyd搞定两点距离然后费用流跑一遍就是答案了! 代码实现 /* m ...

  3. javascript操作表单

    表单元素除了可以运用上述所有DOM相关操作外,为了简化,还有一系列自己的属性和方法. 表单除了支持鼠标,键盘,更改和html时间之外,还支持一些表单特有的事件,如focus,change,blur等等 ...

  4. webstorm设置babel,使用es6

    原文链接:https://blog.csdn.net/peade/article/details/76522177 网上有很多关于如何设置babel的.我学习着设置,但总差那么几步,没能满足我的需求. ...

  5. chattr +i 锁定文件

    reboot machine, 查看DNS服务器配置文件\etc\resolv.conf, 里面的内容变回原来的样子. 原因是resolv.conf文件被系统程序自动维护.为了防止该文件被跟改,可以为 ...

  6. Graphics 使用一点点注意

    Form_Load 事件下绘制的结果会被 paint 刷新掉.也就等于没有绘制一样. Graphics g = this.CreateGraphics(); g.DrawRectangle(new P ...

  7. mysql 如何给大表添加字段

    1. 能不加字段就不要加, 能不修改字段就不要修改, 能不删除字段就不要删除, 等等为什么要删除字段呢? 如果没事,不要蛋疼的找事. 实际上,我们那次更新失败后, 我们并没有增加那个字段, 然后我们一 ...

  8. 20180817周在ubuntu上面使用kettle一些总结

    1 ubuntu上面安装mysql用户名和密码问题: ubuntu上面安装MySQL的时候,如果是自动安装,没设置密码的话,那么用户名不是root. 比如在ubuntu用文本工具打开:gedit /e ...

  9. plsql 查询中文乱码问题

    记录一下解决中文乱码 设置环境变量 set path=E:\app\Administrator\product\instantclient_10_2 set TNS_ADMIN=E:\app\Admi ...

  10. Jmeter接口测试 1=> 接口测试介绍

    第一节 接口测试概念 什么是接口测试概念:接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点. 测试的重点是要检查数据的交换,传递和控制管理过 ...