vm虚拟机 k8s集群搭建
虚拟机配置(centos7 2G内存2个处理器)
建议最小硬件配置:2核CPU、2G内存、20G硬盘 服务器最好可以访问
名称 | ip |
master | 192.168.179.128 |
node1 | 192.168.179.129 |
node2 | 192.168.179.130 |
1 配置虚拟机主机名解析,网络等
编辑三台服务器的 /etc/hosts 文件
192.168.179.128 master
192.168.179.129 node1
192.168.179.130 node2
分别重命名主机
hostnamectl set-hostname node1(node1 是自定义的)
查看虚拟机ip地址
ip addr
执行完应该可以看到默认没有显示ip地址,xshell等工具无法连接
修改配置文件
从配置清单中可以发现 CentOS 7 默认是不启动网卡的(ONBOOT=no),把这一项改为YES(ONBOOT=yes)
vi /etc/sysconfig/network-scripts/ifcfg-ens33
再次查询ip即可获得
三台机器都配置完可以相互ping一下检查是否连通
2 时间同步
#启动chronyd服务
systemctl start chronyd
systemctl enable chronyd
date
3 禁用selinux和firewalld服务
关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
关闭firewalld服务
sed -i 's/enforcing/disabled/' /etc/selinux/config #重启后生效
4 禁用swap分区
vi /etc/fstab
#注释掉下面的设置
/dev/mapper/centos-swap swap
3、4两步后需要重启机器
reboot
5 添加网桥过滤和地址转发功能
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#然后执行
sysctl --system //生效命令
6 docker安装(易踩坑)
这里最好自己安装完docker后检查docker能否正常使用,否则可能会导致kubeadm init失败
# 1.卸载旧的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#2.# 安装基本的安装包
sudo yum install -y yum-utils
#3.设置镜像仓库
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 阿里云镜像
# 更像软件包索引
yum makecache fast
# 4.安装docker引擎
yum install docker-ce docker-ce-cli containerd.io # docker-ce 社区版 ee 企业版
#5. 启动Docker
systemctl enable docker && systemctl start docker # 代表启动成功
测试docker可以docker的常用命令
docker version
docker images
docker ps
7 配置docker镜像加速
#配置docker加速
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
#重启docker
systemctl restart docker
#查看docker信息
docker info
8 安装k8s组件
配置软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
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
安装指定版本并启动
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
systemctl enable kubelet && systemctl start kubelet
9 部署(仅master节点)
将下面代码中的192.168.179.128改成自己的master虚拟机的ip地址
kubeadm init \
--apiserver-advertise-address=192.168.179.128 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
成功后如下图所示
10 创建必要文件(仅master节点)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
11.1 安装fannel(仅master节点)
虚拟机在后续创建deployment等时出现网络问题,建议换成calico
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
上面的命令大概率会连接失败,我的办法是自己翻墙把yml文件下载下来,再放到master机上,我的是在/root目录下
wget工具可以用yum命令下载
yum install wget
上面完成后启动
kubectl apply -f kube-flannel.yml
11.2 安装calico(推荐)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
12 node结点加入
在两台node节点虚拟机上执行master节点kubeadm init 后生成的join代码
例如:
kubeadm join 192.168.179.128:6443 --token ixvxxd.oamu833eimbkvwt6 --discovery-token-ca-cert-hash sha256:fb6c95e8999315d12267287162973c08e319c731ac5f706d22199b2dfe08b8c2
建议先重启node上的kubeamd
kubeamd reset
如果node卡在 [preflight] Running pre-flight checks
可能是时间不同步或token失效,重新生成token即可
在master上执行
kubeadm token create --print-join-command
systemctl restart kubelet
加入成功如下图
13 最终效果
使用kubectl的命名查看集群状态
kubectl get nodes
kubectl get pod --all-namespaces
或查看特定的node和pod
kubectl describe xxx
14 node结点重新加入
kubeadm reset
rm -rf $HOME/.kube/config
rm -rf /var/lib/etcd
之后和之前node结点加入的步骤一样
15 可能用到的其他命令
在尝试过程中用到的其他常用命令
给kubectl取别名
vim ~/.bashrc
# 添加 alias kc='kubectl'
source ~/.bashrc
重装k8s组件
yum remove kubelet kubeadm kubectl
修改文件内容
vi 或 vim
修改完成
q!不修改强制退出
wq!修改,强制退出
!是强制的意思
cat xxx 查看文件内容
history 查看历史命令
journalctl -xeu kubectl 查看报错日志
docker删除
停止docker
systemctl stop docker
查询安装docker的文件包
yum list installed | grep docker
删除所有安装docker的文件包
yum -y remove '包名'
删除卷/网络内容/镜像/容器等,默认在/var/lib/docker目录
rm -rf /var/lib/docker
参考链接