k8s集群部署的几种方式
1、Rancher方式:
二次封装的常用发行版【可视化构建kubernetes】
2、minikube方式:
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,适合尝试Kubernetes或日常开发的用户使用,但是不能用于生产环境。
3、kubeadm方式:
Kubeadm也是一个工具,提供kubeadm init和kubeadm join,可用于快速部署Kubernetes集群。
4、二进制包方式:
从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群,过程较为繁琐。
官方资料:https://feisky.gitbooks.io/kubernetes/components/kubeadm.html
[Kubernetes] 国内获取 Kubernetes 镜像的方法
https://blog.csdn.net/shida_csdn/article/details/78480241
https://www.cnblogs.com/fengzhihai/p/9849683.html
本例采用bukeadm安装:
安装要求:
1、centos7.X(1台master、2台node)
2、2G、2C、30GB
3、集群之间网络互通
4、可以访问外网,需要拉去镜像
部署步骤:
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭selinux
setenforce 0(临时生效)
vi /etc/selinux/config SELINUX值更改为disabled
3、禁止swap分区:swap分区的作用是当物理内存不足时,利用swap分区做数据交换,但是在kubernetes中完全不支持swap分区,所以必须禁止掉,
或者创建 系统的时候就不创建他
swapoff -a (临时关闭)
vi /etc/fstab(永久生效) 中注释掉swap那行:/dev/mapper/centos-swap swap
4、添加主机名和IP的关系,作为解析使用
vi /etc/hosts 最后添加
ip1 主机名1
ip2 主机名2
ip3 主机名3
5、如果虚拟机无需此操作,时间同步【启动chronyd系统服务】
systemctl start chronyd.service
systemctl enable chronyd.service
6、将桥接的IPv4流量传递到iptables的链【有一些ipv4的流量不能走iptables链【linux内核的一个过滤器,每个流量都会经过他,然后再匹配是否可进入当前应用进程去处理】,导致流量丢失】
配置k8s.conf文件(#k8s.conf文件原来不存在,需要自己创建的)
或者直接vi /etc/sysctl.d/k8s.conf 最后添加如下3行
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
vm.swappiness=0
添加完毕后执行sysctl --system生效
安装Docker、kubeadm(引导集群的客户端工具)、kubelet(k8s中管理容器)
1、安装Docker(两种下载repo文件方法)
A:打开 https://mirrors.aliyun.com/docker-ce/linux/centos/
找到docker-ce-repo然后复制链接下载后将repo文件放到/etc/yum.repos.d目录下
B:先cd /etc/yum.repos.d
然后wget https://mirrors.aliyun.com/docker-ce/linux/centos/ 直接下载
安装:yum -y install docker-ce-18.06.1.ce-3.el7
设置开机启动并启动docker:systemctl enable docker && systemctl start docker
2、安装kubeadm 、kubelet、kubectl
首先配置kubermetes的阿里yum软件源:
在/etc/yum.repos.d目录下vim kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
安装:
yum install -y kubelet-1.13.3
yum install -y kubeadm-1.13.3
yum install -y kubectl-1.13.3
“以上步骤所有机器都要配置和安装”
部署(初始化)k8s Master节点
kubeadm init \
--apiserver-advertise-address 192.168.88.149 \ (此处为APIserver服务器地址)
--image-repository registry.aliyuncs.com/google_containers \ (系统默认去k8s.gcr.io要改成这个地址不然下不到镜像)
--kubernetes-version=v1.13.3 \ (k8s版本 rpm -qa kubeadm查看)
--pod-network-cidr=10.244.0.0/16 (此处10.244.0.0/16为pod网段使用的是flannel,service网络使用默认)
注:此处需要下载镜像比较慢,耐心等待(可以通过kubeadm config images pull 查看需要下载哪些镜像)
初始化完毕之后需要执行下面步骤:
1、如下为初始化提供的信息,但是root用户只要在/root家目录下mkdir .kube,
然后在cp /etc/kubernetes/admin.conf /root/.kube/config下,然后查看获取情况kubectl get node
注:只要有admin.conf就可以查看node状态
“mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config”
2、Master初始化完毕后最下面这个必须记录下来,后面node服务器加入需要用到
You can now join any number of machines by running the following on each node
as root:
kubeadm join 192.168.88.149:6443 --token qlzhpw.fy30lar1jiz11xbw --discovery-token-ca-cert-hash sha256:ed2f22c8a4727f7be52a1495b49e52638e1f79107677daf6722dfa009218f2e
安装Pod网络插件(所有服务器都需要安装)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
查看状况
kubectl get pods -n kube-system(kube-system为默认的namespace)
kubectl get node
Node服务器加入网络(Node服务器需要执行,就是上面Master初始化结束复制下来的内容)
kubeadm join 192.168.88.149:6443 --token qlzhpw.fy30lar1jiz11xbw --discovery-token-ca-cert-hash sha256:ed2f22c8a4727f7be52a1495b49e52638e1f79107677daf6722dfa009218f2e