讲述如何通过离线的方式安装Kubernetes,主要用于对Kubernetes的研究学习,不建议在生产环境使用,安装包获取地址:

链接:https://pan.baidu.com/s/1nX5_memy8TKrnw1auOsB8Q 密码:zsw7

运行环境

名称 操作系统 配置 IP
master CentOS 7 4核2G内存 192.168.132.130
node CentOS 7 4核8G内存 192.168.132.136

服务器的配置建议给高一点,可以避免大部分问题。

Master安装

1.1 设置分区

如果有数据盘需要挂载,可以先设置分区,没有可跳过此步骤。

mkdir -p /var/lib/docker -- 创建存放docker的目录

fdisk -l  -- 查看硬盘信息,确定需要挂载的硬盘信息

mkfs.ext4 /dev/xvde -- 格式化硬盘

mount /dev/xvde /var/lib/docker 挂载磁盘

blkid --查看硬盘信息

vim /etc/fstab --将新分区的blkid写入/etc/fstab,内容参考:

UUID={uuid} /var/lib/docker ext4 defaults 0 0

保存退出,并重启机器。

1.2 修改主机名

Kubernetes的主机名不能包含大写字母,如主机名含有大写字母请先修改。

hostnamectl set-hostname xxxxx

1.3 关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

1.4 禁止SELINNUX

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

1.5 禁止swap

swapoff -a

编辑/etc/fstab,并注销掉swap

vi /etc/fstab

1.6 设置网桥

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
sysctl --system

1.7 安装docker

拷贝kubernetes-1.10.tar.gz到/root目录。

解压安装包:

cd /root

tar -zvxf kubernetes-1.10.tar.gz -C /root

tar -zvxf /root/k8s-1.10/docker-17.03.0-ce.tgz -C /root/k8s-1.10

拷贝docker:

