【k8s】vmware中模拟kubeadm安装k8s1.23.5集群
这篇进行软件准备,这里说下我个人的学习思路,我一贯先把环境准备好,而不是先去学习理论,我认为边实践边补充理论知识是最好的学习方法。新手上路,每一步都是艰难险阻,一点点击败它,就会成长。...............
上篇在硬件上已经做好准备:【k8s】环境准备:vmware中安装centos7 这篇进行软件准备,这里说下我个人的学习思路,我一贯先把环境准备好,而不是先去学习理论,我认为边实践边补充理论知识是最好的学习方法。新手上路,每一步都是艰难险阻,一点点击败它,就会成长。
注意:k8s1.24版本不支持docker容器,此安装步骤不适合1.24以上版本(如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker)
安装条件
前面三步实际上我们已经在上篇文章操作完成了
- 多台Linux机器 CentOS7
- 2G以上RAM,2个以上CPU
- 集群网络互通,可访问外网
- 关闭防火墙,关闭swap分区
已经安装了三台服务器:
主机名 | ip |
---|---|
k8s-master | 192.168.131.110 |
k8s-node1 | 192.168.131.111 |
k8s-node2 | 192.168.131.112 |
以下命令在所有主机上都执行
可以使用xshell的工具->发送键输入到->所有会话,来同时操作所有主机
添加hosts
vi /etc/hosts
# 追加如下内容
192.168.131.110 k8s-master
192.168.131.111 k8s-node1
192.168.131.112 k8s-node2
结果如图:
关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
关闭selinux
- 临时关闭
setenforce 0
- 永久关闭(我选择此方式)
vi /etc/sysconfig/selinux
# 修改 SELINUX=disabled
结果如图:
关闭swap
- 临时关闭
swapoff -a
- 永久关闭(我选择此方式)
vi /etc/fstab
# 注释掉这行: /dev/mapper/centos-swap swap swap defaults 0 0
结果如图:
重启
- 上面两个永久关闭,要重启后生效
sudo reboot
允许 iptables 检查桥接流量
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
安装Docker
# 安装下载工具 wget
yum install wget -y
# 修改下载源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 安装docker
yum -y install docker-ce
# 开机自启&重启docker
systemctl enable docker && systemctl start docker
配置Docker
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"] #这里要改一下,并去掉注释
}
EOF
这里的 registry-mirrors,可以去阿里云控制台生成一个,阿里云镜像加速地址
- 重启docker
systemctl restart docker
安装kubeadm,kubelet和kubectl
- 添加阿里yum源
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
- 执行安装
sudo yum install -y kubelet-1.23.5 kubeadm-1.23.5 kubectl-1.23.5 --disableexcludes=kubernetes
# 开机自启 kubelet
sudo systemctl enable --now kubelet
以下命令在master主机上运行
初始化master
kubeadm init \
--apiserver-advertise-address=192.168.131.110 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.5 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
# 这里只需改一下apiserver-advertise-addres为你的master ip地址
- 此处如果报错,要排错,然后执行 kubeadm reset,然后重新初始化。。。
- 执行正常,会出现如下结果:
- 执行图中操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 查看集群节点
kubectl get nodes
以下命令在node上执行
加入node
- master中执行kubeadm init之后的join命令
# 在node节点中执行
kubeadm join 192.168.131.110:6443 --token bwq141.9oljvnuvegh4p6kq \
--discovery-token-ca-cert-hash sha256:51c30bb24efea08ac014da0ec8f7ab52f28680276056960466f0cc348a351dad
以下命令在master上执行
如果上面步骤成功了,====内无需执行,有需要再执行即可。
============================================
- 重新生成新的join命令(有效期为24小时)
kubeadm token create --print-join-command
- 查看存在的token
kubeadm token list
- 生成永久token
kubeadm token create --ttl 0
- 生成 Master 节点的 ca 证书 sha256 编码 hash 值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
============================================
此时执行kubectl get nodes 会发现所有节点都是NotReady状态,要安装容器网络。
- master安装容器网络(此处看到有用其他yaml文件的,如kube-fannel.yml,我测试没能成功,这里选择的这个可以成功)
# 下载yaml文件
wget http://static.corecore.cn/weave.v2.8.1.yaml
# 应用
kubectl apply -f weave.v2.8.1.yaml
# 此处这个yaml文件看不懂内容,后续学习再慢慢深入理解
等待镜像拉取和初始化操作约1分钟后,执行
kubectl get pods -n kube-system -o wide
会看到全部的pod都已经是运行状态了
再执行
kubectl get nodes -o wide
会看到全部node节点都变成了Ready状态了
至此,k8s集群就模拟安装完成了。
测试集群
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc
这里可以看到nginx的映射端口是32387,用集群中任意一个ip:32387,即可成功访问到nginx
软件环境正式安装完成,接下来就可以愉快地玩耍k8s了。
前方深渊,身后地狱。到达胜利之前,无法回头!!!
更多推荐
所有评论(0)