• docker version:19.03.14
  • kubernetes version:1.19.4

本文介绍使用kubeadm安装Kubernetes集群的简单过程。

使用kubeadm安装k8s过程

各节点安装的软件及操作:

  1. master,nodes:安装docker、kubelet、kubeadm、kubectl
  2. master:kubeadm init
  3. nodes:kubadm join

安装

基本配置

  1. 关闭iptables、firewalld、selinux
  2. br_filter
# 未启用模块则无此目录及文件;通过modprobe br_netfilter命令启用
# 查看值是否均为1
cat /proc/sys/net/bridge/bridge-nf-call-iptables
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
  1. 替换安装源

    替换安装源为国内速度较快的源

使用阿里云docker源安装docker

# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
yum makecache fast
yum -y install docker-ce
# Step 4: 开启Docker服务
service docker start # 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# yum -y install docker-ce-[VERSION]

使用阿里云kebernetes源安装kubernetes

# 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl 安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
  1. 时间一致

    确认服务器间时间同步一致
  2. 更换docker仓库
# 使用aliyun docker仓库或其它
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4bu92zt0.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

初始化kubernetes master

初始化命令

# 指定网络信息;10.244.0.0/16是flannel的默认地址段,学习使用期间为了省事建议不修改。
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12

错误解决

[ERROR Swap]: running with swap on is not supported

# 关闭Swap或添加ignore选项参数忽略
# 更改配置文件
cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
# 使用错误忽略参数再次执行
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12 --ignore-preflight-errors=Swap

初始化过程会拉取一些相关docker镜像包,也可以通过命令提前拉取,减少等待

kubeadm config images pull

初始化中的一些问题

安装kubernetes必须组件的一些镜像存储于google镜像站点,无法正常访问,可以通过网络上其他人已经共享的同步好的仓库来拉取这些必要的镜像

# 查看所要拉取的镜像
kubeadm config images list # 通过网络上其他人已共享的仓库拉取;指定仓库地址
kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.0.0.0/12 --ignore-preflight-errors=Swap --image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers"

初始化完成后的一些操作

按照提示进行以下操作

# 配置kubectl向API服务器请求时的验证信息
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

初始化完成后记得保存以下信息,然后在nodes节点上执行以下命令使其加入kubernetes集群

kubeadm join 172.16.25.130:6443 --token ****** \
--discovery-token-ca-cert-hash ******

确认可用

# 执行此命令会显示client和server版本,能够显示则表示两者均正常
kubectl version # 查看当前kubernetes namespaces
kubectl get ns # 查看当前pods,指定查看namespace为kube-system中的pods
kubectl get pods -n kube-system # 查看当前集群中的nodes
kubectl get nodes # 查看组件状态
# 查看组件状态时scheduler和controller-manager可能显示为unhealthy
# 由于默认这两个pod的非安全端口没有开启,健康检查时报错,但是由于本身服务是正常的,只是健康检查的端口没启,所以不影响正常使用。
# 若启用则修改/etc/kubernetes/manifests/kube-controller-manager.yaml和/etc/kubernetes/manifests/kube-scheduler.yaml中--port=0选项,将此行注释或删除后restart kubelet即可
kubectl get cs

node节点

  1. 安装docker、kubectl、kubelet、kubeadm
  2. 使用命令加入kubernetes集群
kubeadm join 172.16.25.130:6443 --token ****** \
--discovery-token-ca-cert-hash ******

部署flannel