chmod +x /root/k8s-1.10/docker/*

cp /root/k8s-1.10/docker/* /usr/bin/

cp /root/k8s-1.10/docker.service /etc/systemd/system/

运行docker:

systemctl daemon-reload

systemctl enable docker.service

systemctl restart docker.service

iptables -F

iptables -P FORWARD ACCEPT

iptables -F

1.8 加载Kubernetes相关镜像

docker load -i /root/k8s-1.10/kubernetes-1.10.tar

1.9 安装kubeadm,kubectl,kubelet,cni

cd /root/k8s-1.10

chmod +x /root/k8s-1.10/kube/*

cp /root/k8s-1.10/kube/* /usr/bin/

cp /root/k8s-1.10/kubelet.service /etc/systemd/system/

mkdir -p /etc/systemd/system/kubelet.service.d

cp /root/k8s-1.10/10-kubeadm.conf /etc/systemd/system/kubelet.service.d

systemctl daemon-reload

systemctl enable kubelet.service

mkdir -p /opt/cni/bin

cd /root/k8s-1.10

tar -zvxf cni-plugins-amd64-v0.6.0.tgz -C /opt/cni/bin

1.10 安装socat和ebtables

rpm -ivh /root/k8s-1.10/rpm/socat-1.7.3.2-2.el7.x86_64.rpm

rpm -ivh /root/k8s-1.10/rpm/ebtables-2.0.10-16.el7.x86_64.rpm

注:如果已经安装了可以跳过此步骤,如果已安装了ebtables,再次安装的话,会提示冲突,但不会影响,可忽略。

1.11 初始化Master

kubeadm init --kubernetes-version=1.10.0 --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.132.130

注:192.168.132.130为master物理ip。

保存好上图这句指令,后续节点加入集群需要使用。

1.12设置kubelet config环境变量

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

1.13 创建网络模型

cd /root/k8s-1.10

kubectl create -f calico.yaml

1.14 检查所有组件是否启动

kubectl get po -n kube-system

Node安装

重复步骤1.1到1.0

执行1.11中生成的指令:kubeadm join xxx...

注:如果失败,可在master上执行iptables -F再重新尝试加入。

在master执行kubectl get nodes查看节点加入情况:

给Node打标签,在master执行以下指令:

kubectl label node xxx kubernetes.io/role=node

测试部署

准备nginx的部署yaml,nginx.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
kubernetes.io/role: node
containers:
- name: nginx
image: nginx:1.13
ports:
- containerPort: 80 --- kind: Service
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
namespace: default
spec:
selector:
app: nginx
type: NodePort
ports:
- name: nginx
nodePort: 30000
port: 80
protocol: TCP
targetPort: 80

在master执行kubectl create -f nginx.yaml

使用node的地址http://192.168.132.136:30000/进行访问:

补充说明

在node上其实没必要安装所有master上的组件,但这样需要master,node各做一个安装包。为了方便,在node上安装了和master相同的组件。

Kubernetes 1.10.0离线安装的更多相关文章

  1. CDH5.10.0 离线安装(共3节点) 转

    1.安装方式 CDH的离线部署安装,即Parcel包(推荐) 2.角色规划 三个节点对应的角色: 3.基本环境配置(在每个节点上都要配置) (1)关闭防火墙 #/etc/init.d/iptables ...

  2. 从零到一,利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernetes v1.10.0

    说明 初步接触kubernets,记录学习过程 本教程目的利用kubeadm在ubuntu server 16.04 64位系统离线安装kubernets v1.10.0 环境信息 节点IP地址 角色 ...

  3. k8s Kubernetes v1.10 最简易安装 shell

    k8s Kubernetes v1.10 最简易安装 shell # Master 单节点快速安装 # 最简单的安装shell,只为快速部署k8s测试环境 #环境centos 7.4 #1 初始化环境 ...

  4. [原][工具][windows10安装][0x800F081F]windows 10 如何离线安装.net framework3.5 || 安装出现错误代码0x800F081F时如何解决

    参考解决方案:https://zhidao.baidu.com/question/1896669183365806820.html?fr=iks&word=win10%B0%B2%D7%B0+ ...

  5. CDH6.1.0离线安装——笔记

    一. 概述 该文档主要记录大数据平台的搭建CDH版的部署过程,以供后续部署环境提供技术参考. 1.1 主流大数据部署方法 目前主流的hadoop平台部署方法主要有以下三种: Apache hadoop ...

  6. IIS 10.0 无法安装 URL rewrite重写模块 2.0解决办法

    [问题描述]系统升级到Windows10后,IIS是10.0的,发现无法安装 URLRewrite重写模块 2.0. [解决办法]打开注册表编辑器,在HKEY_LOCAL_MACHINE\SOFTWA ...

  7. cdh-5.10.0搭建安装

    1.修改主机名为master, slave1, slave2 vim /etc/sysconfig/network HOSTNAME = master HOSTNAME = slave1 HOSTNA ...

  8. Eclipse 4.5.0 离线安装 Veloeclipse 插件

    下载 Veloeclipse 在 Eclipse eclipse-jee-mars-R-win32-x86_64 版本 4.5.0,Build id 为 20150621-1200,离线安装 Velo ...

  9. 分享ArcGIS Server 10.0修复安装心得

    最近,捣腾了一阵子在xp系统上安装ArcGIS Server10.0(下方均简称server),解决了一些初学者可能面临的problem,给大家贴出来, 希望能够给初学者一些有益的帮助. 我的系统环境 ...

随机推荐

  1. MySQL 水平拆分与垂直拆分详解

    前言:说到优化mysql,总会有这么个回答:水平拆分,垂直拆分,那么我们就来说说什么是水平拆分,垂直拆分. 一.垂直拆分 说明:一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将 ...

  2. PHP 消息队列 详解

    前言:之前做过的一些项目中有时候会接触到消息队列,但是对消息队列并没有一个很清楚的认知,本篇文章将会详细分析和归纳一些笔记,以供后续学习. 一.消息对列概念 从本质上说消息对列就是一个队列结构的中间件 ...

  3. echarts纵坐标使用科学计数法表示

    最近做项目使用echart画图,发现纵坐标的刻度太大或太小的情况,导致页面十分难看,甚至出现遮挡的情况,所以想办法用科学计数法表示 代码如下: var option = { title: Echart ...

  4. linux 命令之文件读取,head, tail, tailf, sed

    head 看文件的前100行head -100  filename tail/tailf查看文件的后100行tail -100  filename 或 tail -n 100  filename ta ...

  5. MySQL实战45讲学习笔记:索引(第四讲)

    一.索引模型 1.索引的作用: 索引的出现其实是为了提高数据查询的效率,就像书的目录一样 提高数据查询效率 2.索引模型的优缺点比较 二.InnoDB索引模型 1.二叉树是搜索效率最高的,但是实际上大 ...

  6. day22 栈 , 队列 , 约束和反射

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.请使用面向对象实现栈(后进先出)"""class Account: def ...

  7. Go语言入门: Chapter1

    书籍官网: http://www.gopl.io 环境配置: https://studygolang.com/articles/8284  安装go和vscode中go的相关插件 主要命令学习: go ...

  8. Spring ElasticsearchTemplate 经纬度按距离排序

    es实体,用 @GeoPointField 注解,值为:中间逗号隔开,如 29.477000,119.278536(经度, 维度) @Document(indexName = "v_inte ...

  9. AngularJs的基本使用(一)

    AngularJS 指令 AngularJS 通过 ng-directives 扩展了 HTML,AngularJS 指令是以 ng 作为前缀的 HTML 属性. ng-app 指令定义一个 Angu ...

  10. robotframework环境安装

    1.安装 robotframework 执行命令 pip install robotframework 2.安装seleniumlibrary 执行命令 pip install --upgrade r ...