Kubernetes:使用kubeadm安装Kubernetes集群

荔枝君最近在准备CKA(Certificated Kubernetes Administrator)考试,首先就需要学会Kubernetes安装。荔枝君选择了目前主流的安装方式——Kubeadm,搭建Kubernetes集群。

、前期准备

1.服务器准备:

荔枝君花了血本在腾讯云上购买了三台服务器(我好心疼,本来考试报名费就花了我不少钱 ),服务器配置和角色设置如下:

角色 机器名 数量 配置 系统
master master 1 2C4G CentOS 7.7 64位
node node1,node2 2 2C4G CentOS 7.7 64位

2.软件版本:

需要准备安装的软件版本选择主要如下:

软件

设计组件

版本

Docker

docker 19.03.7-3.el7
Kubernetes kubelet,kubeadm 1.19
网络组件 calico

v3.16.0

 

、环境准备

1.机器名配置:

在 /etc/host 中配置信息如下:

echo -e "49.*.*.* node1\n129.*.*.* master\n49.*.*.* node2\n" >> /etc/hosts 

同时设置机器名:

hostnamectl set-hostname master #master机设置hostnamectl set-hostname node1 #node1机设置hostnamectl set-hostname node2 #node2机设置

2.国内阿里云yum源配置:

阿里云镜像站点:

https://developer.aliyun.com/mirror/?spm=a2c6h.13651104.0.d1002.74ea2a7bZRh1nw

由于国外下载源网速很慢,所以配置docker和kubernetes阿里镜像源。获取docker的yum源repo放置于 /etc/yum.repos.d 目录下:

cd /etc/yum.repos.d/wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

获取后需要安装一些必要的系统工具,然后查找Docker-CE的版本确定可用:

#安装必要软件yum install -y yum-utils device-mapper-persistent-data lvm2#获取docker版本yum list docker-ce.x86_64 --showduplicates | sort -r

获取Kubernetes的yum源放置于 /etc/yum.repos.d 目录下:

cat < /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF

3.关闭防火墙:

service firewalld stopsystemctl disable firewalld

4.关闭交换内存,否则kubelet无法启动:

#临时关闭swapoff -a#重启后会失效,若要永久关闭,编辑/etc/fstab文件,将其中swap分区一行注释掉,彻底关闭#/dev/mapper/centos-swap swap                    swap    defaults        0 0

5.  禁用SELinux:

setenforce 0

三、Kubernetes集群搭建

注意:步骤1-2是master和node节点共同的步骤

1.安装Docker

选择版本为19.03.7-3.el7的docker进行安装:

yum -y install docker-ce-19.03.7-3.el7

Kubernetes:使用kubeadm安装Kubernetes集群_第1张图片

启动docker并设置开机自启:

systemctl enable docker && systemctl start docker

安装完需要配置docker的国内加速,避免拉取镜像过慢:

cat < /etc/docker/daemon.json{
      "registry-mirrors": [    "https://docker.mirrors.ustc.edu.cn/",    "https://hub-mirror.c.163.com",    "https://registry.docker-cn.com",    "https://dockerhub.azk8s.cn",    "https://reg-mirror.qiniu.com",    "https://registry.docker-cn.com"  ]}EOF

配置完需要重启docker,保证加速配置有效:

systemctl restart docker

2.安装Kubernetes组件

    首先安装kubelet,kubeadm和kubectl组件:

yum install -y kubelet-1.18.2-0 kubeadm-1.18.2-0 kubectl-1.18.2-0 ipvsadm

Kubernetes:使用kubeadm安装Kubernetes集群_第2张图片

安装完需要配置kubelet:

  • 默认情况下,Kubelet不允许所在的主机存在交换分区,后期规划的时候,可以考虑在系统安装的时候不创建交换分区,针对已经存在交换分区的可以设置忽略禁止使用Swap的限制,不然无法启动Kubelet:

vim /etc/sysconfig/kubeletKUBELET_EXTRA_ARGS="--fail-swap-on=false"
  • 配置内核参数:

cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1EOF#配置内核参数生效sysctl -p  /etc/sysctl.d/k8s.conf

