首页 > 快讯 >

全球百事通!微服务 - 搭建k8s(minikube)与简单wordPress实战

2023-03-10 12:07:15 来源:腾讯云

Kubernetes 的基本架构

Kubernetes 的基本架构,由Matser和Node子节点组成,使用kubectl进行通信, Master 里的组件有哪些:


【资料图】

Master 里有 4 个组件,分别是 apiserver、etcd、scheduler、controller-manager。

Kubernetes 的基本架构图

Kubernetes 的基本架构,由Matser和Node子节点组成,使用kubectl进行通信, Master 里的组件有哪些:

Master 里有 4 个组件,分别是 apiserver、etcd、scheduler、controller-manager。

Api Server 系统唯一入口联络员,controller-manager监控运维节点容器状态,kube scheduler负责容器的编排,etcd负责持久化存储和服务发现。

这 4 个组件也都被容器化了,运行在集群的 Pod 里,我们可以用 kubectl 来查看它们的状态,使用命令:

kubectl get pod -n kube-system

安装

我使用的电脑是Mac pro M2芯的,使用的虚拟环境是 Ubuntu 22.04 ,M2芯兼容性不是特别好,所以尽量跟我博客中的版本保持一致。

虚拟机环境 Ubuntu 22.04docker :20.10.17minikube:v1.25.2

虚拟机初始化

安装虚拟机需要的工具,ip addr 查看ip,可以使用终端登录虚拟机。

sudo apt updatesudo apt install -y git vim curl jq openssh-server

下载时请注意版本,以宿主机的版本为准,下载对应的版本,不然会报bash: /usr/local/bin/kubectl:无法执行二进制文件: 可执行文件格式错误的错误提示。

curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.25.2/minikube-linux-arm64sudo install minikube /usr/local/bin/

使用minikube version查看版本:

minikube version: v1.25.2commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7

使用minikube kubectl命令来安装kubectl:

在这之前需要安装docker,使用命令sudo snap install docker,把当前用户加入到docker组,命令如下:

sudo docker version --format {{.Server.Os}}-{{.Server.Version}}sudo groupadd dockersudo usermod -aG docker $USER && newgrp docker

启动:

minikube start --image-mirror-country="cn"--image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers"

启动完成后可以使用这两个命令查看集群状态:

minikube statusminikube node list

查看kubectl版本,minikube kubectl -- version

使用 Linux 的“alias”功能,为它创建一个别名,写到当前用户目录下的 .bashrc 里,也就是这样:

alias kubectl="minikube kubectl --"

虚拟机安装完成后,重启一下虚拟机,不然会报Exiting due to DRV_NOT_HEALTHY:意思是没找到容器的驱动器,有时间这个问题的原因是docker没有启动。

执行kubectl run ngx --image=nginx:alpine,这里涉及 Kubernetes 里的一个非常重要的概念:Pod。

命令执行之后kubectl get pod可以看到,在 Kubernetes 集群里就有了一个名字叫 ngx 的 Pod 正在运行,表示我们的这个单节点 minikube 环境已经搭建成功。

插件

查看插件的命令minikube addons list

比较重要的有两个:DNS 和 Dashboard。

在 minikube 环境里执行一条简单的命令,就可以自动用浏览器打开 Dashboard 页面,而且还支持中文 minikube dashboard

如果想设置外网可以访问,执行命令kubectl proxy --port=8001 --address="192.168.88.131" --accept-hosts="^.*" &

kubectl 常用命令

编写yaml文档有两个小技巧,一个是参考Kubernetes 的官方参考文档,https://kubernetes.io/docs/reference/kubernetes-api/。

第二个是使用kubectl命令:

kubectl explain podkubectl explain pod.metadatakubectl explain pod.speckubectl explain pod.spec.containers

使用kubectl例如写入一个模版,输出到一个指定文件中:

kubectl run ngx --image=nginx:alpine --dry-run=client -o yaml > nginx_pod.yaml

pod的关键在于yaml文件的编写,然后用kubectl去执行:

# 添加podkubectl apply -f nginx_pod.yaml# 删除podkubectl delete pod [podname]# 查看pod节点kubectl get pod -o wide# 查看日志kubectl logs [podname]# 查看pod详细情况kubectl describe pod [podname]# 登陆pod kubectl exec -it ngx-pod -- bash

K8s nginx + WordPress + MariaDb 实战

先从搭建一个简单的WordPress网站开始,在这之前你先了解一下yaml语言,因为k8s需要的通信都是建立在yaml语言之上,和web中的html一样,是所有运行的基础。

nginx + WordPress + MariaDb流程图

先看看下图,这是我们要完成的事情,也是k8s的原理所在,宿主机上搭建Nginx 做反向代理,相当于做了一次网关,K8s映射的端口,已达成通信的目的。

1:部署MariaDB,准备yml文件 maria.yml

apiVersion: v1kind: ConfigMapmetadata:  name: maria-cmdata:  DATABASE: "db"  USER: "wp"  PASSWORD: "123"  ROOT_PASSWORD: "123"---apiVersion: v1kind: Podmetadata:  name: maria-pod  labels:    app: wordpress    role: databasespec:  containers:  - image: mariadb:10    name: maria    imagePullPolicy: IfNotPresent    ports:    - containerPort: 3306    envFrom:    - prefix: "MARIADB_"      configMapRef:        name: maria-cm

执行命令kubectl apply -y maria.yml

2.部署WordPress的Pod

执行kubectl get pod -o wide命令,查看maria-pod的IP地址和运行状态,我本地的是172.17.0.6,状态是Running,表示ok。

