Centos7.9搭建K8S
前期准备
使用VMware创建三台centos虚拟机
192.168.222.136 master
192.168.222.137 node1
192.168.222.138 node2
K8S搭建
设置centos镜像源
1、安装wget
yum install -y wget
2、下载CentOS 7的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、更新镜像源
清除缓存:yum clean all
生成缓存:yum makecache
4、确保 Docker 仓库已正确配置
cat /etc/yum.repos.d/docker-ce.repo
# 没配置则进行配置
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或
sudo tee /etc/yum.repos.d/docker-ce.repo <<'EOF'
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
安装docker
-
查看可安装docker 版本
yum list docker-ce --showduplicates | sort -r -
安装指定docker版本
yum install docker-ce-20.10.16-3.el7 docker-ce-cli-20.10.16-3.el7 containerd.io
设置docker 镜像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
K8S安装
- 安装所需插件
yum install -y yum-utils device-mapper-persistent-data lvm2
# yum 更新
sudo yum update -y
# tab 命令补全
sudo yum install -y bash-completion
# wget
sudo yum install -y wget
# vim 编辑器
sudo yum install -y vim-enhanced
# 网络工具
sudo yum install -y net-tools
# gcc 编译器
sudo yum install -y gcc
- 将节点加入主机
cat >> /etc/hosts << EOF
192.168.222.136 master
192.168.222.137 node1
192.168.222.138 node2
EOF
- 设置NTP校时
sudo ntpdate ntp1.aliyun.com
sudo systemctl restart ntpdate
sudo systemctl enable ntpdate
- 关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
- 关闭 swap 交换空间
sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
- 关闭 selinux
# 查看当前
getenforce
cat /etc/selinux/config
# 关闭selinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 检查是否修改成功
cat /etc/selinux/config
- 添加阿里云 k8s 镜像仓库
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
# 是否检查 gpg 签名文件
gpgcheck=0
# 是否检查 gpg 签名文件
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- 安装k8s(需先安装docker)
sudo yum install -y kubelet-1.19.0-0 kubeadm-1.19.0-0 kubectl-1.19.0-0 --disableexcludes=kubernetes --nogpgcheck
systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl enable kubelet
- 重启系统,确保配置生效
sudo reboot
K8S启动
- master 初始化(只在master节点上执行)
# 下载所需镜像
#查看镜像
kubeadm config images list --image-repository=registry.aliyuncs.com/google_containers
#下载镜像
kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers
# 初始化master节点
sudo kubeadm init \
--apiserver-advertise-address 192.168.222.136 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.0 \
--service-cidr 10.0.96.0/12 \
--pod-network-cidr 10.244.0.0/16 \
--ignore-preflight-errors=SystemVerification
- 初始化成功后执行(初始化成功后,日志会显示需要执行的命令)
# 示例
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

- 子节点加入主节点
# 示例
kubeadm join 192.168.222.136:6443 --token y5fkbd.hva4497ze22d5mu4 \
--discovery-token-ca-cert-hash sha256:df8aba401faddefa653a97973a90f6f1447837ac64c04082ebf9707781859a5b

- 使用calico配置网络(只在master节点上执行)
# 1. 下载yaml
wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.19/manifests/calico.yaml
# 2. 下载所需镜像(所有节点都需要有这些镜像,如果子节点没装,主节点会发送命令给子节点,但是由于网络问题,一般都Pull不下来,所以最好一开始都自己pull下)
docker pull calico/kube-controllers:v3.19.4
docker pull calico/node:v3.19.4
docker pull calico/cni:v3.19.4
docker pull calico/pod2daemon-flexvol:v3.19.4
# 3. 修改 calico.yaml 文件
vim calico.yaml
# 修改1:将默认pod网络修改为pod网络
- name: CALICO_IPV4POOL_CIDR
value: "192.168.0.0/16"
# 修改后的配置
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
# 修改2:找到CLUSTER_TYPE那行,在后面添加如下内容,ens33处填写主机的网卡名称(ifconfig)
- name: IP_AUTODETECTION_METHOD
value: "interface=ens33"
# 4. 在下载目录执行,一般是放在/root目录
kubectl delete -f calico.yaml
kubectl apply -f calico.yaml
- 验证网络是否配置成功
kubectl get pods -n kube-system -l k8s-app=calico-kube-controllers

kubectl get pods -n kube-system -o wide

6. 验证节点是否正常
kubectl get nodes

K8S集群测试
# 创建nginx
kubectl create deployment nginx --image=nginx:1.14-alpine
# 暴露端口
kubectl expose deploy nginx --port=80 --target-port=80 --type=NodePort
# 查看服务
kubectl get pod,svc


其他
卸载Docker
#删除Docker相关源
sudo rm -f /etc/yum.repos.d/docker*.repo
#卸载旧版本的Docker和相关的软件包
sudo yum -y remove \
docker-ce \
containerd.io \
docker-ce-rootless-extras \
docker-buildx-plugin \
docker-ce-cli \
docker-compose-plugin
参考内容
https://znunwm.top/archives/k8s-xiang-xi-jiao-cheng
https://blog.csdn.net/SsjjsS2019/article/details/144186076
https://blog.csdn.net/weixin_44084452/article/details/130797232

浙公网安备 33010602011771号