kubernetes集群由master、node构成。其中master包含组件:
node 节点包含组件:
搭建k8s开发环境有三种,一种是通过docker desktop + Minikube 来直接在你的电脑上搭建,这种搭建方式存在的问题比较多,很多功能不支持,不建议使用。另外一种方式是通过Docker Desktop安装k8s,这种k8s是单机版的,master 和node 是同一个节点也就是本机,这种方式安装的k8s基本上能满足我们的学习需求,初期学习阶段可以使用这种安装方式。还有就是通过前文介绍 vagrant 制作box 然后创建集群安装,这种安装方式是最完整也是最麻烦的。现在先介绍第二种安装方式,第二种方式是把k8s 镜像拉取下来并运行容器,但因为国内网络的问题,镜像依赖拉不下来,我们可以上github 拉k8s-for-docker-desktop 到本地安装。
git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git
cd k8s-for-docker-desktop
// 执行脚本安装K8S相关镜像(确认k8s-for-docker-desktop文件夹下的images中的k8s和本地安装的docker中需要的k8s版本保持一致)
./load_images.sh
需要注意git tag 是不是和你的 docker中的k8s版本保持一致
然后打开你的docker desktop,勾选k8s:
等docker 重启后就安装完成了,打开命令行窗口执行指令,验证是否安装成功:
kubectl cluster-info
第三种安装方式需要kubeadm 来进行集群安装,k8s集群可以一主多从或者多主多从,这里我搭建的是一主多从集群。
安装步骤:
# 修改linux的内核采纳数,添加网桥过滤和地址转发功能
# 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加载配置
[root@master ~]# sysctl -p
# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter
# 1、由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源
# 2、编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgchech=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# 3、安装kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
# 4、配置kubelet的cgroup
#编辑/etc/sysconfig/kubelet, 添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
# 5、设置kubelet开机自启
[root@master ~]# systemctl enable kubelet
# 在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看
[root@master ~]# kubeadm config images list
# 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里需要指定阿里云镜像仓库地址
kubeadm init \
--apiserver-advertise-address=局域网ip \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=-service 的CIDR\
--pod-network-cidr=Pod 网络的 CIDR
kubeadm join 192.168.18.1:8080 --token xxx \
--discovery-token-ca-cert-hash xxx
kubectl get nodes
下一章节我们学习k8s的基本指令并对容器进行调度,感谢阅读