Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
Kubeadm是一个工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群
从官方下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。
1.一台或多台机器,操作系统 CentOS7.x-86_x64 2. 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘20GB或更多 3. 集群中所有机器之间网络互通 4. 可以访问外网,需要拉取镜像 5. 禁止swap分区
ps: Swap是操作系统在内存吃紧的情况申请的虚拟内存,按照Kubernetes官网的说法,Swap会对Kubernetes的性能造成影响,不推荐使用Swap。
ps:Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
##安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ##添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ##更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce sudo yum -y install epel-release sudo yum -y install python-pip sudo yum clean all sudo pip install docker-compose ##开启Docker服务 sudo service docker start ##开机自启 systemctl enable docker查看安装结果:docker info ps:docker安装完后Cgroup Driver=cgroupfs和kubelet的Cgroup Driver=systemd不一致,需要修改docker的Cgroup Driver为systemd,修改如下:
sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io vim /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] }重启docker查看结果:
systemctl daemon-reload systemctl restart docker systemctl enable docker docker infovi /etc/sysctl.d/k8s.conf
增加如下内容: net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1使配置生效:
modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf结果会报如下错误: ps:由于是国外镜像,基本上无法下载对应的镜像包。仔细查看报错信息里面明确列出了安装需要用到的镜像名称和tag,那么我们只需要提前把这些镜像pull下来,再安装就ok了。
下载镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7打成tag:
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7再次执行:
kubeadm init --kubernetes-version=v1.18.0 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.214.132 --ignore-preflight-errors=Swap结果如下(打印结果的最后一句kubeadm join在后面环节有用到):
执行结果: 查看节点状态(master节点)
kubectl get node结果:状态为NotReady(不正常) 再查看所有pod(master节点)
kubectl get pods --all-namespaces结果:有两个节点为pending状态(不正常) 再查看日志(master节点)
journalctl -f -u kubelet.service结果:网络错误(不正常) 回头想下刚才执行的kubectl apply -f kube-flannel.yml,其实是在下载flannel镜像。 因此查看下有没有flannel镜像
docker images|grep flannel说明:镜像还在下载中,因此此处需要等待大概4到5分钟,之后再查看,发现主节点正常
下载镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7打成tag:
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7执行第9步生成的添加语句:
kubeadm join 192.168.214.132:6443 --token 5cy1j4.y5kb1jgsn3rluejb \ --discovery-token-ca-cert-hash sha256:b7fc5e9a72ba34b00494600280c593a8828efb8be8d4dade6cbeba988c270bb2结果: 在master上查看节点状态, 为NotReady 大概需要等待半分钟,再次查看