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="^.*" &
编写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.yamlpod的关键在于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先从搭建一个简单的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、毛戈平形象设计艺术学校由中国著名化妆大师毛戈平先生亲自创办,是以彩妆培训、形象设计培训为主导的专业艺术学校,是全国同
苏州姑苏区清明节扫墓预约入口+流程-速看
一、预约入口点击进入|苏周到APP|苏州民政微信公众号对室外现场祭扫确有需求的群众可扫上方二维码,登录“苏城数字殡葬”公益信息平台,...
新加坡旅游最长时间_新加坡旅游最佳时间-全球短讯
1、新加坡马来西亚最佳旅游时间现在去就非常不错哦!不过具体情况您还是找个旅行社详细了解下!。本文到此分享完毕,希望对大家
克莉丝汀(01210.HK)计划通过合适的融资方式解决流动资金问题并于上半年恢复营业
克莉丝汀(01210 HK)公布,由于新型冠状病毒疫情持续冲击及集团主要营业地点进行封控,消费者支出减少,集团业务遭受严重打击。尽管该集团积极
京东CEO徐雷:百亿补贴是京东价格策略的一部分 效果超过预期-天天速看料
京东CEO徐雷:百亿补贴是京东价格策略的一部分效果超过预期
全市场:意大利国家队挖角阿根廷,阿超射手王将为意大利效力
《全市场》透露意大利国家队已经邀请阿根廷前锋马特奥-雷特吉代表意大利参赛,而球员已经同意。意大利国家队主帅曼奇尼此前在接受采访时...
凉拌粉热量高不高_凉拌粉-每日视讯
1、江西凉拌粉的做法,先将米粉放入水中煮熟,后将熟粉从热锅中倒入冷水盆中急骤降温,放入簸箕中将水滤干,待吃时可依据气温随
借东西的小人阿莉埃蒂电影_关于借东西的小人阿莉埃蒂电影的基本详情介绍
1、《借东西的小人阿莉埃蒂》是日本吉卜力工作室制作的动画电影,也是米林宏昌执导的首部电影。2、影片于2010年7月17日
0.54秒的浪漫,他们拍到了!
中国空间站“穿月”的画面你见过吗?中国空间站“穿月”的画面(画面做变慢处理)7日凌晨1时16分6秒清华大学博士生张嘉奇等人在清华大学...
中国援柬中医医疗队赴暹粒义诊-天天观察
当地时间3月9日,中国援柬中医抗疫...
代表委员这一天丨杨登辉:用心精准打磨建议 当好技能人才“代言人”-世界要闻
今年两会,“95后”全国人大代表、...
全国人大代表徐枫灿:梦想是绿色的,那是青春
央视网消息:全国人大代表徐枫灿是...
湖南洞庭湖区县探索“沟渠经济” 美了村庄富村民-当前热讯
大通湖区全民在沟渠边义务植树。徐...
妇女节表彰大会上,为什么领奖的是他?
最近浙江举行“三八”妇女节表彰大...
垃圾换鲜花,贝壳杭州站大地美容助力绿色亚运
人人参与亚运会,人人都是志愿者,人...
惠民生 暖民心(两会今日谈)-实时
民生无小事,枝叶总关情。“大力发...
代表委员聚焦高质量发展 为增进民生福祉建言献策-当前播报
央视网消息:人民幸福安康是推动高...
用户是否应该禁用系统盘保留空间?Win11系统盘瘦身的步骤是什么?
用户是否应该禁用系统盘保留空间?...
电脑待机出现蓝屏代码machine怎么办?win10系统待机蓝屏代码machine解决流程
电脑待机出现蓝屏代码machine怎么...
怎么彻底解决电脑任务栏假死?Win10系统任务栏卡住无法操作的解决教程
怎么彻底解决电脑任务栏假死?Win10...
凉拌粉热量高不高_凉拌粉-每日视讯
1、江西凉拌粉的做法,先将米粉放...
借东西的小人阿莉埃蒂电影_关于借东西的小人阿莉埃蒂电影的基本详情介绍
1、《借东西的小人阿莉埃蒂》是日...
0.54秒的浪漫,他们拍到了!
中国空间站“穿月”的画面你见过吗...
iOS9.3.4可以越狱吗_iOS9.3.4怎么越狱
从这次更新的“量”就可以知道iOS9...