Kubernetes 的基本架构
Kubernetes 的基本架构,由Matser和Node子节点组成,使用kubectl进行通信, Master 里的组件有哪些:
(相关资料图)
Master 里有 4 个组件,分别是 apiserver、etcd、scheduler、controller-manager。
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一样,是所有运行的基础。
先看看下图,这是我们要完成的事情,也是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”来停止转发了。
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
关键词:
-
最新快讯!微服务 - 搭建k8s(minikube)与简单wordPress实战
Kubernetes的基本架构,由Matser和Node子节点组成,使用kubectl进行通信,Master里的组件有哪些:
-
中国四大年画基地是哪些_中国四大年画产地
1、中国四大年画的产地2、中国四大年画的产地分别是四川、苏州、天津和潍坊,四川绵竹市的绵竹年画远近闻名,起源于北宋时期,
-
环球微头条丨母夜叉是什么人物_母夜叉是什么意思
1、夜叉是佛教中的护法,在印度语里是YACHI,喜欢吃人,但也是护法。2、可以在佛教的经典中找到:“夜叉”是佛经中的
-
初中物理电功率公式如何应用_初中物理电功率公式
今天小编肥嘟来为大家解答以上的问题。初中物理电功率公式如何应用,初中物理电功率公式相信很多小伙伴还不知道,现在让我们一起来看看吧!1、
-
qq生日定时说说怎么发_定时说说怎么发|热门看点
1、首先打开手机QQ,进入消息首页,点击右下角的“动态”。2、进入动态页面,点击第一条“好友消息”。3、进入好友动态QQ
-
微信支付分怎么开通_微信支付分如何开通-天天观察
1、打开微信-我-支付-钱包,可以在栏目中看到“支付积分”的新选项。其实早在2018年,微信的这个功能就开始了灰度测试。
-
j京东物流单号查询_京东物流单号查询跟踪
1、您可以在百度直接输入单号能查询到具体的信息了。2、如果没有跟踪记录,有几种情况,可以参考: 检查单号有没有弄错,单
-
全球快报:写给父母的一封信_卓越父母
你们好,最近小活发现有诸多的小伙伴们对于写给父母的一封信,卓越父母这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往
-
全球热消息:微信个性签名怎么改成竖的_微信个性签名怎么改
1、微信怎么改个性签名微信怎么设置个性签。2、下面小编和大家分享的是微信怎么改个性签名微信怎么设置。3、工具 原料微信微
-
东莞证券给予平安银行买入评级
东莞证券03月09日发布研报称,给予平安银行(000001 SZ,最新价:13 2元)买入评级。评级理由主要包括:1)净利润维持高增;2)净息差有所收窄;3)
-
事业工人怎么办转成干部呢_事业单位工人身份如何转干部身份
1、他是事业单位的聘用工人吗?聘用的要转为事业单位的正式干部是需要通过事业单位招聘工作人员考试的。2、事业单位里面也有行
-
世界看热讯:瑞典议长表示期待瑞中企业继续扩大合作
瑞典议长表示期待瑞中企业继续扩大合作
-
生育险交多久可以使用_生育险要交多久才能用_速看
1、一:关于生育险的缴纳时间的规定如下: 参保职工分娩前生育保险连续缴费满9个月的,其发生的生育、计划生育手术医疗费用
-
2023癸卯年1公斤金制纪念币价格(2023年03月09日)
金投网提供2023癸卯年1公斤金制纪念币价格(2023年03月09日),2023癸卯年1公斤金制纪念币价格最新消息(2023年03月09日)
-
环球快讯:湖北:擦亮优势产业“金字招牌”
湖北:擦亮优势产业“金字招牌”
-
【全球时快讯】吴磊_吴娅熙
1、吴娅熙是一位演员,原名吴琦,昵称是可可西,琦琦她的生肖是羊,处女座。2、出生于广西罗城仫佬族自治县,现居地在广东深圳
-
钢之炼金术师fa和钢之炼金术师更喜欢哪个_环球快报
1、fa是完全按照漫画制作的并且还是完美的结局不过不连着剧场而另一部是不怎么按照漫画制作的而且最后 爱德华·艾尔利克
-
什么鸡没有翅膀谜语_什么鸡没有翅膀_资讯推荐
1、没有翅膀的鸡叫田鸡。2、虎纹蛙又叫田鸡,它的个头长得魁梧壮实,有“亚洲之蛙”之称。3、雌性比雄性大,体长可超过12厘
-
世界热点!ipad以旧换新价格表2022_ipad以旧换新
1、打开以旧换新平台。2、点击首页直接进入页面,或者输入相应型号进行搜索。3、选择合适的型号,然后单击“立即回收”。4、
-
天天热资讯!郭惠光_郭惠
1、你好,马秀英是朱元璋的皇后,郭子兴的义女。2、郭惠是电视剧《传奇皇帝朱元璋》中塑造的一个人物,是郭子兴的亲生女儿,后