node3@node3-virtual-machine:~/yaml$ kubectl get pod -o wideNAME        READY   STATUS    RESTARTS   AGE   IP           NODE       NOMINATED NODE   READINESS GATESmaria-pod   1/1     Running   0          96m   172.17.0.6   minikube              

准备yml文件 wordpress-pod.yml

apiVersion: v1kind: ConfigMapmetadata:  name: wp-cmdata:  HOST: "172.17.0.6"  USER: "wp"  PASSWORD: "123"  NAME: "db"---apiVersion: v1kind: Podmetadata:  name: wp-pod  labels:    app: wordpress    role: websitespec:  containers:  - image: wordpress:5    name: wp-pod    imagePullPolicy: IfNotPresent    ports:    - containerPort: 80    envFrom:    - prefix: "WORDPRESS_DB_"      configMapRef:        name: wp-cm

执行部署命令,kubectl apply -f wordpress-pod.yml

3.WordPress Pod 映射端口号,让它在集群外可见

因为 Pod 都是运行在 Kubernetes 内部的私有网段里的,外界无法直接访问,想要对外暴露服务,需要使用一个专门的 kubectl port-forward 命令,它专门负责把本机的端口映射到在目标对象的端口号,经常用于 Kubernetes 的临时调试和测试。

kubectl port-forward wp-pod 8080:80 &

如果想关闭端口转发,需要敲命令 fg ,它会把后台的任务带回到前台,然后就可以简单地用“Ctrl + C”来停止转发了。

Dashboard

4.创建反向代理的 Nginx

nginx的配置文件,准备proxy.conf,我本地的路径/home/node3/conf/proxy.conf

server {  listen 80;  default_type text/html;  location / {      proxy_http_version 1.1;      proxy_set_header Host $host;      proxy_pass http://127.0.0.1:8080;  }}

执行docker命令,我本机虚拟机的ip是192.168.88.131 :

docker run -d --rm \    --net=host \    -v /home/node3/conf/proxy.conf:/etc/nginx/conf.d/default.conf \    nginx:alpine
安装完成
上一篇:

全国人大代表汤维建:建议完善基层立法联系点制度

下一篇:

最后一页

x
推荐阅读

全球百事通!微服务 - 搭建k8s(minikube)与简单wordPress实战

全国人大代表汤维建:建议完善基层立法联系点制度

全球快消息!3月10日财经简报;

环球观察:天的组词和拼音_天的组词

山东谷仁食品有限公司

中烟香港:2022年公司权益持有人应占年内利润3.75亿港元 全球观天下

乐器的英文单词复数_乐器的英文单词

财报金选|一度跌逾7%!爱美客营收净利双增长,且有“超强分红方案”加持,股价为何稳不住? 焦点短讯

环球关注:建筑工程技术与设计期刊影响因子_建筑工程技术与设计期刊

白点癫风传染老婆吗_白癜风传染吗 每日快报

陕西省陈仓区发布大风蓝色预警 时快讯

全球看点:中国环境标志含义简介_中国环境标志含义

太古地产2022年营收138.3亿港元 同比减少15%

焦点资讯:露营游爆发式回归:营地帐篷订满火线招人,“周末停车场都不够用”

每日动态!划分历史唯物主义和唯心主义的唯一标准是看他是否承认

新食品原料目录更新频率_新食品原料目录-天天动态

嘉荫恐龙国家地质公园在哪里_怎么去 天天快看点

天天速看:摔角动态2018《夏日狂潮》恶魔王子VS纪检委

身高不足160,学鞠婧祎备好这条“万能裤”,巨显腿长,巨时髦

【当前独家】要过好日子演员表

微资讯!为什么叫唐氏综合症_什么叫wpw综合症

天天快资讯:快看!昭通要建漂流项目、国家级森林康养旅游度假区

天天速看:斯凯奇是哪个国家的品牌

新时代四有教师标准(做新时代的合格教师) 天天热文

福原爱个人资料介绍 今头条

抗战时期中国红十字会上海国际委员会研究_今日聚焦

当前焦点!黑色西装和衬衫叠穿衣,优雅又减龄

EVE新手礼包怎么打开-天天速看

Netflix据悉考虑投资体育联盟并竞标赛事流媒体转播权

秦始皇地宫|全球焦点

“在韩国单方面和解之后,日本公开宣称日本二战时期从来没有强征他国老百姓当劳工的事|全球聚焦

观天下!微波系统实验教程

关于小满的诗 小满节气的古诗大全 世界观速讯

环球看热讯:道教各种符咒画法讲解_茅山道术符咒画法

天天速读:代理记帐机构

焦点速读:今天最新消息 今年前6月新疆霍尔果斯口岸货运量贸易额实现双增

全球今日报丨审讯专家

23杭州联合银行CD025今日发布发行公告

天天实时:长盛轴承收关注函:要求说明公司针对成都岑宏佾投资事项的相关信披是否真实 准确 完整 及时

全球快看点丨步履蹒跚怎么读

广东一女子抱怨女儿又胖又懒,背后看像是门神,根本就嫁不出去|环球聚看点

环球动态:臭鳜鱼

03月07日09时四川凉山疫情数据 阳了以后为什么会腰疼?应该怎么办?

开标后几天公布中标结果

目前中国大学都有哪些专业

环球观热点:土木在线账号_土木工程网忘记密码

找钱华

本纳塞尔:佩戴队长袖标意味着责任,我们会犯错但依然砥砺前行 世界资讯

skll是哪个国家的品牌

经典音乐:早安,美丽的星期天_天天快报