kubeadm是一个命令行的工具,它简化了创建和管理kubernetes cluster的步骤。kubeadm利用Docker的功能进行快速的部署,支行kubernetes master和etcd服务器作为系统服务是以容器的方式呈现的。当触发kuberadm命令时,容器服务将会直接联系在kubernetes node上的Kubelet.kubadm也会检查每个组件是否健康。通过kubeadm设置步骤,你可以避免一连串的安装和配置命令。

一. 搭建群集之前以下条件需要满足:

1. 每个节点都有唯一的MAC地址和产品UUID:一些插件使用MAC 地址和产品UUID作为唯一的主机标识(比如,kube-dns),假如它们在群集中重复的话,kubeadm可能不会工作

//check MAC address of your NIC

$ ifconfig –a

//check the product UUID on your host

$ sudo cat /sys/class/dmi/id/product_uuid

2. 每个接点都有不同的主机名字:假如主机名称重复的话,kubernetes系统可能从多个主机收集日志或者状态,会被认为是一个。

3. Docker的安装

4. 有效的网络端口,要避免端口重复等情况。

Node role Ports System service
Master 6433 Kubernetes API server
10248/10250/10255 kubelet local healthz endpoint/Kubelet API/Heapster (read-only)
10251 kube-scheduleer
10252 kube-controller-manager
10249/10256 kube-proxy
2379/2380 etcd client/etcd server communication
Node 10250/10255 Kubelet API/Heapster(read-only)
30000-32767 Port range reserved for exposing container service to outside world

可以通过以下命令获取服务器目前侦听的端口:

// list every listening port

$ sudo netstat -tulpn | grep LISTEN

5. 网络工具包安装。 kubeadm要使用ethtool和etables两个软件,可以通过apt-get 或者yum去下载安装。

二. 搭建群集

1. 包的安装

(1)ubuntu

1)可以连通google时使用方法:

安装执行以下命令

xiodi@c720132:~$ sudo apt-get update && sudo apt-get install -y apt-transport-https

Hit:1 https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial InRelease

Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]

Hit:3 http://us.archive.ubuntu.com/ubuntu xenial InRelease                        

Get:4 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]       

Get:5 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]

Get:6 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [796 kB]

Get:7 http://us.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages [727 kB]

Fetched 1,846 kB in 3s (519 kB/s)                       

Reading package lists... Done

Reading package lists... Done

Building dependency tree      

Reading state information... Done

apt-transport-https is already the newest version (1.2.26).

0 upgraded, 0 newly installed, 0 to remove and 77 not upgraded.

官网配置命令:

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

OK

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

OK

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

OK

$ sudo bash -c 'echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" > /etc/apt/sources.list.d/kubernetes.list'

2)不能连通google时使用方法:

注意:以国内使用以上的镜像源时会报错,因为国内无法连通google。在国内使用以下方法进行替代。

1)从该地址下载gpg公钥

https://raw.githubusercontent.com/EagleChen/kubernetes_init/master/kube_apt_key.gpg

2)执行以下命令

$ cat kube_apt_key.gpg | sudo apt-key add -

3) 添加ustc镜像源

$ echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-$(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list

如果是ubuntu16.04以上版本,建议执行如下:

echo "deb [arch=amd64] https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list

3)安装软件包

//on kubenetes master

$ sudo apt-get update

$ sudo apt-get install –y kubelet kubeadm kubectl

//on kubenetes slave

$sudo apt-get update

$sudo apt-get install kubelet kubelet

Centos上面的安装:

1)使用google镜像库安装方法

$ sudo vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/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

2)在国内使用阿里镜像方法:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

3)安装包

// on kubernetes master

$ sudo yum install –y kubelet kubeadm kubectl

// on kubernetes node

$ sudo yum install –y kubelet

2. 其它相关设置

1) 查看selinux状态

// check the state of SELinux, if it has already been disabled, bypass below commands

$ sestatus