# 安装完成后可通过kubectl get pod -n kube-system查看到flannel已经running
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Kubernetes-3.安装的更多相关文章

  1. Kubernetes 及安装注意事项

    Docker Desktop for Mac/Windows开启Kubernetes 及安装注意事项 Table of Contents 1 解决方案 2 注意事项 2.1 Choose Kubeco ...

  2. [转帖]Kubernetes中安装Helm及使用

    Kubernetes中安装Helm及使用 2018年07月02日 17:41:09 灬勿忘丶心安 阅读数 3699更多 分类专栏: K8S   版权声明:本文为博主原创文章,遵循CC 4.0 BY-S ...

  3. Kubernetes kubeadm 安装记录

    Kubernetes kubeadm 安装记录 注:比较乱,都是一些预见到的错误 kubernetes yum 源 cat /etc/yum.repos.d/kubernetes.repo [kube ...

  4. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  5. Kubernetes上安装Metrics-Server

    操作场景 metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部 ...

  6. 3.在 Kubernetes 上安装 Gitlab CI Runner

    结合文章:1. 在 Kubernetes 上安装 Gitlab ,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13852854.html 总结: 结合开头的文章 ...

  7. kubernetes centos 安装

    1.  安装       yum install -y  etcd  kubernetes   2.  配置         docker             /etc/sysconfig/doc ...

  8. kubernetes入门(10)kubernetes单机安装后 - helloworld

    前言 查看端口是否被监听了 ::netstat -tlp |grep 31002 我是用的yum install etcd kubernetes docker vim, 这样装的是1.5.2,不是最新 ...

  9. kubernetes的安装方法

    背景 自己学习k8s集群,无奈屌丝一枚,没钱配置vpn服务,安装k8s花费的时间太久了.为了小伙伴们可以快速安装k8s,我花了点时间整理了这篇博客,提供一个不用FQ就可以愉快安装k8s集群的方法. 主 ...

  10. kubernetes的安装

    获取源码 最新安装包下载地址,GitHub下载地址 本次实验的1.10.0的二进制包下载,百度网盘 机器环境 Kubernetes Roles IP地址 Hostname Master 192.168 ...

随机推荐

  1. P4074 [WC2013]糖果公园 树上莫队带修改

    题目链接 Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园游玩. 糖果公园的结构十分奇特,它由 nn 个游览点构 ...

  2. c语言实现--带头结点单链表操作

    可能是顺序表研究的细致了一点,单链表操作一下子就实现了.这里先实现带头结点的单链表操作. 大概有以下知识点. 1;结点:结点就是单链表中研究的数据元素,结点中存储数据的部分称为数据域,存储直接后继地址 ...

  3. Codeforces Round #547 (Div. 3) E. Superhero Battle (数学)

    题意:有一个HP为\(h\)的大怪兽,你需要轮流进行\(i\)次操作.每次可以使\(h+=d_i\)(\(d_i\)有正有负),当第\(n\)次操作完成后,再从第一次开始,问能否使得怪兽的HP变为\( ...

  4. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final) D. Extreme Subtraction (贪心)

    题意:有一个长度为\(n\)的序列,可以任意取\(k(1\le k\le n)\),对序列前\(k\)项或者后\(k\)减\(1\),可以进行任意次操作,问是否可以使所有元素都变成\(0\). 题解: ...

  5. __getattr__,__getattribute__和__get__的区别

    dir(object)  列出对象的大多数属性 getattr(object, name) 从object对象中获取name字符串指定的属性 hasattr(object, name) 如果objec ...

  6. ElasticSearch 搜索引擎概念简介

    公号:码农充电站pro 主页:https://codeshellme.github.io 1,倒排索引 倒排索引是一种数据结构,经常用在搜索引擎的实现中,用于快速找到某个单词所在的文档. 倒排索引会记 ...

  7. OpenStack Train版-6.安装nova计算服务(计算节点)

    安装nova计算服务(computel01计算节点 192.168.0.20)安装软件包 yum install centos-release-openstack-train -y yum insta ...

  8. PyQt5笔记

    PyQt5 窗口类继承QMainWindow. 1.消息盒子QMessageBox 弹出一个窗口,根据选择的不同执行不同的操作.比如点击关闭后,实用消息盒子确认是否关闭. # 关闭QWidget将产生 ...

  9. 常用SQL语句1-增删改查

    一.名词解释 RDBMS 即关系数据库管理系统(Relational Database Management System)的特点: 1.数据以表格的形式出现 2.每行为各种记录名称 3.每列为记录名 ...

  10. apache 解析漏洞(CVE-2017-15715)

    在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下 0x01 正则表达式中的 '$' apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾 ...