12
搭一个K8s集群
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.
搭一个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进禁用
3、在两台主机分别安装kubeadm,kubelet,kubectl#禁用SELinux
setenforce 0
#禁用swap,由于启动swap会产生性能问题,所以k8s默认禁用swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a
yum install -y kubelet kubeadm kubectl
4、两台主机设置开机自启
systemctl enable kubelet.service
5、创建集群
此时可以看到各个组件已经启动起来了 如果上一步出现错误,需要重置kubeadm#在准备作为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 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网络插件
等待安装完成。 稍候再查看master,状态为Ready 8、node节点的加入#这里安装的weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
在master获取ca证书sha256编码hash值#首先在master获取token,在master执行
kubeadm token list
#如果token已经过期,体现为找不到token,执行以下命令生成token
kubeadm token create #生成token
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
9、在node节点使用kubeconfig 将master节点的kubeconfig文件复制到slave节点普通用户的~/.kube下 10、查看节点情况注:如果遇到下图错误执行命令
echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
此时一主一从的k8s集群已经搭建完毕。#开始可能会出现node节点NotReady,等待镜像拉取完毕会变为Ready
kubectl get node
后台回复“加群”,带你进入高手如云交流群
推荐阅读:
10大高性能开发利器
喜欢,就给我一个“在看”
10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024」,即可免费获取!!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK