容器编排引擎Kubernetes 05——初始化集群

130 阅读3分钟

1 修改K8S的yum源

修改 kubernetes.repo 文件中URL为阿里源地址,也可以根据自己的需要,修改为腾讯、华为或者清华的yum源镜像地址。

vi /etc/yum.repos.d/kubernetes.repo

修改为以下内容

[Kubernetes]

name=Kubernetes

baseurl=mirrors.aliyun.com/kubernetes/…

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=mirrors.aliyun.com/kubernetes/…
mirrors.aliyun.com/kubernetes/…

清除并重建缓存

yum clean all
yum -y makecache

2 安装K8S工具

主要是安装K8S中的三个组件:kubelet kubeadm kubectl,并指定版本,避免下载最新版本导致不兼容。

(注:技术学习,不要求新,最新的版本往往并不是最优的选择,新版本中遇到的问题可能还没有现成的解决方法。不利于学习。)

yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
#设置kubelet为开机自启动
systemctl enable kubelet

3 部署K8S

前边的所有操作,全部都需要在 master 及节点上进行操作。

下边的操作,则需要区分 master 及节点机器。

3.1 部署master

进入到 master 服务器,执行以下指令:

kubeadm init \
    --apiserver-advertise-address=192.168.137.3 \
    --image-repository registry.aliyuncs.com/google_containers \
    --kubernetes-version v1.23.0 \
    --service-cidr=10.96.0.0/12 \
    --pod-network-cidr=10.244.0.0/16 \
    --ignore-preflight-errors=all

相关参数说明:

  • --apiserver-advertise-address 集群master的IP地址,根据实际填写
  • --image-repository 镜像仓库地址
  • --kubernetes-version K8S版本
  • --service-cidr service服务的虚拟IP,由集群外部访问集群内部时,可通过该地址进行访问
  • --pod-network-cidr POD网络地址,集群内部虚拟IP,应与service服务的虚拟IP不同
  • --ignore-preflight-errors 设置忽略预检错误

执行完该命令后,末尾会生成节点加入到k8s集群的指令。

image.png

该token在24小时内有效,过时需要重新生成,生成的指令为:

kubeadm token create --print-join-command

创建必要文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.2 添加节点

进入到节点服务器,执行master服务器末尾生成的指令 image.png

如图,执行完成后,该节点被成功加入到了k8s集群中。

3.3 集群验证

在 master 中执行指令 kubectl get nodes ,两个服务器都加入到了K8S集群中,一台作为控制器和master,另外一台作为节点。

image.png

4 部署容器网络

4.1 配置Calico

Calico是一个纯三层的数据中心网络解决方案,是目前K8S主流的网络方案。K8S中要求各容器互联互通且相互隔离。

继续进入到master中进行操作。

下载yaml文件

wget https://docs.projectcalico.org/v3.15/manifests/calico.yaml --no-check-certificate

下载完成后,需要修改里面定义的POD网络(CALICO_IPV4POOL_CIDR),与前面 3.1 步骤中 kubeadm init-pod-network-cidr 指定的内容保持一致。

在yaml文件中搜索并找到该 name 数据,打开注释并对value进行修改。

image.png

将该yaml文件,放到master服务器的 /usr/local 目录或其它任意目录下,在该目录下执行如下指令: kubectl apply -f calico.yaml

image.png

服务器将从网络中下载calico相关镜像到节点,该过程持续时间较长。

4.2 查看K8S集群

在master中重新执行指令 kubectl get nodes,查看节点状态,此时各节点都处于 Ready 状态。

image.png

查看通信状态 kubectl get pods -n kube-system image.png