有事没事领个红包

centos7国内部署kubernets1.20.7步骤

1. 本地环境

3台虚拟机 centos7.9 ,部署kubernetes1.20.7

1.1 查看本机centos版本信息

cat /etc/redhat-release

1.2 查看docker版本,本地是20.10.6

docker version

1.3 因为k8s是根据主机名来查找主机的,因此需要设置3台虚机的hostname不相同

修改主机名
vi /etc/hostname

3台主机分别修改为master1/node1/node2

修改域名解析hosts
vi /etc/hosts

在文件中追加如下配置,需要根据实际情况修改ip地址
10.0.0.30    master1
10.0.0.31   node1
10.0.0.32   node2

cat >> /etc/hosts << EOF
10.0.0.30 master1
10.0.0.31 node1
10.0.0.32 node2
EOF

1.4 修改selinx

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

1.5 关闭swap

# 当前临时关闭虚拟内存

swapoff -a

 

# 修改/etc/fstab文件

vi /etc/fstab

注释掉swap的自动挂载,wq保存。

#/dev/mapper/centos-swap swap swap defaults 0 0

1.6 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
chkconfig firewalld off

1.7 配置iptables

确保 br_netfilter 模块被加载。这一操作可以通过运行

 lsmod | grep br_netfilter 来完成。

为了让你的 Linux 节点上的 iptables 能够正确地查看桥接流量,你需要确保在你的 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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

 

2 在3台虚机上安装 kubeadm、kubectl、kubelet

2.1 使用阿里云镜像加速国内安装

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

 

2.2 查看可以安装的版本

yum list -y kubeadm --showduplicates

 

 

 2.3 安装

yum install -y kubelet-1.20.7-0 kubeadm-1.20.7-0 kubectl-1.20.7-0 --disableexcludes=kubernetes

启动
systemctl start kubelet
开机启动
systemctl enable kubelet

 

3 在master虚机中执行以下命令初始化master,使用kubeadm初始化master

3.1 查看所需镜像及版本

kubeadm config images list #可以查看部署服务所需要用的镜像以及版本信息。

3.2 初始化master

kubeadm init \
  --kubernetes-version=v1.20.7 \
  --pod-network-cidr=10.20.0.0/16 \
  --image-repository registry.aliyuncs.com/google_containers \
  --apiserver-advertise-address 10.0.0.30 \
  --v=6

参数说明:
kubernetes-version:要安装的版本
pod-network-cidr:负载容器的子网网段
image-repository:指定镜像仓库(由于从阿里云拉镜像,解决了k8s.gcr.io镜像拉不下来的问题)
apiserver-advertise-address:节点绑定的服务器ip(多网卡可以用这个参数指定ip)
v=6:这个参数我还没具体查文档,用法是初始化过程显示详细内容,部署过程如果有问题看详细信息很多时候能找到问题所在

当显示 successfully 表示安装成功

 

 

 

3.3 按照提示开始启动

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

3.4 安装网络

calico

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

或者 flannel

mkdir -p /opt/yaml/k8s

 

获取部署flannel的yaml文件
https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
到/opt/yaml/k8s 目录中

# 将quay.io换成quay.mirrors.ustc.edu.cn(中科大)的镜像

sed -i 's#quay.io/coreos/flannel#quay.mirrors.ustc.edu.cn/coreos/flannel#' /opt/yaml/k8s/kube-flannel.yml

部署网络

# 部署flannel
kubectl apply -f /opt/yaml/k8s/kube-flannel.yml

此时查看节点信息

kubectl get nodes

可以看到 master 已经ready

 

3.5 node节点加入集群,在node1/node2中执行

kubeadm join 10.0.0.30:6443 --token e4bs8w.jvxmhysk8alc1zuv \
    --discovery-token-ca-cert-hash sha256:4270b15c29b428387cfb76c747053be05965c84a448d69af87c8997bbb12fe31

此时查看节点信息,已经全部ready

kubectl get nodes

 

 

4 token相关操作

可以在master节点上通过 kubeadm token list 得到token,默认24小时后过期。

token过期后,新节点要加入该集群,需要在master节点上用下面的命令重新生成token。

kubeadm token create
kubeadm token create --print-join-command

 

5 集群卸载

集群重置
kubeadm reset

rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
yum clean all
yum remove kube*

 

 

 

 

参考资料:

https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

https://www.cnblogs.com/straycats/p/14322995.html

posted @ 2021-06-12 14:16  crazyCodeLove  阅读(240)  评论(0编辑  收藏  举报