k8s集群搭建的方式分为三种:
kubeadm、minikube,二进制包;
kubeadm:
minikube:
二进制包:
在官网下载相关的组件的二进制包,上面的两个是工具,可以快速搭建集群,也就是相当于用程序脚本帮我们装好了集群,前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少,遇到问题很难排查,如果手动安装,对kubernetes理解也会更全面。
目前生产环境的主流搭建方式,已在生产环境验证,kubeadm也可以搭建生产环境
以上类容来源于网络,我这边只用过kubeadm,其他的都是在网上查的,其实还有很多中方式,具体怎样我不清楚,有兴趣的自己尝试下,下面介绍下kubeadm的安装方式。
前提条件:
1.机器:三台以上物理或者虚拟机,并且机器之间能互相访问。
2.系统centos7以上,2g 2核 及以上。
3.能访问外网,因为要拉镜像。
4.禁用swap分区swapoff -a ;vi /etc/fstab 注释最后一行 带swap;
开始安装:
1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2. 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
setenforce 0 #临时
3. 关闭swap(k8s禁止虚拟内存以提高性能)
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
swapoff -a #临时
这个在前提条件里说过了
4. 在master添加hosts
cat >> /etc/hosts << EOF
192.168.191.144 k8s-master1
192.168.191.145 k8s-node1
192.168.191.146 k8s-node2
EOF
改成自己的ip 所有的机器都添加
5.设置网桥参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system #生效
6.时间同步
yum install ntpdate -y
ntpdate time.windows.com
6.安装docker
yum install wget -y wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
或者yum install docker-ce-版本 安装指定版本,因为上面的安装会安装低版本的,但是k8s的版本可能比较高,这个可以自己查看下对应系统的版本和docker、k8s的对应版本,选择安装。
设置docker镜像源
vi /etc/docker/daemon.json
"registry-mirrors": ["https://registry.docker-cn.com"]
systemctl enable docker.service
7.设置k8s阿里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
8.安装kubeadm,kubelet 和 kubectl
yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4
这里的版本最好是与docker对应,不然容易出现版本问题。
systemctl enable kubelet.service #开启kubelet服务
以上每台机器上都是一样的执行
9.初始化master节点
kubeadm init --apiserver-advertise-address=192.168.191.144 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
这里192.168.191.144是我虚拟机的ip,关于参数解释可以看这个文章:kubadm部署k8s时service-cidr网络和pod-network-cidr的地址如何定义 - 小鹰展翅 - 博客园
然后执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
10.查看节点:
kubectl get nodes
11.添加node
在第九步执行完init后,控制台会打出join的命令,拷贝出来,然后在node节点上执行即可,journalctl -f -u kubelet可查看当前运行的日志
经常出现的问题:
systemctl daemon-reload
systemctl restart kubelet
重启服务
kubeadm reset 重建
1.running with swap on is not supported. Please disable swap
swap没有关闭:swapoff -a 临时关闭
vi /etc/fstab 注释最后一行
2.unknown container “/system.slice/kubelet.service”
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
有的可能是
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 这个可能是系统版本不一样,找不到就用find找一下。
添加:Environment="KUBELET_CGROUP_ARGS=–cgroup-driver=systemd –runtime-cgroups=/systemd/system.slice –kubelet-cgroups=/systemd/system.slice"
3.no networks found in /etc/cni/net.d
未安装网络:
1.可以先vi /var/lib/kubelet/kubeadm-flags.env 把前面的cni去除
2.也可以安装下载kube-flannel.yml,然后kubectl apply -f kube-flannel.yml
这些网上都能找到,不会就找度娘。