K8S的漫长之路:部署K8S集群。

首先的话
为什么说K8S是一个漫长之路吧。因为我是一个小白,在搭建K8S的时候,总是会遇到很多很多的问题。每一个问题的解决的话,都是非常的吃力的。
目前我遇到的问题,
1 没有全局的意识,容易出错
2 身边没有老师,如果出现问题的话,只能百度
3 服务器是一个问题。
A 选择本地VMware 3台 可以先弄3G的内存来试试
B 买两条8G的内存条 大概500块钱
C 选择阿里云的服务器 月租 A学生服务器9.5每月 BCD 1核心2G内存1M带宽 82.6元 3台的话,大概250元每月
综合选择的话,先选VMware的不够的话再加内存。
现在机器的问题暂时解决了。(每一个问题对于我而言都是大问题,因为我真的是小白)。
现在的话,心里遇到一些挑战。就是如果跟着视屏学习的话,就是典型的复制粘贴了。这个的速度非常慢,而且成就感是比较低。所以的话,第一步是建议是先复制粘贴,然后再自己做一遍,这样才有成就感,而且还能写一下自己的心得。
步骤开始

1 先用finalshell连接主机

2 关闭firewalld,selinux,(iptables没有设定)(3台都要)

3 设置时间同步

date 显示格式 周几 月 日 时间 CST 年,Tue周二 Dec12月,
如果不能同步的话,可以用重启chronyd服务,达到同步网络时间的效果。

4 做本地的域名解析

5 需要禁止swap

,不然做K8S的时候会出错,出错的也可以设置可以使用swap,
查看内核版本的话可以用uname -a 和 cat /proc/verrsion。内核的话,也是一个模块。也可以到/usr/lib/module/下查看到的也是一个内核。

6 启动ipvs的内核模块

,这个模块跟网络有关系。可以这样理解,内核中也是有很多模块的,有一些模块的功能是没有使用的,如果要用的话,需要去安装和使用。内核先关可以到这个目录下查找/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/net/netfilter/ipvs 这个目录是ipvs的模块位置。每个节点都要。
启用ipvs模块的方法。
vim /usr/lib/modules/ipvs.modules

 #!/bin/bash
 ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"    #获取模块的地址
for mod in $(ls $ipvs_mods_dir |grep -o "^[^.]*"); #grep -o 只输出符合的字符。简单的理解这个正则吧,    ^表示开头  [^.]* 表示不是.并且是多个的。因为grep匹配字符的时候,是从左到右的。所以的话,这个grep的话,就是取.之前开头的字段。
do
    /sbin/modinfo -F filename $mod &> /dev/null   #modinfo会显示kernel模块的对象文件,以显示该模块的相关信息。   上面是查看模块的完整路径信息的
    if[$? -eq 0];then  #判断模块是否执行成功
       /sbin/modprobe $mod   #modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
    fi
 done .
 #来总结一下
 1 ipvs里面是有很多模块
 2 然后用modprode来载入模块就行了。

chmod a+x /usr/lib/modules/ipvs.modules
./usr/lib/modules/ipvs.modules

来一遍grep的复习。

7 安装程序包

1 使用阿里云docker.ce版本的源
A docker 的阿里云源 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
B cd /etc/yum.repos.d/
C wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2 把master的公钥给node1和node2
3 把master做好master的源scp到node1和node2下。
4 yum安装docker-ce(各个节点)
如果出现安装错误的话,可能是本地厂库和互联网厂库的问题,就是我们刚刚在用来阿里云的docker源,那么安装docker的时候自然也会用阿里云的厂库,本地程序的话,就会用本地的厂库,这个应该是我一个问题的盲区吧。我猜的话,就是安装docker的话,就是用阿里云的仓库,因为是使用yum安装,所以的话,就会安装一些依赖项,有些依赖项的话,是使用系统的基本参考的,所以造成一个不兼容或者是版本的问题,解决这个问题就是就是把系统基本源改成阿里云的源就行了。

8启动docker,(3台都要)

1 启动docker的时候配置一下配置文件
vim /usr/lib/systemd/system/docker.service #启动docker的时候会启动这个文件。

Environment="HTTPS_PROXY=http://www.ik8s.io:10070"  #这个添加一个HTTPS_PROXY,不懂这个代理有什么用,亲测试过这个代理网络是访问不了的。
Environment="NO_PROXY=127.0.0.1/8,172.18.0.0/16"   #访问这些网络的时候,不需要经过代理。  127.0.0.1/8表示本机的网络。
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT  # -P, --policy chain target制定链表的策略(ACCEPT|DROP|REJECT)
ExecReload=/bin/kill -s HUP $MAINPID

