k8s的在线部署

需要注意:docker和k8s的版本是有对应要求的,可以通过docker和k8s版本对应关系文档进行查看。


k8s中文文档:

https://www.kubernetes.org.cn/docs

k8s在线部署

该部署使用的Centos7为例

前提条件:

1. CPU >= 2 核; 内存 >= 2 G;

2.所有设备安装完docker,并启动docker(全部设备),可参考我之前写的docker安装手册Docker在线部署

服务规划:

 

安装前准备(所有设备):

1.关闭防火墙

systemctl disable firewalld.service
systemctl stop firewalld.service

2.关闭SELinux

setenforce 0                 //临时关闭
vi /etc/selinux/config       //永久关闭
SELINUX=enforcing改为SELINUX=disabled

3.关闭交换分区Swap

swapoff -a                   //临时关闭
vi /etc/fstab                //永久关闭
加上#号注释掉
#UUID=364c9b7e-d20d-4cc1-9e8c-b06379a6f392 swap swap defaults 0 0

4.配置主机名和IP映射

vi /etc/hosts
192.168.36.189 master
192.168.36.190 Node1
#配置完成需要重启服务器
reboot

5.设置网桥流量桥接

cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

6.配置互信关系(该项不是必要的)

ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@Node1       //189上执行
ssh-copy-id -i /root/.ssh/id_rsa.pub root@master      //190上执行

7.Linux内核升级(该项不是必要的)

CentOS 7.x 系统自带的3.10.x 内核存在一些 bugs,可能会导致运行的 Docker和Kubernetes不稳定
#查看内核版本
uname -r
#可以查看我之前写的Linux内核升级手册进行升级

安装k8s

1.配置k8s加速镜像(所有设备)

cat << EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
  http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

2.下载安装kubelet kubeadm kubectl三大组件,版本不加则认为最新版本,这里我指定了1.20.9版本(所有设备)

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

3.启动kubelet服务(所有设备)

systemctl enable --now kubelet

这时候的kubelet会每几秒重启一次,因为它陷入了一个等待kubeadm指令的死循环

4.下载所需镜像(所有设备)

#编写一个脚本实现
cat << EOF | tee /images.sh
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
#可以看出所要下载的镜像都是我们K8S的组件
for imageName in ${images[@]};do
  docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
#赋予执行权限并执行 
chmod +x /images.sh && ./images.sh
#通过以下命令检查下载下来的镜像是否一致
docker images

5.k8s的初始化(master节点)

kubeadm init \
--apiserver-advertise-address=192.168.36.189 \      #[master节点的IP地址]
--control-plane-endpoint=master \                   #[master节点的域名]  
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version=v1.20.9 \
--service-cidr=10.96.0.0/16 \                       #[自定义的IP范围(创建SVC时所分配的范围)]
--pod-network-cidr=10.244.0.0/16                    #[自定义的IP范围(创建pod时所分配的范围)]

#设备IP范围、service-cidr IP范围、pod IP范围不可重叠

#输出如下即可
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/     #网络组件下载地址

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.36.189:6443 --token 1h3pvi.vr9mpn9znd9be3ov --discovery-token-ca-cert-hash sha256:02e203632dad339cc02ca3d837813b05330244fd3bd9bbf5bf6feb4
ece9f03e6            #注意该项,该项为node节点加入k8s的命令
#然后执行提示的内容
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6.查看k8s节点信息(master节点)

kubectl get node
#查看状态为NotReady是因为还没配置网络组件

7.部署网络组件(master节点)

   #这里需要注意calico与k8s的对应关系,可通过该地址进行查看https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/requirements 

   

wget https://docs.projectcalico.org/archive/v3.20/manifests/calico.yaml --no-check-certificate
#修改calico.yaml文件
vim /calico.yaml
#通过搜索192.168.0.0找到下列项并修改
# - name: CALICO_IPV4POOL_CIDR    #去掉注释
#   value: “192.168.0.0/16”       #该地方需要改成我们自己设定的Pod IP网段--pod-network-cidr=10.244.0.0/16,也就是将192.168.0.0修改成10.244.0.0,并去掉注释
注意: 该两项需和上下文进行对齐
#运行资源清单文件
kubectl apply -f /calico.yaml

8.查看所有Pod的运行状态,都为running即可(master节点)

kubectl get pod -A
#此时再次查看k8s的节点信息状态就会都为Ready了
kubectl get nodes

9.node节点加入k8s(node节点)

#执行之前master节点初始化所提示的命令
kubeadm join 192.168.36.189:6443 --token 1h3pvi.vr9mpn9znd9be3ov --discovery-token-ca-cert-hash sha256:02e203632dad339cc02ca3d837813b05330244fd3bd9bbf5bf6feb4
ece9f03e6

10.查看k8s节点信息(master节点)

#此时再查看k8s的节点信息时,就出现了node节点
kubectl get node

 至此我们的k8s就部署成功了!

posted @ 2022-02-22 09:27  RFAA  阅读(401)  评论(0编辑  收藏  举报