01.先让Kubernetes跑起来

1、在所有节点上进行初始化配置:

①、修改主机名(Master、node1、node2)、修改hosts表、关闭selinux、清空防火墙、关闭firewalld服务(或者放行相应的端口);永久关闭swap,配置离线yum仓库;
注:防火墙不能关闭,网络要使用iptables进行报文转发;要永久关闭swap,需要直接将 /etc/fstab文件中的swap行注释掉。

[root@master ~]# iptables -F

[root@master ~]# iptables -t nat -F

#此命令为临时关闭swap,如果要永久关闭,可修改fstab文件
[root@master ~]# swapoff -a

②、修改内核参数,加载内核模块

[root@master ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

[root@master ~]# sysctl -p
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

[root@master ~]# vim /etc/sysconfig/modules/ipvs.modules 
#!/bin/bash
modprobe -- br_netfilter
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4

[root@master ~]# chmod 777  /etc/sysconfig/modules/ipvs.modules 
[root@master ~]# sh /etc/sysconfig/modules/ipvs.modules 

[root@master ~]# lsmod | grep -E "ip_vs|nf_conntrack_ipv4"
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack_ipv4      15053  1 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_conntrack          139264  9 ip_vs,nf_nat...,nf_conntrack_ipv6
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

③、在所有节点上部署Docker,并修改daemon.json文件,使用私有镜像仓库;

[root@master ~]# vim /etc/yum.repos.d/k8s.repo
[docker-ce]
name=docker-ce
baseurl=http://master/docker-ce
enabled=1
gpgcheck=0
[kubernetes]
name=kubernetes
baseurl=http://master/kubernetes
enabled=1
gpgcheck=0

[root@master ~]# dnf remove podman  #卸载Podman
[root@master ~]# dnf remove buildah   #卸载Container依赖项
[root@master ~]# dnf install docker-ce

[root@master ~]# vim /etc/docker/daemon.json 
{
"exec-opts": ["native.cgroupdriver=systemd"],
#设置log驱动为json,日志最大100M,日志文件数量最多10个(Node级别的日志)
"log-driver": "json-file",   
	"log-opts": {       
		"max-size": "100m",       
		"max-file": "10"   
},
"registry-mirrors":["192.168.100.11:5000"]
}

[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker

④、安装kubeadm、kubelet、kubectl,并添加命令补全;此处使用离线yum仓库

[root@master ~]# dnf repolist all
[root@master ~]# dnf install -y kubeadm-1.20.2 kubelet-1.20.2 kubectl-1.20.2


#补全kubeadm命令操作
[root@master ~]# source <(kubeadm completion bash)
[root@master ~]# echo "source <(kubeadm completion bash)" >> /etc/profile

#补全kubectl命令操作
[root@master ~]# source <(kubectl completion bash)
[root@master ~]# echo "source <(kubectl completion bash)" >> /etc/bashrc

2、在master节点上完成初始化配置:

①、将所有的tar包上传至系统;创建私有镜像仓库,并将Kubernetes核心镜像推送到离线仓库中;

[root@master ~]# ls

anaconda-ks.cfg  kubernetes-cores  registry.tar

#创建一个私有仓库
[root@master ~]# docker load -i registry.tar
[root@master ~]# docker run -d --name registry --restart always -v /var/lib/registry:/var/lib/registry -p 5000:5000 registry:latest 

#将所有的Kubernetes-cores核心镜像tar包加载为镜像(包括kube-flannel网络插件、测试镜像nginx、httpd、mariadb),并重新tag;上传到私有仓库中(以kube-apiserver为例)
[root@master ~]# docker load -i kube-apiserver.tar
[root@master ~]# docker tag .../google_containers/kube-apiserver:v1.20.2 <MASTER_IP>/kubernetes/kube-apiserver:v1.20.2
[root@master ~]# docker push <MASTER_IP>/kubernetes/kube-apiserver:v1.20.2

②、使用kubeadm初始化master节点,并添加环境变量使得可以补全kubectl命令;

[root@master ~]# kubeadm init --kubernetes-version 1.20.2  
--image-repository <MASTER_IP>/kubernetes   
--service-cidr=10.96.0.0/16 
--pod-network-cidr=10.244.0.0/16
...

#安装完成后根据提示操作
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config

注:①、service-cidr,虚拟网络地址段,用于为 Kubernetes 集群之中的 Service 配置 IP 地址(地址不会配置在任何接口上,是个虚拟IP),通过 Node 之上的 kube proxy 配置为 iptables或者ipvs 规则,从而将发往此地址的所有流量调度至其后端的各 Pod 对象。该网段在初始化集群时指定,用户创建Service时会动态配置该网段的IP地址;②、pod-network-cidr,虚拟网络地址段,用于为各 Pod 对象设定 IP 地址等网络参数,其地址配置于 Pod 中容器的网络接口之上,需要借助CNI网络插件来完成配置。
③、安装网络插件,首先从网盘下载kube-flannel.yml文件;修改网络插件的镜像源,地址为私有镜像仓库,注意要保证yml文件中flannel的镜像地址及版本号与仓库中的完全一致,即为 flannel:0.14.0
注:flannel 镜像文件的备用镜像站为 quay.mirrors.ustc.edu.cn/coreos 。

#修改image地址
[root@master ~]# vim kube-flannel.yml
...
image: <MASTER_IP>/kubernetes/flannel:v0.14.0

#执行部署
[root@master ~]# kubectl apply -f kube-flannel.yml
[root@master ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                    READY   STATUS    RESTARTS   AGE
kube-system   kube-flannel-ds-52kf9   1/1     Running   0          109s

3、添加node节点到cluster集群当中:

①、首先要在master节点上,创建一个用于加入cluster的token,使得node节点能够使用该token加入到集群中;token生成之后根据提示,将node节点加入到cluster中;

[root@master ~]# kubeadm token create --print-join-command
#将生成的kubeadm join命令复制到所有的node节点上执行加入
kubeadm join ...
--token 1szck...2m0zc9     
--discovery-token-ca-cert-hash sha256:97d152...623598 

②、将node节点加入到集群中,并在master节点上验证集群中的节点。
注:如果node在flannel网络插件安装之后加入到集群时,可能会提示镜像拉取失败,需要查看master节点的registry镜像仓库是否工作正常。

[root@node1 ~]# kubeadm join ... 
--token 1szckp....5s62m0zc9 --discovery-token-ca-cert-hash sha256:97...623598 
...
This node has joined the cluster:
...

#如果节点状态为NotReady,就要查看node节点是否能从Master节点获取到flannel镜像
[root@master ~]# kubectl get  nodes
NAME     STATUS   ROLES                  AGE    VERSION
master   Ready    control-plane,master   112m   v1.20.2
node1    Ready    <none>                 13s    v1.20.2

4、清理环境

①、master节点

[root@master ~]# rm -rf /etc/kubernetes 
[root@master ~]# rm -rf /var/lib/kubelet
[root@master ~]# rm -rf /etc/cni/*
[root@master ~]# rm -rf /run/flannel
[root@master ~]# rm -rf /var/lib/etcd
[root@master ~]# kubeadm reset
[root@master ~]# rpm -e kubelet kubectl kubeadm kubernetes-cni

②、node节点

[root@node1 ~]# kubeadm reset
[root@node1 ~]# systemctl stop kubelet
[root@node1 ~]# rm -rf /var/lib/kubelet /etc/kubernetes ~/.kube

由于部署过程中涉及到大量的离线镜像,有需要的可以私信博主免费获取!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KnockCloud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值