2)如果selinux状态是enforcing的话,那么使用以下命令关闭。

// disable SELinux through command

$  sudo setenforce 0

// or modify the configuration file

$ sudo sed –I 's/ SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

3) 重新启动系统

$ sudo reboot

4) 启动服务

$ sudo systemctl enable kubelet && sudo systemctl start kubelet

5) kubeadm初始化

$ kubeadm init

在linux通过kubeadm搭建kubernetes群集的更多相关文章

  1. kubernetes系列:(一)、kubeadm搭建kubernetes(v1.13.1)单节点集群

    kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,本篇文章使用kubeadm搭建一个单master节点的k8s集群. 节点部署信息 节点主机名 节点IP 节点角 ...

  2. 使用Kubeadm搭建Kubernetes(1.12.2)集群

    Kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,在2018年将进入GA状态,说明离生产环境中使用的距离越来 ...

  3. kubeadm搭建kubernetes集群之二:创建master节点

    在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...

  4. kubeadm搭建kubernetes集群之三:加入node节点

    在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...

  5. kubeadm 搭建kubernetes集群环境

    需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...

  6. centos7使用kubeadm搭建kubernetes集群

    一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...

  7. [转帖] kubeadm搭建kubernetes集群

    http://www.bladewan.com/2018/01/02/kubernetes_install/ 学习中 kubernetes V1.9安装(附离线安装包和离线镜像)  2018-01-0 ...

  8. 使用kubeadm搭建Kubernetes(1.10.2)集群(国内环境)

    目录 目标 准备 主机 软件 步骤 (1/4)安装 kubeadm, kubelet and kubectl (2/4)初始化master节点 (3/4) 安装网络插件 (4/4)加入其他节点 (可选 ...

  9. kubeadm搭建kubernetes集群之一:构建标准化镜像

    使用docker可以批量管理多个容器,但都是在同一台电脑内进行的,这在实际生产环境中是不够用的,如何突破单机的限制?让多个电脑上的容器可以像单机上的docker-compose.yml管理的那样方便呢 ...

随机推荐

  1. valgrind检查C/C++内存泄漏

    valgrind --tool=memcheck --leak-check=full ./httptest  valgrind --tool=memcheck --leak-check=full -- ...

  2. libevent文档学习(一)多线程接口和使用

    参考libevent官方提供的文档: http://www.wangafu.net/~nickm/libevent-book/Ref1_libsetup.html 这一篇主要翻译libevent多线程 ...

  3. Android的静默安装

    原文 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安 ...

  4. SSH免密码登录,实现数据传输备份

    简单来说,就是通过ssh-keygen -t rsa命令来产生一组公私钥,私钥是id_rsa,公钥是id_rsa.pub,把公钥上传到另一台服务器对应账号的.ssh/authorized_keys,即 ...

  5. 怎样把一个DIV放到另一个div右下角

    怎样把一个DIV放到另一个div右下角??? 借助CSS定位来实现,你将右下角的那个DIV放在另一个DIV里面,参考代码如下示: <div id="box1"> < ...

  6. Spring使用注解方式就行事务管理

    使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间<beans xmlns="http://www.springframework.org/schema/b ...

  7. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

  8. selenium.common.exceptions.ElementNotVisibleException: Message: element not visible处理方法:selenium针对下拉菜单事件的处理

    使用Selenium爬虫时,可能会遇到一些下拉菜单,动态加载,如果直接使用find_element_by_函数会报错,显示selenium.common.exceptions.ElementNotVi ...

  9. java用于控制可见性的4个访问修饰符

    仅对本类可见——private 对所有类可见——public 对本包的所有子类可见——protected 对本包可见——默认(很遗憾)不需要修饰符

  10. 在asp.net中使用加密数据库联接字符串

    在我们发布网站时,加密web.config,这样可以有效保证数据库用户和密码安全,其步骤如下: 1.添加密钥 执行:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50 ...