1. kubeadm简介

kubeadm 是 Kubernetes 官方提供的一个 CLI 工具,可以很方便的搭建一套符合官方最佳实践的最小化可用集群。当我们使用 kubeadm 搭建集群时,集群可以通过 K8S 的一致性测试,并且 kubeadm 还支持其他的集群生命周期功能,比如升级/降级等。

2. 安装kebeadm

2.1 安装前准备

  • 禁用 swap

我们知道每个节点上都有个必须的组件,名为 kubelet,自 K8S 1.8 开始,启动 kubelet 时,需要禁用 swap 。或者需要更改 kubelet 的启动参数 --fail-swap-on=false。

  • cat /proc/swaps

  • swapoff -a

  • 将 /etc/fstab 中和上一条命令中输出的,和 swap 相关的挂载点都删掉

  • 确保要搭建集群的所有节点的 product_uuid和Mac 地址 均不相同

 /sys/class/dmi/id/product_uuid ip a
  • 确保需要的端口没被占用
netstat -ntlp |grep -E '6443|23[79,80]|1025[0,1,2]'
  • 部署docker
[root@slave ~]# yum install -y wget && wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[root@slave ~]# yum -y install docker-ce-18.06.1.ce-3.el7
[root@slave ~]# systemctl enable docker && systemctl start docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

2.2 正式安装

  1. 安装kubeadm