2 启动docker
systemctl daemon-reload
systemctl start docker
docker info 查看docker的信息
iptable -vnL 查看iptables的规则,是否对docker的影响
[root@master system]# sysctl -a |grep bridge

net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1  #这个参数要为1
net.bridge.bridge-nf-call-iptables = 1   #这个参数要为1
net.bridge.bridge-nf-filter-pppoe-tagged = 0
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-pass-vlan-input-dev = 0
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.docker0.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"

如果上面两个参数不是为1,要手动添加(每台都是一样)
vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1  #这个参数要为1
net.bridge.bridge-nf-call-iptables = 1   #这个参数要为1

[root@master system]# sysctl -p /etc/sysctl.d/k8s.conf 执行之后开机启动之后会加载
3 设置开机自启动docker(三台都要)
4 创建k8s的源厂库,
[root@node2 yum.repos.d]# vim /etc/yum.repos.d/k8s.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/    #基本URL
enabled=1    #设置开机自启动
gpgcheck=1   #开启GPG检查
repo_gpgcheck=1 #源GPG检查
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg   #gpgkey路径   在写源的时候,不能写备注,不然无法检测出来。

yum repolist
yum list |grep ‘^kube’ 可以查具体可以安装那些kube开头的包
yum -y install kubeadm kubectl kubelet 安装K8S的相关组件,
如果安装的时候出现gpgkey报错,可以使用命令:
yum install -y --nogpgcheck kubelet kubeadm kubectl 安装,可以免gpgkey验证安装
rpm -ql kubectl kubelet kubeadm 查看每个组件的相关文件,比如配置文件。
[root@master ~]# vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--fail-swap-on=false"   #设置允许运行swap

kubeadm -h 查看kebuadm命令的 使用

Usage:
  kubeadm [command]  

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  #master初始化使用
  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

[root@master ~]# kubeadm config print init-defaults 多使用帮助来熟悉命令的 使用。来显示默认的配置。

kubernetesVersion: v1.17.0    # 可以知道K8S的版本是1.17
serviceSubnet: 10.96.0.0/12   # 可以知道服务的子网为10.96.0.0/12 ,子网掩码为12
imageRepository: k8s.gcr.io   #K8S默认指定的厂库

K8S有3个network,包括 service network 和pod network 和node network。
1 node network 目前不是很理解node network
2 service network:默认是serviceSubnet: 10.96.0.0/12,从中动态分配。
3 pod k8s会提供CNI,网络接口,需要用第三方来分配网络,
第三方的网络有:
1 flannel,默认的是网络是10.244.0.0/16 也可以自定义,部署K8S和flannel的网络要一致。
2 calico,定义的网络是192.168.0.0/16

[root@master ~]# kubeadm init -h

--pod-network-cidr string     #通过这个参数来修改pod-network
--kubernetes-version string    #通过这个参数来修改K8S的默认版本
--config string                #通过这个参数来指定使用配置文件,但是配置文件
得自己修改,并且里面的service network和K8S 都是可以直接定义的。
--dry-run                      #第一次跑的话,可以用这个参数
--image-repository             #可以指定其他的镜像厂库

9 master节点初始化

出现的错误: [ERROR Swap]: running with swap on is not supported. Please disable swap
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=…
就是要执行初始化的时候,要加ignore-preflight-errors=Swap ,来允许Swap。
[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=…
意思就是初始化K8S至少要2核心,如果要用1核心启动话,可以加参数ignore-preflight-errors=
1 执行master初始化
[root@master ~]# kubeadm init --pod-network-cidr=“10.244.0.0/16” --kubernetes-version=“v1.17.0” --dry-run --ignore-preflight-errors=Swap
–dry-run 只是跑测试跑一下,并没有执行。
2 查看k8s初始化需要拉取的镜像
[root@master ~]# kubeadm config images list
3 先来去K8S初始化需要的镜像
[root@master ~]# kubeadm config images pull
1 遇到镜像拉取不了的问题,docker拉取镜像的话,应该是去gitlab的公共厂库拉取镜像的。
2 到这里的话我就弄不下去了
3 试一下用docker加速器能不能解决上面的问题。问题不能解决,换一种思路来学习。
4 初始化之后按照提示来执行一些命令,创建一些命令吧

10 部署pod network网络清单。

需要到GitHub查到命令

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值