Kubernetes kubeadm在Linux下的安装
实践环境
CentOS-7-x86_64-DVD-1810
开始之前
确保每台机器2G内存或以上
确保每台机器双核CPU或以上
确保所有机器网络互连
确认每个结点(node)的hostname,MAC,product_uuid唯一,Kubernetes用这些数值唯一确定集群中的结点
禁用Swap,以便kubelet正常工作
检查网络适配器
如果拥有多个网络适配器,无法通过默认路由访问Kubernetes组件,推荐给指定适配器添加到Kubernetes集群IP路由。
确保桥接通信(bridged traffic)对iptables可见
确保br_netfilter模块已加载,可通过执行``lsmod | grep br_netfilter查看是否已加载,如果没有,可通过执行命令sudo modprobe br_netfilter`加载
检查必备端口
确保以下必备端口未被占用
Control-plane node(s)
| Protocol | Direction | Port Range | Purpose | Used By |
|---|---|---|---|---|
| TCP | Inbound | 6443* | Kubernetes API server | All |
| TCP | Inbound | 2379-2380 | etcd server client API | kube-apiserver, etcd |
| TCP | Inbound | 10250 | kubelet API | Self, Control plane |
| TCP | Inbound | 10251 | kube-scheduler | Self |
| TCP | Inbound | 10252 | kube-controller-manager | Self |
Worker node(s)
| Protocol | Direction | Port Range | Purpose | Used By |
|---|---|---|---|---|
| TCP | Inbound | 10250 | kubelet API | Self, Control plane |
| TCP | Inbound | 30000-32767 | NodePort Services† | All |
禁用Swap
临时禁用
# swapoff -a
避免重启机器后失效,编辑etc/fstab,注释掉swap所在记录行
# vi /etc/fstab
#UUID=2a2ac056-92c2-4cb9-9525-0291498f3d62 swap swap defaults 0 0
如果不禁用,运行kubeadm时,会提示如下错误
[ERROR Swap]: running with swap on is not supported. Please disable swap
安装运行时
Kubernetes使用容器运行时在Pod中运行容器。Linux结点,Kubernetes使用CRI(Container Runtime Interface )同所选择的的容器运行时交互。
如果不指定运行时,kubeadm通过扫描熟知的Unix域名socket列表自动检测已安装容器运行时
以下列出了容器运行时及关联的的socket路径
Docker /var/run/dockershim.sock
containerd /run/containerd/containerd.sock
CRI-O /var/run/crio/crio.sock
如果检测到Docker和containerd同时存在,则优先使用containerd。除此之外,如果还存在其它运行时,则kebeadm会报错。
kubelet通过dockershim CRI实现Docker的集成
这里选择安装 Docker 19.03.9,安装过程略
安装kubeadm, kubelet 和 kubectl
kubeadm: 提供引导集群命令
kubelet: 提供在集群中运行所有机器组件的能力,以及其它事情,比如启动pod和容器
kubectl: 提供同集群交互的命令行工具
安装CNI插件(为大多数pod网络所需)
CNI_VERSION="v0.8.2"
sudo mkdir -p /opt/cni/bin
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
定义用于存放命令文件的目录
DOWNLOAD_DIR=/usr/local/bin
sudo mkdir -p $DOWNLOAD_DIR
注意:DOWNLOAD_DIR目录必须可写
安装crictl(为kubeadm/Kubelet CRI)所需)
CRICTL_VERSION="v1.17.0"
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
安装kubeadm, kubelet 和 kubectl并添加kubelet系统服务
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
cd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl}
sudo chmod +x {kubeadm,kubelet,kubectl}
RELEASE_VERSION="v0.4.0"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
sudo mkdir -p /etc/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
设置允许开机启动kubelet,并立即启动
systemctl enable --now kubelet
配置供kubelet使用的cgroup驱动
如果使用Docker,kubeadm会自动检测cgroup驱动,并在运行时,自动配置/var/lib/kubelet/config.yaml中对应驱动配置
如果使用其它CRI,需要传递cgroupDriver 给 kubeadm init,形如以下
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: <value>
查看更多,请查看 Using kubeadm init with a configuration file.
注意,仅CRI驱动不是cgroupfs时才需要传递cgroupDriver ,因为cgroupfs为kubelet的默认驱动。
Kubernetes kubeadm在Linux下的安装的更多相关文章
- Linux下yum安装MySQL
写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
- 【夯实PHP基础系列】linux下yum安装PHP APC
Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...
- Linux学习心得之 Linux下ant安装与使用
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...
- Linux下php安装Redis扩展
说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php7/etc/php.ini Nginx安装目录:/usr/loca ...
- linux下编译安装vim7.4并安装clang_complete插件
linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...
- linux下编译安装curl
linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...
- linux下编译安装boost库
linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...
- linux下VMware安装出现的问题解决
linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载 ...
- Linux下编译安装Apache Http Server
Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...
随机推荐
- Vue cli之安装
1.安装node.js Node.js是一个新的后端(后台)语言,它的语法和JavaScript类似,所以可以说它是属于前端的后端语言,后端语言和前端语言的区别: 运行环境:后端语言一般运行在服务器端 ...
- Mybatis-Plus update不存在的数据返回值一定为零?
MP update不存在的数据返回值一定为零? 本文分为以下几个部分: 前言 验证过程 结论 前言 MP(mybatis-plus),在 MyBatis 的基础上只做增强不做改变,为简化开发.提高 ...
- Android 13 - Media框架(23)- ACodecBufferChannel
关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解 ACodecBufferChannel 上一节我们了解到input buffer 和 output buffer 是如何分配的了, ...
- 🔥 FolkMQ v1.5.1 发布(“新式” 国产消息中间件)
FolkMQ 是个"新式"的消息中间件.强调:"小而巧"."简而强". 功能简表 角色 功能 生产者(客户端) 发布普通消息.Qos0消息. ...
- 『手撕Vue-CLI』拉取版本号
开篇 在上一篇文章中,给 nue-cli 添加了与用户终端交互的功能,这一次来实现一个拉取版本号的功能. 这个功能的背景是,有时候我们在使用脚手架的时候,不同版本的脚手架可能会有不同的功能,所以用户有 ...
- 抖音App动态调试
一.准备工作 1)接上一篇,下载砸过壳的抖音IPA 2)MonkeyDev环境 3)class_dump 二.使用MonkeyDev建立空的工程,拖入IPA到目标文件夹中 1)启动Xcode进行编译执 ...
- itest(爱测试)开源接口测试&敏捷测试&极简项目管理 7.0.0 发布,重大升级
(一)itest 简介及更新说明 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包 ...
- python+k8s(基础,遇到的问题)
python+k8s(基础,遇到的问题) CoreV1Api和ApiClient的区别 kubernetes.client.CoreV1Api kubernetes.client.ApiClient ...
- python-将多个表格的信息合并到一个表格中
1.环境 代码运行环境:python3.7 相关的库:xlrd.xlwt 2.目的 通过xlrd库读取各个表格的数据,通过xlwt库将读取到的数据写入到一个表格中. 3.实现 在工程目录下,有一个te ...
- c# 拖拽列表顺序 | 拖拽合并分组 | 移除分组功能
动图演示: 背景: 一开始做功能的时候没有增加排序的索引(sort-index),后来要求做拖拽排序功能:所以写了这个不需要初始排序就可以完成的拖拽功能:如果是table表格排序逻辑和这个相似,这里拿 ...