实践环境

CentOS-7-x86_64-DVD-1810

开始之前

确保每台机器2G内存或以上

确保每台机器双核CPU或以上

确保所有机器网络互连

确认每个结点(node)的hostnameMACproduct_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

如果检测到Dockercontainerd同时存在,则优先使用containerd。除此之外,如果还存在其它运行时,则kebeadm会报错。

kubelet通过dockershim CRI实现Docker的集成

这里选择安装 Docker 19.03.9,安装过程略

安装kubeadm, kubeletkubectl

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, kubeletkubectl并添加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驱动

如果使用Dockerkubeadm会自动检测cgroup驱动,并在运行时,自动配置/var/lib/kubelet/config.yaml中对应驱动配置

如果使用其它CRI,需要传递cgroupDriverkubeadm 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下的安装的更多相关文章

  1. Linux下yum安装MySQL

    写这篇文章的原因是:在刚开始使用Linux操作系统时想要搭建LAMP环境,于是开始在Google和百度上各种寻找资料,碰到了不是很多的问题后,我决定写这篇文章总结一下在Linux下yum安装MySQL ...

  2. LINUX下编译安装PHP各种报错大集合

    本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...

  3. 【夯实PHP基础系列】linux下yum安装PHP APC

    Alternative PHP Cache(可选PHP缓存),依赖于 PECL扩展库 用源码方式安装,直接yum就行了:首先要安装apc的依赖包:yum install php-pear php-de ...

  4. Linux学习心得之 Linux下ant安装与使用

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下ant安装与使用 1. 前言2. ant安装3. 简单的a ...

  5. Linux下php安装Redis扩展

    说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php7/etc/php.ini Nginx安装目录:/usr/loca ...

  6. linux下编译安装vim7.4并安装clang_complete插件

    linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...

  7. linux下编译安装curl

    linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...

  8. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  9. linux下VMware安装出现的问题解决

    linux下VMware安装出现的问题解决 linux下VMware安装出现的问题解决 报错信息 问题1liboverlay-scrollbar.so和libunity-gtk-module.so加载 ...

  10. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

随机推荐

  1. 【c++】函数模板

    语法: template<class & T1,class &T2> auto Add(T1 t,T2 t2) ->decltype(t+t2);   函数定义: t ...

  2. 异构数据源同步之数据同步 → datax 再改造,开始触及源码

    开心一刻 其实追女生,没那么复杂 只要你花心思,花时间,陪她聊天,带她吃好吃的,耍好玩的,买好看的 慢慢你就会发现什么叫做 打水漂 不说了,我要去陪她看电影了 前情回顾 异构数据源同步之数据同步 → ...

  3. .NETCore Nuget 发布包含静态文件 content file

    .NETCore 在.csproj引用资源中标记pack配置 <pack>true</pack>1例如 <ItemGroup> <Content Includ ...

  4. 薄书的pytorch项目实战lesson49-情感分类+蹭免费GPU

    项目来源 B站视频pytorch项目实战-情感分类问题 github lesson49-情感分类实战 1 实验环境 在这里和大家推荐一个学习ML和DL的一个实验运行平台,就是google的Colabo ...

  5. map数据类型

      MAP数据类型是一个类似于对象的数据类型             大型项目中会经常使用                      通过 构造函数来定义MAP数据类型             con ...

  6. Cage 字符串听课笔记

    困困困! KMP 注意到 KMP 的复杂度是均摊的,那么是否可以绕开? 注意到 KMP 实际上一个串的 ACAM,那么考虑可以类似的,在加入一个字符的同时维护 ACAM(考虑 ACAM 的构建过程,前 ...

  7. 手摸手教你把Ingress Nginx集成进Skywalking

    背景 在微服务大行其道的今天,如何观测众多微服务.快速理清服务间的依赖.如何对服务之间的调用性能进行衡量,成了摆在大家面前的难题.对此,Skywalking应运而生,它是托管在 Apache 基金会下 ...

  8. Idea克隆检出git项目

    1.我这里假设你已经安装好了Idea和Git环境 2. .

  9. 三月二十六日 安卓打卡app开发日志

    今天上午 将打卡逻辑代码优化了一下 之后每天就只可以打卡一次了 public static String daka(String time_s, String time_e, String text, ...

  10. mysql 8.0 客户端

    1.mysql 8.0 command line client 2.mysql workbench