Kubernetes:使用kubeadm安装Kubernetes集群_第3张图片

  • 启动kubelet并设置开机自启动。注意此时kubelet是无法正常启动,只有等到集群初始化成功才会正常启动:

systemctl enable kubelet && systemctl start kubelet

3.使用kubeadm部署master:

在master节点上使用kubeadm执行初始化操作:

kubeadm init \  --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \  --service-cidr=192.168.0.0/16 \  --pod-network-cidr=10.244.0.0/16 \  --service-dns-domain=cluster.local \  --upload-certs \  --kubernetes-version=v1.18.2 \  --ignore-preflight-errors=Swap \  --ignore-preflight-errors=NumCPU

初始化完成会出现操作信息:

Kubernetes:使用kubeadm安装Kubernetes集群_第4张图片

按照图片中信息进行操作:

  • 准备存放kubeconfig的目录并拷贝赋予权限:

mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config
  • 使用kubectl查看组件状态,如图所示为正常:

kubectl get cs

Kubernetes:使用kubeadm安装Kubernetes集群_第5张图片

这时候仅仅配置了master,但由于未配置网络插件,所以master节点状态不ready:

kubectl get node

Kubernetes:使用kubeadm安装Kubernetes集群_第6张图片

4.配置网络插件

Calico配置参考:

https://docs.projectcalico.org/getting-started/kubernetes/quickstart

这里选择Calico网络插件进行配置:

#删除master节点的taint,从而可以部署podkubectl taint nodes --all node-role.kubernetes.io/master-#安装calico,需要等待一段时间,因为需要拉取镜像kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Kubernetes:使用kubeadm安装Kubernetes集群_第7张图片

配置完成查看pod和node状态,这时候master应该是ready的状态:

kubectl get pod -Akubectl get node

Kubernetes:使用kubeadm安装Kubernetes集群_第8张图片

5.添加Node节点:

    使用初始化成功后的信息在需要增加的node上运行。这个信息超过24小时会失效。如果忘记了也没关系:

#使用下列命令在master节点生成信息kubeadm token create --print-join-command#在增加的node节点上运行信息kubeadm join 172.17.0.4:6443 --token 043nwq.w7e39nvhecwjlm25     --discovery-token-ca-cert-hash sha256:39e9dd38f9faa0f40ab8e7d3d4161c29cc230a0f96290e66f65c69ec8b4a13b9

Kubernetes:使用kubeadm安装Kubernetes集群_第9张图片

Kubernetes:使用kubeadm安装Kubernetes集群_第10张图片

四、集群测试

创建简单的 Pod 来用作测试环境,这里基础镜像选择busybox。注意:busybox版本不要太新,否则会出现部署pod失败的问题。

1. 准备一个简单的yaml文件:

apiVersion: v1kind: Podmetadata:  name: busybox  namespace: defaultspec:  containers:  - name: busybox    image: busybox:1.28.3    command:      - sleep      - "3600"    imagePullPolicy: IfNotPresent  restartPolicy: Always

2. 执行该yaml文件:

kubectl apply -f test.yaml

Kubernetes:使用kubeadm安装Kubernetes集群_第11张图片

3. 一旦该 pod 运行,在环境中执行 nslookup,如下图所示为正常:

kubectl exec -ti busybox -- nslookup kubernetes.default

Kubernetes:使用kubeadm安装Kubernetes集群_第12张图片

具体可以参考:http://docs.kubernetes.org.cn/827.html

—— 参考资料——

kubernetes入门(番外篇)公网k8s集群搭建:http://www.riversouth.xyz/java/container/kubernetes/2019/07/25/kubernetes%e5%85%a5%e9%97%a8%ef%bc%88%e7%95%aa%e5%a4%96%e7%af%87%ef%bc%89%e5%85%ac%e7%bd%91k8s%e9%9b%86%e7%be%a4%e6%90%ad%e5%bb%ba/

Kubernetes官方文档-Kubeadm:https://kubernetes.io/docs/reference/setup-tools/kubeadm/

Kubernetes官方文档-Creating a cluster with kubeadm:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

 

荔枝先生

Mr. Lichee

努力成长为一颗成熟的荔枝.....

Kubernetes:使用kubeadm安装Kubernetes集群_第13张图片

 

你可能感兴趣的:(Kubernetes,kubernetes)