replication controller
replication controller,简称rc,她用来干啥呢?就是通过她来实现pod副本数量的自动控制!rc确保任意时间都有指定数量的pod“副本”在运行。
如果为某个pod创建了rc并且指定3个副本,它会创建3个pod,并且持续监控它们。如果某个pod不响应,那么replication controller会替换它,保持总数为3。如果之前不响应的pod恢复了,现在就有4个pod了,那么replication controller会将其中一个终止保持总数为3。如果在运行中将副本总数改为5,replication controller会立刻启动2个新pod,保证总数为5。还可以按照这样的方式缩小pod,这个特性在执行滚动升级时很有用。
注意:删除rc,不会影响该rc已经创建好的pod。在逻辑上pod副本和rc是解耦和的!创建rc时,需要指定pod模板(用来创建pod副本的模板)和label(rc需要监控的pod标签)。
由replication controller衍生出deployment,与rc相似90%,目的是更好地解决pod编排。暂时不讨论。
horizontal pod autoscaler,简称hpa,pod横向自动扩容智能控件。与rc,deployment一样,也属于k8s的一种资源对象。她的实现原理是通过追踪分析rc控制的所有目标pod的负载变化情况,来确定是否针对性地调整目标pod的副本数。
service
微服务架构中的一个“微服务”,她是正真的新娘,而之前的pod,rc等资源对象其实都是嫁衣。
每个pod都会被分配一个单独的ip地址,而且每个pod都提供了一个独立的endpoint(pod lp + containerport)以被客户端访问,现在多个pod副本组成了一个集群来提供服务,客户端要想访问集群,一般的做法是部署一个负载均衡器(软件或硬件),为这组pod开启一个对外的服务端口如8000端口,并且将这些pod的endpoint列表加入8000端口的转发列表中,客户端就可以通过负载均衡器的对外ip地址 + 服务端口来访问此服务,而客户端的请求最后会被转发到哪个pod,则由负载均衡器的算法所决定。
k8s的server定义了一个服务的访问入口地址,前端(pod)通过入口地址访问其背后的一组由pod副本组成的集群实例,service与其后端pod副本集群之间通过label selector 实现“无缝对接”。
03 minikube
minikube相当于一个运行在本地的kubernetes单节点,我们可以在里面创建pods来创建对应的服务。
04 安装
说的安装,还得奉劝大家提前沐浴更衣,调整好心态。倒不是因为步骤有多难,多复杂,而是因为某些网站因为技术不成熟,你始终访问不到,而焦躁。关于minikube,一些网上人说使用阿里的包,可能福报厂确实拉了分支,改了拉取镜像的地址,但是他们并没有提供编译好的版本,所以使用官方的版本就好。https://github.com/kubernetes/minikube 。
另外,一定要注意使用release版本(我用1.9.2版),别下测试版,为什么这么提醒?反正我没有因为版本问题,卡了2天,demo都没跑出来。
kubectl 也从官方下载 https://kubernetes.io/docs/tasks/tools/install-kubectl/ 即可。
将两个文件放到一个文件夹下,然后在环境变量里path一下
安装docker 不是主要矛盾,大家自行搜一下,只要确认好环境,再次强调最好升级一下win10,这样操作起来更方便一些,docker toolbox用起来真的不行。
在正式安装之前,还需要设置一个虚拟交换机
接下来,就是安装k8s环境了,记得使用管理员prowshell
minikube start --image-mirror-country=cn --registry-mirror=https://registry.docker-cn.com --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --hyperv-virtual-switch=“minikubaswitch”
参数说明:
天朝专用参数
–image-mirror-country=cn
国内docker registry
–registry-mirror=https://registry.docker-cn.com
国内镜像源
–image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
外部交换机
–hyperv-virtual-switch=“minikubaswitch”
接下来就是漫长的等待,安装成功后,会多出一个minikube的虚拟机
重点来了啊,如果之前下载失败了,到自己的用户下面把这个.minikube文件夹删除了,重新来一边,如果还是不行,继续删了重来,不要问为什么,问就是上网需要科学。
接下来就需要部署 deployment
ps e:\devlop\envs\k8s\test1> kubectl create -f 1.yml
deployment.apps/datalookerserver created
使用下面的 yml
apiversion: apps/v1
kind: deployment
metadata:
name: datalookerserver
spec:
selector:
matchlabels:
app: datalookerserver
replicas: 2
template:
metadata:
labels:
app: datalookerserver
spec:
containers:
- name: datalookerserver
image: nginx
# nginx
#datalooker-server:1.0-snapshot
imagepullpolicy: always
ports:
- containerport: 80
这里注意image属性,还是使用公网的image,这样比较容易通过,使用本地registry可能因为链路访问问题,导致失败,具体情况,可以异步到参考链接【2】,里面对这个问题有一个比较清楚的阐释。
接下来,可以使用 kubectl get pods -o wide 查看pod状态
使用, kubectl describe pod datalookerserver-56dbc49bc8-6sdms可以查看具体pod的具体信息
接下来使用相同的指令,创建service
ps e:\devlop\envs\k8s\test1> kubectl create -f 2.yml
service/datalookerserver created
yml如下:
apiversion: v1
kind: service
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。
深知大多数java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注java获取)

最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
《一线大厂java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,
扫码获取!!(备注java获取)**

最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
[外链图片转存中…(img-zenyaisj-1712406953841)]
《一线大厂java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,
发表评论