搭一个K8s集群

2020/12/30 08:13
阅读数 3K
在公司一直用的现成的kubernetes环境,封装的组件很多,这次尝试自己搭一个轻量级的环境,踩了好多坑,下面经验奉上。


前置要求:
    两台主机,可以是云服务器、虚拟机,网络要互通,内存最好大于 2GB,主机上都要提前安装Docker。

下面我使用的两台主机。

主机名(centos
ip
角色
guozhao-50
192.168.9.50
Master
guozhao-51
192.168.9.51
slave


搭建过程


1、首先在两台主机配置阿里云镜像源地址


#进入root用户 sudo su #配置镜像地址 cat </etc/yum.repos.d/kubernetes.repo [kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=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

2、设置两台主机SELinux为disable,设置swap进禁用

   
   
   
#禁用SELinux setenforce 0 #禁用swap,由于启动swap会产生性能问题,所以k8s默认禁用swap sed -ri 's/.*swap.*/#&/' /etc/fstab swapoff -a


3、在两台主机分别安装kubeadm,kubelet,kubectl

yum install -y kubelet kubeadm kubectl

4、两台主机设置开机自启


   
   
   
systemctl enable kubelet.service


5、创建集群


   
   
   
#在准备作为master节点的主机运行命令 kubeadm init \   --kubernetes-version=v1.19.0 \   --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \   --pod-network-cidr=10.24.0.0/16 \   --ignore-preflight-errors=Swap
# --kubernetes-version 指定版本 # --image-repository 由于墙的问题,使用阿里云的镜像地址 # --pod-network-cidr 设置pod区间,不设置也可正常工作 # --ignore-preflight-errors 如果预检出现错误可以忽略



此时可以看到各个组件已经启动起来了



如果上一步出现错误,需要重置kubeadm

   
   
   
kubeadm reset


6、但是此时kubectl命令行不能用,需要将kubeconfig复制到指定位置


   
   
   
#切回普通用户 su centos #拷贝文件 mkdir ~/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

此时查看集群信息
   
   
   
kubectl get node


可以看到是NotReady,原因是没有准备CNI网络插件

7、安装CNI网络插件


   
   
   
#这里安装的weave kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"


等待安装完成。

稍候再查看master,状态为Ready



8、node节点的加入


   
   
   
#首先在master获取token,在master执行 kubeadm token list #如果token已经过期,体现为找不到token,执行以下命令生成token kubeadm token create #生成token 


master获取ca证书sha256编码hash值

   
   
   
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'



slave上执行kubeadm join


   
   
   
sudo su #进入root用户 kubeadm join <master-ip:port> \ #master-ip:port为kubeconfig文件的ip和port --token <token> \ #上一步的token --discovery-token-ca-cert-hash sha256:<hash>#上一步的hash

查看终端



   
   
   
注:如果遇到下图错误执行命令 echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables


9、在node节点使用kubeconfig

master节点的kubeconfig文件复制到slave节点普通用户的~/.kube

10、查看节点情况
   
   
   
#开始可能会出现node节点NotReady,等待镜像拉取完毕会变为Ready kubectl get node


此时一主一从的k8s集群已经搭建完毕。


后台回复“加群”,带你进入高手如云交流群


推荐阅读:

一文读懂你身边的网络

Linux 环境变量配置全攻略

如何定位软中断CPU使用率过高的问题?

10大高性能开发利器

安全容器gVisor详解

TCP协议灵魂 12 问,总会用得到

QUIC也不是万能的

超详干货!Linux环境变量配置全攻略

为什么要选择智能网卡?

60,000毫秒内对Linux进行性能诊断

为什么Linux需要Swapping

Linux系统常用命令速查手册

一文读懂容器网络发展

一文搞懂CDN加速原理

8 个问题彻底搞透 DNS 协议

三张图彻底搞懂iptables和netfilter

故障排查:K8s中Pod无法正常解析域名

网络排错大讲解~

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载



喜欢,就给我一个“在看”



10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024,即可免费获取!!

本文分享自微信公众号 - Linux云计算网络(cloud_dev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
1
8 收藏
分享
加载中
打赏
0 评论
8 收藏
1
分享
返回顶部
顶部