[root@slave ~]# curl -sSL https://dl.k8s.io/release/v1.11.3/bin/linux/amd64/kubeadm > /usr/bin/kubeadm
[root@slave ~]# chmod a+rx /usr/bin/kubeadm
[root@slave ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.3", GitCommit:"a4529464e4629c21224b3d52edfe0ea91b072862", GitTreeState:"clean", BuildDate:"2018-09-09T17:59:42Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
  1. 安装kubelet
[root@slave ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF
>
> [kubernetes]
> name=Kubernetes
> baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
> enabled=1
> gpgcheck=0
> repo_gpgcheck=0
> gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[root@slave ~]# yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
[root@slave ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
  1. 开启集群
[root@slave ~]# kubeadm init --apiserver-advertise-address=192.168.211.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

2.3 安装踩坑总结

  1. [ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]:/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[root@slave ~]# kubeadm init
W0427 21:22:15.098333    7591 version.go:98] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://storage.googleapis.com/kubernetes-release/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
W0427 21:22:15.098507    7591 version.go:99] falling back to the local client version: v1.15.0
[init] Using Kubernetes version: v1.15.0
[preflight] Running pre-flight checks[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

解决方案

echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
  1. [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.15.0
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.3.10: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`

解决方案

kubeadm init --apiserver-advertise-address=192.168.211.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

  1. [ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.0: output: v1.15.0: Pulling from google_containers/kube-apiserver

解决方案

docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
  1. The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@slave ~]# kubectl cluster-infoTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
The connection to the server localhost:8080 was refused - did you specify the right host or port?

解决方案

[root@slave ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
[root@slave ~]# source /etc/profile
[root@slave ~]# kubectl get nodes
NAME    STATUS     ROLES    AGE     VERSION
slave   NotReady   master   8m39s   v1.15.0

Kubernetes 入门(3)集群安装相关推荐

  1. 02.Kubernetes 和 KubeSphere 集群安装配置持久化存储(nfs)并通过StatefulSet动态为pod生成pv挂载

    Kubernetes 和 KubeSphere 集群安装配置持久化存储(nfs)并通过StatefulSet动态为pod生成pv挂载 简介 1. 安装配置前置环境 1.1 安装nfs文件系统 1.1. ...

  2. Kubernetes(k8s)入门及集群部署文档

    文章目录 一.k8s 快速入门 简介 部署方式的进化 k8s能做什么 架构 整体主从方式 Master 节点架构 Node 节点架构 概念 快速体验 流程叙述 二.k8s 集群安装 前置要求 了解ku ...

  3. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  4. k8s/Kubernetes集群安装

    文章目录 Kubernetes集群安装 1.集群规划 2.必要的准备 3.上传离线软件到servera,serverb,serverc 4.安装docker-ce软件,三台机器都需要安装 5.安装K8 ...

  5. Kubernetes集群安装 gatekeeper

    Kubernetes集群安装 gatekeeper 概述 先决条件 添加仓库 安装gatekeeper 安装Web UI 使用说明 创建约束模板 创建约束 数据复制 审计 卸载 概述 Kubernet ...

  6. 基于麒麟SP10服务器版的Kubernetes集群安装

    Kubernetes集群安装 1.规划 图1-1 节点IP地址规划 2.系统初始化 (1)为master.node1和node2节点设置主机名. [root@master ~]# hostnamect ...

  7. Kubernetes(K8s)集群安装部署

    Kubernetes(K8s)集群安装 Kubernetes(K8s)集群安装 1 .基本环境配置 1.1.Kubernetes集群规划 1.2.基础环境配置(所有节点) 1.2.1.Host文件修改 ...

  8. Kubernetes的学习笔记总结之k8s集群安装部署

    kubernets 集群安装部署. 安装 Docker 所有节点都需要安装 Docker. apt-get update && apt-get install docker.io 安装 ...

  9. 【kubernetes】k8s集群高可用部署安装和概念详细说明【含离线部署】,客户端连接haproxy访问高可用流程

    文章目录 说明 高可用原理 K8S多master节点架构图 测试环境说明 部署高可用 安装包准备[可选] 高可用架构说明 配置haproxy 说明[必看] 安装haproxy 编辑配置文件 配置etc ...

  10. centos7 下google Kubernetes(k8s)集群安装部署

    centos7 下google Kubernetes(k8s)集群安装部署 简介 安装环境 安装前准备 ECTD集群配置 命令含义: master节点配置 1.安装kubernetes和etcd 2. ...

最新文章

  1. eplan模板_EPLAN之3D箱柜清单自动生成
  2. 实现DDD领域驱动设计: Part 4
  3. 万用表怎么测量电池容量_万用表检测光电耦合器的常用技巧
  4. Android应用程序文件缓存getCacheDir()和getExternalCacheDir()
  5. 10.N个整数中查找是否相加为K[深度搜索]
  6. java运行 mavenzip包_JAVA开发必知工具-Maven-Maven生成可以直接运行的jar包的多种方式...
  7. 光影之路 GPU架构发展史(4/4)
  8. ssh全屏退出的办法
  9. 《Redis开发与运维》笔记-复制
  10. MacOS升级Big Sur后32位锐捷客户端排坑历程
  11. 堡垒机阿里云安装包安装
  12. 如何自定义快捷方式图标为自己的图片(保姆级教程)
  13. linux mysql backdoor_Linux SSH Backdoor分析排查
  14. k8s 部署 xxl-job-admin:2.3.0
  15. [转]一个中高级PHP工程师所应该具备的能力
  16. [转载]MATLAB内存管理
  17. 旅行青蛙南の旅旅行券_旅行时查找WiFi
  18. 终于还是对闲鱼下手了。闲鱼爬虫,idlefish spider来了
  19. python 的 do ~ while 语法
  20. L1-040 最佳情侣身高差 - java

热门文章

  1. 计算机网络(一)计算机网络体系
  2. mysql数据库安装教程32位,看这一篇就够了!
  3. ad09只在一定范围内查找相似对象_23、面向对象编程
  4. 标线markLine的用法
  5. python 编码规范
  6. scrapy.Spider的属性和方法
  7. php 设置中文 cookie, js获取
  8. Android学习第三天--事件监听器
  9. 多线程编程(9) - 认识等待函数 WaitForSingleObject
  10. 如何安装pylab:python如何导入matplotlib模块