【K8S】阿里云VPS内网环境-Kubernetes集群基础部署(CentOS8.2)

最开始测试部署的k8s集群是在本地的三个虚拟机上,由于服务越来越复杂,决定就直接搭在阿里云的服务器上了。目前的两台机器还行(4+8和2+4),有其它厂商的服务器,但是就得走公网,感觉没多大意义了,所以就用这两台机器来测试了。(PS:轻量应用服务器没得安全组的,hhh)
篇幅原因,这里只涉及Kubernetes集群的基础部署,KubeSphere等其他套件部署见后续文章。


0x01.环境基础

  • 阿里云服务器1:4核+8G。系统:Centos8.2,内网ip:172.17.xx.xx,公网ip:39.96.xx.xx
  • 阿里云服务器2:2核+4G。系统:Centos8.2,内网ip:172.17.xx.xx,公网ip:59.110.xx.xx
  • 两台服务器使用同一个VPS,使用同一个安全组,内网可以互相ping通。(如果内网不能互相ping通,那么就是公网集群环境,部署的方式有较大差异。)
  • 两台服务器均安装了Docker。
  • 采用一主一从模式,其中master节点也作为一个node。
  • 安装的Kubernetes及其组件的版本为v1.17.3。
  • 如果nodes增加,只需要按照nodes的部署步骤操作即可。

0x02.Kubenetes组件安装及准备(所有节点执行)

1.准备:关闭swap分区

  • 该版本的Kubernetes默认不支持开启swap的情况下运行。(也可以修改配置保持在开启swap分区的情况下运行,但最好关闭swap分区)
  • 关闭swap分区:
# 暂时关闭swap分区
swapoff -a 
# 永久关闭swap分区 或进入/etc/fstab文件,注释掉swap所在行
sed -ri's/.*swap.*/#&/' /etc/fstab 

2.准备:关闭selinux安全策略

  • selinux实际上没多大用处,但会产生很多没必要的提示。最好关掉。
  • 永久关闭slinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

3.准备:桥接IPv4流量

  • 桥接IPv4流量传递到iptables链 ,便于流量统计。
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf

4.配置:yum配置阿里云的Kubernetes源

  • 告诉yum下载阿里云镜像上的Kubernetes。
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

5.安装:kubeadm,kublet,kubectl

  • 配置好源后直接用yum下载。
yum install -y kubelet-v1.17.3 kubeadm-v1.17.3 kubectl-v1.17.3
  • 安装成功的界面:

在这里插入图片描述

6.设置开机启动

systemctl enable kubelet
systemctl start kubelet

7.开放相关端口

服务协议操作起始端口结束端口备注
sshTCPallow22
etcdTCPallow23792380
apiserverTCPallow6443
calicoTCPallow90999100
bgpTCPallow179
nodeportTCPallow3000032767
masterTCPallow1025010258
dnsTCPallow53
dnsUDPallow53
local-registryTCPallow5000离线环境安装
local-aptTCPallow5080离线环境安装
rpcbindTCPallow111使用 NFS 作为持久化存储
ipipIPIPallowCalico 需要允许 IPIP 协议

0x03.Master节点初始化

1.下载Master节点所需镜像

  • 运行该shell脚本,批量下载Master节点所需镜像。
#!/bin/bash

images=(
	kube-apiserver:v1.17.3
    kube-proxy:v1.17.3
	kube-controller-manager:v1.17.3
	kube-scheduler:v1.17.3
	coredns:1.6.5
	etcd:3.4.3-0
    pause:3.1
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
#   docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName  k8s.gcr.io/$imageName
done

2.Master节点初始化

  • 使用kubeadm进行Master节点的初始化。
  • apiserver-advertise-address 修改为内网ip。
kubeadm init \
--apiserver-advertise-address=172.17.96.12 \
--kubernetes-version v1.17.3 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

3.复制配置文件

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

4.部署网络插件

  • 使用配置好的yml文件部署flannel插件。
kubectl apply -f kube-flannel.yml
  • yml文件内容太多,需要请私聊我。

5.让Master也能当作Node使用的方法

kubectl taint node Master名 node-role.kubernetes.io/master-

0x04.node节点加入集群

  • 复制Master节点初始化完成后的token信息,在子结点中粘贴。
kubeadm join 172.17.96.12:6443 --token n7ybwv.0q1d8f7w9k9lok7e \
    --discovery-token-ca-cert-hash sha256:9c8db5e1f190d1b01bfc2084ded47d2c14ff4c143935839a57376f0e71b09cf6

在这里插入图片描述

0x05.验证集群是否搭建成功

  • 在Master节点查看,子节点是否在集群中:
kubectl get nodes

在这里插入图片描述

  • 查看所有pod的状态是不是Running。如果有pod一直处在某一个状态,那么这个pod就出现了问题,可以查看日志。
kubectl get pods --all-namespaces
# 查看具体pod的日志
kubectl describe pod pod名 --namespace=命名空间

0x06.kubeadm重新初始化

  • Master节点:
#  输入 y 确认
kubeadm reset  

ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm /var/lib/cni/ -rf
rm /etc/kubernetes/ -rf
rm /var/lib/kubelet/ -rf  
rm -rf $HOME/.kube
  • 子节点:
rm -rf /etc/kubernetes/*
  • 即可回到初始只安装好三个基本组件的状态。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ATFWUS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值