k8s 集群搭建
一、创建节点
- 修改主机名
vim /etc/cloud/cloud.cfg # 修改配置 preserve_hostname: true
- 修改hostname
sudo vim /etc/hostname
- 修改网络
# 打开/etc/netplan/***-config.yaml # 修改网络配置为: network: ethernets: ens33: addresses: [192.168.50.147/24] dhcp4: false gateway4: 192.168.50.2 nameservers: addresses: [192.168.50.2] optional: true version: 2
# 应用网络
sudo netplan apply - 修改hosts文件
sudo vim /etc/hosts # 添加k8s物理集群节点 192.168.50.147 master 192.168.50.148 node1 192.168.50.149 node2
- docker重新添加group
# 因为修改了主机名,docker需要重新进组 sudo usermod -aG docker $USER
重启机器sudo shutdown -r now
二、节点配置
- 创建工作目录
mkdir ~/working
cd ~/working - 创建k8s配置文件
- 创建k8s的管理⼯具kubeadm对应的配置⽂件,使⽤kubeadm配置⽂件,通过在配置⽂件中指定docker仓库地址,便于内⽹快速部署。
kubeadm config print init-defaults > kubeadm.conf
- 创建k8s的管理⼯具kubeadm对应的配置⽂件,使⽤kubeadm配置⽂件,通过在配置⽂件中指定docker仓库地址,便于内⽹快速部署。
- 修改kubeadm.conf中的imageRepository和kubernetesVersion两项
vi kubeadm.conf # 改为 registry.aliyuncs.com/google_containers imageRepository: registry.aliyuncs.com/google_containers
# k8s1.20以后不再默认使用docker容器,如果需要使用docker容器需要下载cri-docker,并且修改kubeadm.conf
# cri-docker资源下载:https://github.com/Mirantis/cri-dockerd
criSocket: unix:///var/run/cri-dockerd.sock - 修改kubeadm.conf中的API服务器地址,后⾯会频繁使⽤这个地址。
# localAPIEndpoint: localAPIEndpoint: advertiseAddress: 192.168.50.145 bindPort: 6443
- 配置子网,用于pod之间通信
# 修改serviceSubnet字段 serviceSubnet:10.96.0.0/12
三、拉取K8s必备的模块镜像
- 查看⼀下都需要哪些镜像⽂件需要拉取
kubeadm config images list --config kubeadm.conf
- 拉取镜像
#下载全部当前版本的k8s所关联的镜像 kubeadm config images pull --config ./kubeadm.conf - 初始化kubernetes环境
sudo kubeadm init --config ./kubeadm.conf或者直接使用命令sudo kubeadm init --pod-network-cidr=192.10.0.0/16 --apiserver-advertise-address=10.20.7.174 --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock#查看配置kubeadm config print-defaults
- 系统自启动
# 启动kubelet 设置为开机⾃启动 $ sudo systemctl enable kubelet # 启动k8s服务程序 $ sudo systemctl start kubelet
四、踩坑笔记:
1. 切记关闭swap分区。
2. 关闭防火墙,如:iptable -F
3. kubelet init报错如:failed to list *v1.Service: Unauthorized,需要删除证书: sudo rm -rf /var/lib/kubelet/pki/*
4. 一旦初始化失败,需要清除k8s缓存:
sudo su systemctl stop kubelet.service && \
docker rm $(docker ps -qa) --force && \
rm -rf /etc/kubernetes/manifests/* && \
rm -rf /etc/kubernetes/pki/* && \
rm -rf /etc/kubernetes/*.conf && \
rm -rf /var/lib/kubelet/pki/* && \
rm -rf /var/lib/etcd \
rm -rf /var/log/pods/

浙公网安备 33010602011771号