一、Installation

1、安装环境为CentOS 7

2、安装Docker

  • yum install -y docker
  • systemctl enable docker
  • systemctl start docker

3、安装CNI

  • cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=1
    repo_gpgcheck=1
    gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
    https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
    EOF
  • setenforce 0
  • yum install -y kubernetes-cni

4、安装kubernetes其他组件

  • yum install -y kubelet kubeadm kubectl

5、创建master node

  • kubeadm init --pod-network-cidr 10.244.0.0/16
  • mkdir -p $HOME/.kube
  • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  • sudo chown $(id -u):$(id -g) $HOME/.kube/config

6、创建minion node

  • 在master节点上调用`TOKEN=$(kubeadm token list | grep authentication,signing | awk '{print $1}')`
  • 在minion节点上调用`kubeadm join --token $TOKEN ${MASTER_IP:PORT}`加入集群
  • 调用`kubectl get nodes`可以观察节点是否加入

7、安装flannel,仅在master节点上操作

  • kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
  • kubectl apply -f  https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

需要注意的是,通过上述步骤,会自动将flannel安装到整个集群中,包括master节点和所有minion节点

8、检测安装是否成功

  1、在master节点调用`kubectl get pods --all-namespaces`,特别注意kube-dns-*和kube-flannel-*是否running,输出结果如下:  

    

  2、在master节点调用`ip route`,特别注意是否存在路由范围为"10.244.0.0/24"的"cni0"设备和路由范围为"10.244.0.0/16"的"flannel.1"设备,输出结果如下:

  

  3、调用`kubectl run -i --tty busybox --image=busybox`创建pod,然后用位于不同节点间的pod互ping,成功即可

二、Troubleshooting

1、如果通过`kubectl get pods --all-namespaces`命令观察到kube-flannel-*这个pod迟迟不能running

  调用`journalctl -u docker`发现错误为`cp: can't create '/etc/cni/net.d/10-flannel.conf': Permission denied`

  调用`setenforce 0`暂时关闭SELinux即可

2、最新版的kubernetes中,在添加minion节点时,可能会出现如下问题,导致minion无法加入节点:

  

  解决办法.....暂时没有.......

3、如果minion节点显示已经加入成功了,但是在master节点上调用`kubectl get nodes`后发现该节点并没有加入

  可以调用`kubectl get csr`查看是否有csr处于pending的状态,有的话,调用`kubectl certificate approve $CSR`将其确认即可

三、Reference

  1. https://github.com/kubernetes/frakti/blob/master/docs/deploy.md
  2. http://blog.frognew.com/2017/04/kubeadm-install-kubernetes-1.6.html
  3. http://tonybai.com/2016/12/30/install-kubernetes-on-ubuntu-with-kubeadm/

利用kubeadm部署kubernetes 1.7 with flannel的更多相关文章

  1. [原]使用kubeadm部署kubernetes(一)

    #######################    以下为声明  ##################### 在公众号  木子李的菜田 输入关键词:   k8s 有系列安装文档 此文档是之前做笔记在 ...

  2. [转帖]CentOS 7 使用kubeadm 部署 Kubernetes

    CentOS 7 使用kubeadm 部署 Kubernetes   关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...

  3. 02 . Kubeadm部署Kubernetes及简单应用

    kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...

  4. 附025.kubeadm部署Kubernetes更新证书

    一 查看证书 1.1 查看过期时间-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in ...

  5. 使用kubeadm部署Kubernetes v1.13.3

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...

  6. Kubeadm部署Kubernetes

    Kubeadm部署Kubernetes 1.环境准备 主机名 IP 说明 宿主机系统 k8s-master 10.0.0.101 Kubernetes集群的master节点 Ubuntu2004 k8 ...

  7. 使用kubeadm部署Kubernetes集群

    一.环境架构与部署准备 1.集群节点架构与各节点所需安装的服务如下图: 2.安装环境与软件版本: Master: 所需软件:docker-ce 17.03.kubelet1.11.1.kubeadm1 ...

  8. kubeadm部署Kubernetes集群

    Preface 通过kubeadm管理工具部署Kubernetes集群,相对离线包的二进制部署集群方式而言,更为简单与便捷.以下为个人学习总结: 两者区别在于前者部署方式使得大部分集群组件(Kube- ...

  9. 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)

    系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...

随机推荐

  1. 大型站点技术架构PDF阅读笔记(一):

    1.数据库读写分离: 2.系统吞吐量和系统并发数以及系统响应时间之间的关系: 3.系统负载的概念: 4.反向代理的概念: 5.使用缓存来读取数据: 6.利用cookie来记录session: 利用co ...

  2. unity shader(二)

  3. 关于linux PPA源问题

    添加PPA: 1.首先进入ubuntu系统,system—>administration—>update manager—>setting,在软件源界面,点击other softwa ...

  4. Linux之实用GDB技巧

    一.引言 在Linux下开发,肯定少不了与gdb打交道,而gdb的命令又非常多,有些是不常用的但是特殊情况下却是必须的,因此记录在此,以便翻阅 二.基本命令 前面是命令全名,在不混淆的情况下,可以简写 ...

  5. Struts1小案例问题教训总结(含中文乱码问题及解决)

    1. 提交form后页面空白,没有任何显示,Debug发现form的validate()以及action的execute()根本没有被调用. 原因:validate()和execute()有2个互为o ...

  6. Spring中的IOC

    在学习spring的时候,最常听到的词应该就是IOC和AOP了,以下,我从我的角度再次理解一下Spring里的IOC和AOP. IOC简单介绍 IoC(InversionofControl):IoC就 ...

  7. Unity中的特殊文件夹

    看了雨松MOMO的 Unity3D研究院之手游开发中所有特殊的文件夹学习了,做个笔记. 1.Editor Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor即可.不过我比较喜欢 ...

  8. [转]JS脚本抢腾讯云学生1元代金券

    转自:http://blog.csdn.net/lkxlaz/article/details/54909397 今天抢代金券,在网上看到的,虽然脚本很easy,但也mark一下吧. //make th ...

  9. Jmeter接口测试系列之参数化方法

    至于参数化的用途,我这里就不多说了,本文主要介绍最全.最强大的参数化方法,对参数化有一个彻底的认识,这里提供了多种参数化方法 1.jmeter参数化之用户变量   在测试计划里面添加一个用户自定义的变 ...

  10. 时间戳(Unix时间)

    /// <summary> /// 时间戳与DateTime互转 /// </summary> public class UnixOfTimeHelper { /// < ...