34

快速搭建Kubernetes集群环境

 3 years ago
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.

请点击上方 “云技术” 添加订阅!

iAJFVzu.jpg!mobile

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 集群架构

A3IFzy2.png!mobile

2.2 搭建VMware虚拟机

2.2.1. VMware软件的安装

互联网上有很多相关教程,这里就不再赘述。

2.2.2. 设置虚拟机NAT网络

编辑->虚拟网络编辑器

QnQrMzQ.png!mobile

a22EZb.png!mobile

2.2.3. 新建虚拟机

Ubuntu ISO下载地址:

https://ubuntu.com/download/desktop

我使用的是ubuntu-20.04-desktop-amd64.iso

ZZBZNne.png!mobile

qUZjuee.png!mobile

JvMruyj.png!mobile

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

FF7zArm.png!mobile

设置华为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

EBzuqyq.png!mobile

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

UJ7ZNz2.png!mobile

检查安装结果:

vagrant box list

AzeEvqe.png!mobile

2.4. 搭建kubernetes集群

该集群拥有一个master节点,两个worker节点

git clone https://github.com/zhan-yl/kubernetes.git

cd kubernetes/vagrant-provisioning

启动虚拟机集群(同时完成K8S集群安装、配置),后续启动K8S集群仍使用该命令

vagrant up

bYZF3en.png!mobile

检查运行状态:

vagrant status

zmUru2n.png!mobile

关闭虚拟机集群:

vagrant halt

03

基本使用

3.1. 基本操作

进入master节点:

cd kubernetes/vagrant-provisioning

vagrant ssh kmaster

版本查看:

docker version

fyaMbmE.png!mobile

kubectl version --short

z6v2iuE.png!mobile

查看集群状态信息:

kubectl cluster-info

FNza2m.png!mobile

检查node状态:

kubectl get no

6fMneeU.png!mobile

检查系统组件状态:

kubectl get -n kube-system all

jEFNBrq.png!mobile

部署nginx应用:

kubectl create deployment nginx --image=nginx

iaAJJfb.png!mobile

暴露服务端口:

kubectl expose deployment nginx --port=80 --type=NodePort

z63eqmZ.png!mobile

检查pod及service状态:

kubectl get pod,svc -o wide

B3Izeyz.png!mobile

访问nginx服务:

curl kworker1.example.com:30796

或者

curl kworker2.example.com:30796

iyqeEfj.png!mobile

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

Mb6fmiR.png!mobile

现在远程也可以使用集群(偶尔由于网络超时不能连接,只需重启一下VMare虚拟机即可:sudo reboot cd kubernetes/vagrant-provisioning/;vagrant up):

RRVJnam.png!mobile

mQJvMnY.png!mobile

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/

ZB3YNz2.jpg!mobile

詹玉林

中国民生银行信息科技部开源软件支持组工程师。曾经担任过银行核心系统开发工程师,IBM informix数据库L2支持工程师,民生银行数据库DBA等角色。目前主要负责与elasticsearch相关的大数据方面的工作。

本文转载自公众号: 民生运维人 点击查看原文

↓↓ 点击"阅读原文" 【加入云技术社区】

相关阅读:

2万字长文:Kubernetes云原生开源分布式存储

达达基于Kubernetes混部的日志系统演变

万字长文:Kubernetes operator 模式开发实践

神话还是现实?Docker和Kubernetes的完美架构

云原生五大趋势预测,K8s 安卓化位列其一

从1到2000个微服务,史上最落地的实践云原生25个步骤

万字长文:以业务为核心的云原生体系建设

CNCF 年度调查报告:15个有趣的云原生趋势

最新最全 2020 云状态报告「69页PDF下载」

RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」

更多文章请关注

FfAVJry.jpg!mobile

文章好看点这里[在看]:point_down:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK