12

搭一个K8s集群

 3 years ago
source link: https://my.oschina.net/u/3872630/blog/4870042
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
搭一个K8s集群 - 猿大白的个人空间 - OSCHINA - 中文开源技术交流社区 在公司一直用的现成的kubernetes环境,封装的组件很多,这次尝试自己搭一个轻量级的环境,踩了好多坑,下面经验奉上。 前置要求:     两台主机,可以是云服务器、虚拟机,网络要互通,内存最好大于 2GB,主机上都要提前安装Docker。 下面我使用的两台主机。 主机名(centos) 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 如果预检出现错误可以忽略
   
   
此时可以看到各个组件已经启动起来了 8ce0d63f-89f0-49e8-9bd3-ab38be8ac74e.png 如果上一步出现错误,需要重置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
   
   
c0da9e97-906c-44d2-97ca-ca43d32e7f35.png 可以看到是NotReady,原因是没有准备CNI网络插件 7、安装CNI网络插件
   
   #这里安装的weave
    
    kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
   
   
50049cd6-5b0d-4109-984f-5e15c15e1e5b.png 等待安装完成。 稍候再查看master,状态为Ready 51a2462c-f285-4a9e-a31d-5f0fa6a962e4.png 8、node节点的加入
   
   #首先在master获取token,在master执行
    
    kubeadm token list
    
    #如果token已经过期,体现为找不到token,执行以下命令生成token
    
    kubeadm token create #生成token 
   
   
4ac5b1bf-6fe1-4bb5-bd26-70bb65df44e8.png 在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/^.* //'
   
   
2180a7a2-814e-4a40-b2b6-0a8dcd06c72f.png 在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
   
   
6bb011d5-bdb2-4470-8eb2-b54ba9928bef.png
   
   注:如果遇到下图错误执行命令
    
    echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
   
   
717e281d-08b3-4acf-be95-73a902cae776.png 9、在node节点使用kubeconfig 将master节点的kubeconfig文件复制到slave节点普通用户的~/.kube下 10、查看节点情况
   
   #开始可能会出现node节点NotReady,等待镜像拉取完毕会变为Ready
    
    kubectl get node
   
   
df5416de-cdc6-4970-a195-f8221b26b21e.png 此时一主一从的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下载


喜欢,就给我一个“在看”
c5da8a89-14dd-44f3-86b8-8a698bfc3c3b.png

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK