k8s采用master, node1, node2 。三台虚拟机安装的一主两从,机器已提前安装好docker。下面是机器配置,k8s安装过程,以及出现的问题与解决方法
虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器
机器ip 192.168.164.30 # master
192.168.164.31 # node1
192.168.164.31 # node2
机器配置:
2核2g
k8s安装步骤
1. 关闭防火墙(三节点都配置):
systemct] stop firewal1d # 永久systemct] disable firewal1d
2.关闭selinux(三台节点都配置):
#永久 选择一个即可,永久删除,毕竟是虚拟机
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0 #临时
3.关闭swap(三台节点都配置):
#临时
swapoff -a # 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab
4.设置hostname(三台节点分别配置)
# master节点, 名字随意也可以叫master,与后面的配置 对应即可
hostnamectl set-hostname k8smaster####
#### 注意下面是在其他节点输入命令
##### node1 节点:
hostnamectl set-hostname k8snode1#node2 节点
hostnamectl set-hostname k8snode2
5.master节点 添加hosts配置
cat >> /etc/hosts << EOF
192.168.164.30 k8smaster
192.168.164.31 k8snode1
192.168.164.32 k8snode2
EOF
6.将桥接的IPv4流量传递到iptables的链(三台节点都配置):
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-ca11-ip6tables = 1
net.bridge.bridge-nf-ca11-iptables = 1
EOF
#配置生效
sysctl --system
7. 虚拟机同步时间(三台节点都配置):
# yum仓库安装插件
yum install ntpdate -y#同步
ntpdate time.windows.com
8.yum仓库配置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(三台都输入):
yum update -y
9. 安装kuberadmin(三台节点都配置) :
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubect1-1.18.0
# systemctl 管理 kubelet
systemctl enable kubelet
10. 修改网络配置(三台节点都配置):
#在/etc/sysctl.conf中添加参数:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1# 报错并退出后,执行sysctl -p 时刷新sysctl -p
11. 修改网络配置参数(三台节点都配置):
#文件内容为0,表示禁止数据包转发,1表示允许
cat /proc/sys/net/ipv4/ip_forward
# vi编辑参数 0修改为1 允许数据包转发
12. 加载ip_vs模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
13. 清空iptables 规则(不关闭则报错)
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
12. master节点配置,启动kubeadm:
# 第一个参数,修改为自己的虚拟机ip,不知道的ifconfig,查看
kubeadm init --apiserver-advertise-address=192.168.164.30 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
13. 报错都给找不到报错信息了。查看报错信息修改即可,比如设置:
/proc/sys/net/bridge中的文件bridge-nf-call-iptables 设置为1 ,再启动上面12的命令
成功如下:
master 成功信息:
14. 截图中需要输入的命令,再次配置环境:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
15. 部署cni网络插件 master节点输入命令:
# cli网络配置 超时之类的就多试几次, 实在不行,就找人下载下来,文件上传到服务器,然后kubectl apply -f 下载地址
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
16. 成功之后,等待自动安装成功,时间有点长 kubectl get nodes 查看节点是否ready
# 查看是否成功, 成功则全是running
kubectl get pods -n kube-system
查看节点是否ready
kubectl get nodes
16. 安装成功!使用nginx验证:
# 创建nginx
kubectl create deployment nginx --image=nginx# 查看是否running
kubectl get pods
成功后,设置暴露端口:
kubectl expose deployment nginx --port=80 --type=NodePort# 查看映射
kubectl get pod,svc
k8s安装成功, 测试成功。k8s使用 kubeadm安装成功!
注:
如何关闭集群:
systemctl stop kubelet
使用上述命令,在node1,node2, master节点依次关闭服务