快速搭建Kubernetes集群环境
source link: https://mp.weixin.qq.com/s?__biz=MzU0NDEyODkzMQ%3D%3D&%3Bmid=2247505259&%3Bidx=1&%3Bsn=dedd0f05aa579373a010c45eeb0eacd3
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.
请点击上方 “云技术” 添加订阅!
01
前言
1.1 目标
随着云原生技术的蓬勃发展,现在科技人员对于学习和使用该新技术有着强烈的需求,但是由于该技术对所使用的软硬件都有较高的要求,一定程度上提高了学习的门槛。
虽然采用Minikube也可以搭建环境,但是由于Minikube具有很多限制,很难真实地反映实际的分布式网络环境,很多集群功能不能实施,因此我们需要搭建多节点的网络集群
在这里我们利用多种虚拟机技术搭建虚拟的集群环境,使低配硬件也能满足一定的学习、测试需求。
该方案也可以用于其他分布式集群的搭建,同时该环境具有搭建快速、易于恢复的特点。
1.2 硬件
CPU:没有具体要求
内存:8GB+
硬盘:20GB+
网络:能够连接到互联网
1.3 软件
Windows 7/10(搭建Ubuntu-20.04 虚拟机)
VMware workstation(搭建Ubuntu-20.04 虚拟机)
Vagrant(搭建CentOS 7.6.1811虚拟机集群)
virtualbox(搭建CentOS 7.6.1811虚拟机集群)
Docker(搭建K8S集群)
kubelet(搭建K8S集群)
kubeadm(搭建K8S集群)
kubectl(搭建K8S集群)
1.4 搭建步骤
1、 利用VMware搭建一个Ubuntu 20.04虚拟机作为宿主机
2、 利用vagrant在VMware搭建的虚拟机内部建立3节点CentOS 7虚拟机集群
3、 通过脚本自动建立kubernetes集群
1.5 适用人群
所有需要学习、使用分布式集群技术的人员
由于硬件设施限制无法建立多节点的学习者
本环境非生产环境,仅用于开发、测试用途
02
集群搭建
2.1 集群架构
2.2 搭建VMware虚拟机
2.2.1. VMware软件的安装
互联网上有很多相关教程,这里就不再赘述。
2.2.2. 设置虚拟机NAT网络
编辑->虚拟网络编辑器
2.2.3. 新建虚拟机
Ubuntu ISO下载地址:
https://ubuntu.com/download/desktop
我使用的是ubuntu-20.04-desktop-amd64.iso
2.2.4. 安装基本软件及设置:
进入Xwindow,打开terminal,设置Vmware虚拟机网络地址
vi /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
ethernets:
ens32:
addresses: [192.168.42.101/24]
gateway4: 192.168.42.2
nameservers:
addresses: [192.168.42.2]
netplan apply
ip a s
设置华为apt安装源
sudo sed -i ‘s/us.archive.ubuntu.com/mirrors.huaweicloud.com\/repository/g’ /etc/apt/sources.list
sudo apt update
sudo apt -y install openssh-server
使用终端工具连接Ubuntu虚拟机,并安装必要软件
sudo apt -y install net-tools git virtualbox curl
设置Ubuntu虚拟机上的K8S集群的网络地址
cat | sudo tee -a /etc/hosts<<EOF
172.42.42.100 kmaster.example.com kmaster
172.42.42.101 kworker1.example.com kworker1
172.42.42.102 kworker2.example.com kworker2
EOF
2.3. 安装vagrant虚拟机软件、box镜像
当然也可以使用VMware来搭建集群,但VMware消耗资源较多,因此选择使用vagrant搭建虚拟机集群。
2.3.1. 下载、安装vagrant软件
下载地址:
https://www.vagrantup.com/downloads.html
可以根据需要选择合适的版本,由于前面搭建的是Ubuntu虚拟机,因此我选择:
如果有代理地址,可根据实际情况设置代理地址:
export http_proxy=http://192.168.42.1:1080
export https_proxy=http://192.168.42.1:1080
wget https://releases.hashicorp.com/vagrant/2.2.8/vagrant_2.2.8_x86_64.deb
sudo apt install ./vagrant_2.2.8_x86_64.deb
检查安装结果:
vagrant version
2.3.2. 下载、安装box镜像
由于我们选择搭建集群的OS为centos7,因此需通过浏览器下载,然后上传到Linux服务器,下载地址(直接通过vagrant进行下载速度较慢):
https://app.vagrantup.com/centos/boxes/7/versions/1905.1/providers/virtualbox.box
安装:
vagrant box add --name centos/7 ~/CentOS-7-x86_64-Vagrant-1905_01.VirtualBox.box
检查安装结果:
vagrant box list
2.4. 搭建kubernetes集群
该集群拥有一个master节点,两个worker节点
git clone https://github.com/zhan-yl/kubernetes.git
cd kubernetes/vagrant-provisioning
启动虚拟机集群(同时完成K8S集群安装、配置),后续启动K8S集群仍使用该命令
vagrant up
检查运行状态:
vagrant status
关闭虚拟机集群:
vagrant halt
03
基本使用
3.1. 基本操作
进入master节点:
cd kubernetes/vagrant-provisioning
vagrant ssh kmaster
版本查看:
docker version
kubectl version --short
查看集群状态信息:
kubectl cluster-info
检查node状态:
kubectl get no
检查系统组件状态:
kubectl get -n kube-system all
部署nginx应用:
kubectl create deployment nginx --image=nginx
暴露服务端口:
kubectl expose deployment nginx --port=80 --type=NodePort
检查pod及service状态:
kubectl get pod,svc -o wide
访问nginx服务:
curl kworker1.example.com:30796
或者
curl kworker2.example.com:30796
3.2. 远程访问集群
在Ubuntu虚拟机上安装kubectl
如果有代理地址,可根据实际情况设置代理地址:
sudo snap set system proxy.http=http://192.168.42.1:1080
sudo snap set system proxy.https=http://192.168.42.1:1080
sudo snap install kubectl --classic
进行客户端配置:
mkdir -p ~/.kube
scp [email protected]:.kube/config ~/.kube
口令为:vagrant
现在远程也可以使用集群(偶尔由于网络超时不能连接,只需重启一下VMare虚拟机即可:sudo reboot cd kubernetes/vagrant-provisioning/;vagrant up):
04
附录
4.1. 其他方案
也可以参考使用microk8s方案
4.2. 参考文档
https://github.com/justmeandopensource/kubernetes
https://blog.csdn.net/fenglailea/article/details/88745642
https://kubernetes.io/zh/docs/tasks/
https://microk8s.io/
詹玉林
中国民生银行信息科技部开源软件支持组工程师。曾经担任过银行核心系统开发工程师,IBM informix数据库L2支持工程师,民生银行数据库DBA等角色。目前主要负责与elasticsearch相关的大数据方面的工作。
本文转载自公众号: 民生运维人 , 点击查看原文
↓↓ 点击"阅读原文" 【加入云技术社区】
相关阅读:
万字长文:Kubernetes operator 模式开发实践
RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」
更多文章请关注
文章好看点这里[在看]:point_down:
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK