此文作为学习《Kubernetes权威指南》的相关笔记,可以参考,不适合直接使用

参考文章:

https://www.jianshu.com/p/cd4d1fde08bc

https://blog.51cto.com/536410/2347614

https://blog.51cto.com/lullaby/2402255

https://blog.csdn.net/wchbest/article/details/88873965

0、安装准备

检查宿主机CPU核心数大于等于2

关闭防火墙服务(不安全的懒人配置

# systemctl disable firewalld
# systemctl stop firewalld

禁用SELinux

# setenforce 0

禁用swap

# swapoff -a
# echo "vm.swappiness = 0">> /etc/sysctl.conf
# sysctl -p

ps.后续发现这个方法在我的环境上并没有永久禁用swap,真正永久禁用的方法见:https://blog.csdn.net/qq_38093301/article/details/103393351

修改docker镜像站为国内站点(不知道阿里云和官方哪个好用

# echo '{"registry-mirrors": ["https://registry.docker-cn.com"]}' > /etc/docker/daemon.json

普通用户获取sudo使用权限

# visudo

添加:XXX为普通用户名

root    ALL=(ALL)       ALL
XXX    ALL=(ALL)       ALL

1、配置yum源,使用阿里云镜像仓库

# vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
qpgcheck=0

ps:Gpgcheck是GPG验证是否开启的选项,1是开启,0是不开启,一般情况可以关掉。
GPG是加密和数字签名的免费工具,大多用于加密信息的传递。除了仅用密码加密外,GPG最大的不同是提供了“公钥/私钥”对。利用一方的“公钥”别人加密信息不再需要告诉密码,随时随地都能发送加密信息。而这种加密是单向的,只有一方的“私钥”能解开加密。数字签名又是另一大使用方向。通过签名认证,别人能确保发布的消息来自一方,而且没有经过修改。

>>坑1:文件夹名kubernetes-el7-x86_64中el7打成了e17 = =

直接访问http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ 可以看到该镜像仓库路径

访问根目录,可以看到阿里云提供的容器镜像列表:

2、使用yum install安装kubelet、kubeadm、kubectl

#yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

其中--disableexcudes用于关闭配置文件中的排除

--disableexcludes=[repo]
                        disable exclude from main, for a repo or for
                        everything
  --disableincludes=[repo]
                        disable includepkgs for a repo or for everything

>>坑2 出现Public key for XXX.rpm is not installed

参考文章:https://blog.csdn.net/cy309173854/article/details/69265738 配置失败,有待研究

使用阿里云给出的安装方式:

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
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

安装成功

3、启动docker、kubelet并设置自动启动

systemctl enable kubelet && systemctl start kubelet

systemctl docker && systemctl start docker

4、查看kubeadm命令和参数列表

Available Commands:
  alpha       Kubeadm experimental sub-commands
  completion  Output shell completion code for the specified shell (bash or zsh)
  config      Manage configuration for a kubeadm cluster persisted in a ConfigMap in the cluster
  help        Help about any command
  init        Run this command in order to set up the Kubernetes control plane
  join        Run this on any machine you wish to join an existing cluster
  reset       Performs a best effort revert of changes made to this host by 'kubeadm init' or 'kubeadm join'
  token       Manage bootstrap tokens
  upgrade     Upgrade your cluster smoothly to a newer version with this command
  version     Print the version of kubeadm

Flags:
      --add-dir-header           If true, adds the file directory to the header
  -h, --help                     help for kubeadm
      --log-file string          If non-empty, use this log file
      --log-file-max-size uint   Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
      --rootfs string            [EXPERIMENTAL] The path to the 'real' host root filesystem.
      --skip-headers             If true, avoid header prefixes in the log messages
      --skip-log-headers         If true, avoid headers when opening log files
  -v, --v Level                  number for the log level verbosity

5、导出默认配置、修改、备用

# cd /

# kubeadm config print init-defaults >init.default.yaml

# vim init.default.yaml

修改如下:

apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
imageRepository: docker.io/dustise
kubernetesVersion: v1.14.0
networking:
 podSubnet: "192.168.0.0/16"

存储为init-config.yaml

6、下载Kubernetes相关镜像

# kubeadm config images pull --config=init-config.yaml

>>坑3

this version of kubeadm only supports deploying clusters with the control plane version >= 1.15.0. Current version: v1.14.0

通过报错内容可以看出书中提供的版本太老,不被当前kubeadm支持

单纯更改版本号kubernetesVersion: v1.15.0也会报错,由于本书提供的imageRepository:docker.io/dustise没有提供更新的版本

进去dockerHub查看:

可以看出没有更新的版本,关于Kubernetes镜像拉取问题,解决方式如下:

(1)查看当前配置中需求的镜像

[root@localhost /]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.16.3
k8s.gcr.io/kube-controller-manager:v1.16.3
k8s.gcr.io/kube-scheduler:v1.16.3
k8s.gcr.io/kube-proxy:v1.16.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2

(2)在dockerHub中寻找含有以上镜像的Repository,修改yaml文件

(3)或者参考https://blog.csdn.net/wchbest/article/details/88873965 拉取镜像后修改Tag

(4)https://blog.51cto.com/536410/2347614 中提供了一种在拉去镜像时指定镜像仓库的方法

kubeadm init \

--apiserver-advertise-address=192.168.92.56 \

--image-repository registry.aliyuncs.com/google_containers \

--kubernetes-version v1.13.1 \

--pod-network-cidr=10.244.0.0/16

7、运行kubeadm init命令安装Master

# kubeadm init --config=init-config.yaml

运行后,显示如下信息:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.79.132:6443 --token mc8ng5.pi0094m1p8c90r9z \
    --discovery-token-ca-cert-hash sha256:2476c042ff1997f8ae17098d5f581474102788756dd37f7859b496ad52eec052

按要求依次运行:

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

Master节点安装成功!

【Kubernetes】在CentOS7上通过kubeadm工具快速安装Kubernetes集群(一)相关推荐

  1. 【kafka专栏】使用shell脚本快速安装kafka集群(含视频)

    我们本节来正式安装kafka集群,安装kafka集群主要的方式有两种:一种是纯手动安装,一种是使用自动化shell脚本安装.纯手动安装的方式需要一台服务器.一台服务器的去操作,在服务器较多的情况下工作 ...

  2. 2、使用 kubeadm 方式快速部署K8S集群

    文章目录 一.kubernetes 官方提供的三种部署方式 二.使用kubeadm搭建k8s集群 2.1 基础环境设置 2.2 安装Docker 2.3 添加kubernetes软件源 2.4 安装k ...

  3. [享学Eureka] 十九、远程通信模块:EurekaHttpClients工具快速构建ClusterResolver集群解析器

    使人疲惫的不是远方的高山,而是鞋里的一粒沙子. –> 返回Netflix OSS套件专栏汇总 <– 代码下载地址:https://github.com/f641385712/netflix ...

  4. 『Kubernetes』在Linux中快速安装K8S集群

  5. k8s从入门到放弃--使用kubeadm快速安装kubernetes

    kubeadm是Kubernetes官方提供的用于快速安装 Kubernetes 集群的工具,通过将集群的各个组件进行容器化安装管理,通过kubeadm的方式安装集群比二进制的方式安装要方便不少,但是 ...

  6. Kubernetes教程(十一)---使用 KubeClipper 通过一条命令快速创建 k8s 集群

    来自:指月 https://www.lixueduan.com 原文:https://www.lixueduan.com/posts/kubernetes/11-install-by-kubeclip ...

  7. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

  8. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  9. 教你在Kubernetes中快速部署ES集群

    摘要:ES集群是进行大数据存储和分析,快速检索的利器,本文简述了ES的集群架构,并提供了在Kubernetes中快速部署ES集群的样例:对ES集群的监控运维工具进行了介绍,并提供了部分问题定位经验,最 ...

最新文章

  1. Toast 位置的改变 和 Toast的简单用法
  2. 协议分析中的TCP/IP网络协议
  3. 最快69秒逆向DRAM地址映射,百度设计的这款逆向工具如何做到快速可靠?
  4. python3.x安装cv2失败
  5. WinXP下At,Schtask和Eventtriggers命令实例(一)
  6. linux怎么重命名多个文件,在Linux中如何一次重命名多个文件详解
  7. 【alibaba-cloud】网关整合sentinel实现限流
  8. android从放弃到精通 第三天 我还活着
  9. python读取excel某一行内容-python3读取excel文件只提取某些行某些列的值方法
  10. 玩转Mixly – 9、Arduino AVR编程 之 函数
  11. jzoj6803-NOIP2020.9.26模拟tom【构造】
  12. Mesos容器引擎的架构设计和实现解析
  13. plupload 中文php,简单集成wangEditor plupload 到Tp3.2
  14. 计算机属性桌面打不开怎么办,win10电脑桌面图标属性打不开如何解决_win10无法打开桌面图标属性面板解决步骤...
  15. ROS学习笔记四:理解ROS节点
  16. IP地址转化为32位无符号数
  17. 从我的客户谈营销公司怎样将创业企业做大的
  18. bzoj 4417: [Shoi2013]超级跳马
  19. mysql数据库的封装
  20. 华为鸿蒙系统8月开源,华为正式宣布,鸿蒙系统8月开源,任正非却说:优先选用安卓...

热门文章

  1. iPhone的恢复模式进入与退出
  2. 负载均衡原理及LVS-NAT的部署
  3. 两个div水平并排的方式
  4. 计算机学院毕业设计文化衫,定制毕业文化衫设计案例 数学与统计学院文化衫设计图案...
  5. ArrayList 这是真李逵还是假李逵?
  6. 中国锂离子电池隔膜行业市场深度调研与发展趋势报告
  7. 2021年5月10日 星期一 阴
  8. xss的那些有卵用和没有卵用(一)
  9. 2015-8-16,来到魔都上海,开始我全新的DBA生涯
  10. MAE、MAPE、MSE和RMSE的MATLAB代码