在linux通过kubeadm搭建kubernetes群集
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群集的更多相关文章
- kubernetes系列:(一)、kubeadm搭建kubernetes(v1.13.1)单节点集群
kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,本篇文章使用kubeadm搭建一个单master节点的k8s集群. 节点部署信息 节点主机名 节点IP 节点角 ...
- 使用Kubeadm搭建Kubernetes(1.12.2)集群
Kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,在2018年将进入GA状态,说明离生产环境中使用的距离越来 ...
- kubeadm搭建kubernetes集群之二:创建master节点
在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...
- kubeadm搭建kubernetes集群之三:加入node节点
在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...
- kubeadm 搭建kubernetes集群环境
需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...
- centos7使用kubeadm搭建kubernetes集群
一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2 ...
- [转帖] kubeadm搭建kubernetes集群
http://www.bladewan.com/2018/01/02/kubernetes_install/ 学习中 kubernetes V1.9安装(附离线安装包和离线镜像) 2018-01-0 ...
- 使用kubeadm搭建Kubernetes(1.10.2)集群(国内环境)
目录 目标 准备 主机 软件 步骤 (1/4)安装 kubeadm, kubelet and kubectl (2/4)初始化master节点 (3/4) 安装网络插件 (4/4)加入其他节点 (可选 ...
- kubeadm搭建kubernetes集群之一:构建标准化镜像
使用docker可以批量管理多个容器,但都是在同一台电脑内进行的,这在实际生产环境中是不够用的,如何突破单机的限制?让多个电脑上的容器可以像单机上的docker-compose.yml管理的那样方便呢 ...
随机推荐
- struts的status属性
struts2 <s:iterator> status属性 转载▼ iterator标签主要是用于迭代输出集合元素,如list set map 数组等,在使用标签的时候有三个属性值得我 ...
- python并行编程学习之并行计算存储体系结构
基于指令和可被同时处理的存储单元的数目,计算机系统可以分为以下四种类目: 单指令,单数据单元(SISD)在该体系结构中,计算机是单处理器机器,一次只能用单一的指令来操作单一的数据流.在SISD中,机器 ...
- (转)C++常见问题: 字符串分割函数 split
http://www.cnblogs.com/dfcao/p/cpp-FAQ-split.html C++标准库里面没有字符分割函数split ,这可太不方便了,我已经遇到>3次如何对字符串快速 ...
- cxf开发webservice服务器+客户端(各种类型的参数传递返回)
开发环境:eclipse3.7+jdk1.6.0_29+tomcat6.0.37 XFire搭建webservice: http://www.cnblogs.com/gavinYang/p/35253 ...
- 前端PHP入门-003-echo离不开它,注释看人品
不要自以为是,瞪着双眼看是没有用的!因为你不是天才! 永远不要自欺欺人,写不出来代码就是不会. 不要问为什么?我头疼! 我接触的人当中,以为自己已经很很很牛X了,总是问为什么这么写? [心中吐槽]:我 ...
- Ant Design 通过 WeekPicker 获取一周的起止时间
项目中遇到了选择日期获取当前日期一周的周一和周日的日期,如下: 项目使用的是 ant design,所以第一时间想到了 DatePicker 中的 WeekPicker 组件,查询文档得到 WeekP ...
- POJ 1228 Grandpa's Estate 凸包 唯一性
LINK 题意:给出一个点集,问能否够构成一个稳定凸包,即加入新点后仍然不变. 思路:对凸包的唯一性判断,对任意边判断是否存在三点及三点以上共线,如果有边不满足条件则NO,注意使用水平序,这样一来共线 ...
- JQuery之validate入门
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Fast File System
不扯淡了,直接来写吧,一天一共要写三篇博客,还有两篇呢. 1. 这篇博客讲什么? Fast File System(FFS)快速文件系统,基本思想已经在在上一篇博客File System Implem ...
- GridControl详解(一)原汁原味的表格展示
Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多半借助Demo和英文帮助文档.网上具体的使用方法也多半零碎.偶遇一个简单而且 ...