由于墙的原因,国内要安装 kubernetes 非常的麻烦,因此只要解决这个问题,就可以顺利安装 kubernetes 的 三个官法工具 kubelet、kubeadm、kubectl。

安装环境:

OS:Ubuntu 18.04.1

  1. 添加相应的源

    我在这里使用阿里源, 命令如下:

    sudo vim /etc/apt/sources.list.d/kubernetes.list
    
    # 将下面的阿里源加入文件中
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main # 也可以选择中科大的源
    deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
  2. 下载kubelet、kubeadm、kubectl

    这里先运行一下 apt udpate, 会报错,原因是缺少相应的key,可以通过下面的命令添加(E084DAB9 为上面报错的key后8位)

    gpg --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
    gpg --export --armor E084DAB9 | sudo apt-key add -

    然后就可以正常下载了。

    apt-get update && apt-get install -y kubelet kubeadm kubectl
  3. 关闭swap

    如果不关闭kubernetes运行会出现错误, 即使安装成功了,node重启后也会出现kubernetes server运行错误。

    #暂时关闭,
    sudo swapoff -a # 永久关闭
    sudo vim /etc/fstab
    注释掉swap那一行就行
    虚拟机最好把内存分配调整到2G以上,否则关掉swap会导致图形界面难以进入。
  4. 获取镜像

    由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内阿里的镜像站获取。

    kubeadm config images list

    获取镜像列表后可以通过下面的脚本从阿里云获取:

    images=(
    kube-apiserver:v1.13.4
    kube-controller-manager:v1.13.4
    kube-scheduler:v1.13.4
    kube-proxy:v1.13.4
    pause:3.1
    etcd:3.2.24
    coredns:1.2.6
    )
    for imageName in ${images[@]} ; do
    docker pull registry.aliyuncs.com/google_containers/$imageName
    docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.aliyuncs.com/google_containers/$imageName
    done
  5. 初始化环境

    如果上面的镜像都下载好了,这步就比较简单了,直接运行下面的命令就行了

    kubeadm init --apiserver-advertise-address 172.16.30.140 --pod-network-cidr=10.244.0.0/16
  6. 配置授权信息

    根据init成功后的提示命令进行。

    主要是为了保存相关的配置信息在用户目录下,这样不用每次都输入相关的认证信息。

    类似下面的命令,具体以你个人的提示为准

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  7. 保存添加Node的命令

    类似于

    kubeadm join 172.16.30.140:6443 --token aat409.plzb63oim93gjucq --discovery-token-ca-cert-hash sha256:5b906d68640eeddcd1381bf76dc0da5c522d71ceb89c547ac5a61fded064e54e

    这条命令一定保存好,因为后期没法重现的!!

  8. 删除node的命令:

    在master节点上执行:

    kubectl drain node1-k8s --delete-local-data --force --ignore-daemonsets
    kubectl delete node node1-k8s

    在节点上执行

    kubeadm reset
  9. 添加网络插件

    上面安装成功后如果通过查询kube-system下Pod的运行情况,会放下和网络相关的Pod都处于Pending的状态,这是因为缺少相关的网络插件,而网络插件有很多个(以下任选一个),可以选择自己需要的。

    • flannel

      需要在kubeadm init 时设置 --pod-network-cidr=10.244.0.0/16

      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml
    • weave

      sysctl net.bridge.bridge-nf-call-iptables=1
      kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
    • calico

      需要 kubeadm init 时设置 --pod-network-cidr=192.168.0.0/16

      kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
      kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
    • CNI bridge

      mkdir -p /etc/cni/net.d
      cat >/etc/cni/net.d/10-mynet.conf <<-EOF
      {
      "cniVersion": "0.3.0",
      "name": "mynet",
      "type": "bridge",
      "bridge": "cni0",
      "isGateway": true,
      "ipMasq": true,
      "ipam": {
      "type": "host-local",
      "subnet": "10.244.0.0/16",
      "routes": [
      {"dst": "0.0.0.0/0"}
      ]
      }
      }
      EOF
      cat >/etc/cni/net.d/99-loopback.conf <<-EOF
      {
      "cniVersion": "0.3.0",
      "type": "loopback"
      }
      EOF

最新文章

  1. 导出Excel通用工具类
  2. MYSQL权限表user操作
  3. 《DSP using MATLAB》 示例Example4.1
  4. 今天的学习——关于JS时间获取方面的小问题
  5. WebGL on iOS8 终于等到了这一天
  6. 《javascript高级程序设计》 第20章 JSON
  7. (medium)LeetCode .Implement Trie (Prefix Tree)
  8. 通过 PHP 判断用户的设备是否是移动设备
  9. 判断ie,并确定其版本号
  10. 求交集,差集,并集,善用java的set
  11. Eclipse导入项目常见问题----乱码问题03
  12. SpringBoot之简单日志配置
  13. JAVA IO分析一:File类、字节流、字符流、字节字符转换流
  14. FastReport编程方式给Picture控件赋值
  15. Web of science数据下载以数据处理
  16. Tea for Mac(mac笔记软件)中文版
  17. Java8-对map排序
  18. Rhino学习教程——1.1
  19. .net core 存储base64的图片或文件
  20. jquery对append进的元素的监听操作

热门文章

  1. python面试的100题(15)
  2. 一点点学习PS--实战七
  3. 深度优先搜索 DFS(Depath First Search, DFS)
  4. 对malloc和free和数据结构和算法的一些感触
  5. [AST Babel Plugin] Hanlde ArrowFunction &amp;&amp; FunctionExpression
  6. Git 时光穿梭机
  7. Redis08——Redis五大数据类型 hash
  8. spring(二):体系结构&amp;核心模块
  9. [lua]紫猫lua教程-命令宝典-L1-01-09. string字符串函数库
  10. awk从放弃到入门(1):awk基础