k8s入门-资源文件实现k8s入门-资源文件实现

网友投稿 291 2022-09-11

k8s入门-资源文件实现k8s入门-资源文件实现

1.1 idea安装k8s插件

1、idea插件官网地址:​​Plugin from Disk->插件安装目录,安装完成后重启idea

1.2 idea配置SSH客户端

1、idea配置

settings->Tools->SSH Configurations->新建

2、选择使用SSH客户端。

Tools->Start SSH session->选择刚刚配置的ssh客户端名称

3、新建yml类型文件

idea默认没有​​yml​​​文件类型,可以通过​​new->file->手工输入*.yml​​​创建​​yml​​类型文件。

1.3 Remote Host

1、IDEA基本配置

Tools->Deployment->Configurations->配置Remote Host

2、设置服务器名字: ​​k8s-master01​​

3、测试连接!!!

4、使用Remote Host,将本工程中的文件上传k8s集群 。

1.4 NameSpace相关操作

1、查看自动生成模板信息内容

2、创建​​namespace01.yml​​文件

在文件中输入​​kres​​,根据模板快速生成yml文件信息。

apiVersion: v1kind: Namespacemetadata: name: guardwhy

3、通过idea的Remote Host快速将yml文件上传k8s集群进行测试

[root@k8s-master01 data]# lscalico.yml init.sh k8s.1.17.5.tar pod[root@k8s-master01 data]# cd pod/[root@k8s-master01 pod]# lsnamespace01.yml# 1、创建namespace(guardwhy)[root@k8s-master01 pod]# kubectl apply -f namespace01.yml namespace/guardwhy created[root@k8s-master01 pod]# kubectl get nsNAME STATUS AGEdefault Active 2d3hguardwhy Active 11skube-node-lease Active 2d3hkube-public Active 2d3hkube-system Active 2d3h# 2、删除namespace(guardwhy)[root@k8s-master01 pod]# kubectl delete -f namespace01.yml namespace "guardwhy" deleted[root@k8s-master01 pod]# kubectl get nsNAME STATUS AGEdefault Active 2d3hkube-node-lease Active 2d3hkube-public Active 2d3hkube-system Active 2d3h[root@k8s-master01 pod]#

1.5 pod相关操作

1、在​​k8sdemo01​​​工程创建​​tomcatpod.yml​​​文件,在文件中输入​​kpod​​,根据模板快速生成yml文件信息。

apiVersion: v1kind: Podmetadata: name: tomcat-pod labels: app: tomcat-podspec: containers: - name: tomcat-pod image: tomcat:9.0.20-jre8-alpine imagePullPolicy: IfNotPresent restartPolicy: Always

2、镜像下载策略、重启策略

imagePullPolicy:

Always:总是拉取 pull。IfNotPresent:如果本地有镜像,使用本地,如果本地没有镜像,下载镜像。Never:只使用本地镜像,从不拉取。

restartPolicy:

Always:只要退出就重启。OnFailure:失败退出时(exit code不为0)才重启。Never:永远不重启。

3、运行pod

## 1、查看deployment控制器[root@k8s-master01 pod]# kubectl get deploymentNo resources found in default namespace.## 2.查看所有的pod[root@k8s-master01 pod]# kubectl get podNo resources found in default namespace.## 3.查看镜像[root@k8s-master01 pod]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtomcat 9.0.37-jdk8-openjdk-slim d60b68827676 9 months ago 305MBtomcat 9.0.37-jdk8 9c7be7b021c3 9 months ago 531MBcalico/node v3.14.2 780a7bc34ed2 11 months ago 262MBcalico/pod2daemon-flexvol v3.14.2 9dfa8f25b51c 11 months ago 22.8MBcalico/cni v3.14.2 e6189009f081 11 months ago 119MBcalico/kube-controllers v3.14.2 4815e4106d26 11 months ago 52.8MBk8s.gcr.io/kube-proxy v1.17.5 e13db435247d 14 months ago 116MBk8s.gcr.io/kube-controller-manager v1.17.5 fe3d691efbf3 14 months ago 161MBk8s.gcr.io/kube-apiserver v1.17.5 f640481f6db3 14 months ago 171MBk8s.gcr.io/kube-scheduler v1.17.5 f648efaff966 14 months ago 94.4MBk8s.gcr.io/coredns 1.6.5 70f311871ae1 20 months ago 41.6MBk8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 20 months ago 288MBtomcat 9.0.20-jre8-alpine 387f9d021d3a 2 years ago 108MBk8s.gcr.io/pause 3.1 da86e6ba6ca1 3 years ago 742kB[root@k8s-master01 pod]# lsnamespace01.yml tomcatpod.yml## 4.资源文件运行pod[root@k8s-master01 pod]# kubectl apply -f tomcatpod.yml pod/tomcat-pod created[root@k8s-master01 pod]# kubectl get podNAME READY STATUS RESTARTS AGEtomcat-pod 1/1 Running 0 21s## 5.查看pod的详细信息[root@k8s-master01 pod]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEStomcat-pod 1/1 Running 0 80s 10.81.85.212 k8s-node01 [root@k8s-master01 pod]#

3、测试pod

curl 10.81.85.212:8080

4、删除pod

[root@k8s-master01 pod]# kubectl get podsNAME READY STATUS RESTARTS AGEtomcat-pod 1/1 Running 0 15m[root@k8s-master01 pod]# kubectl delete -f tomcatpod.yml pod "tomcat-pod" deleted[root@k8s-master01 pod]# kubectl get podsNo resources found in default namespace.[root@k8s-master01 pod]#

注意:不会创建默认的资源管理器!!!

[root@k8s-master01 pod]# kubectl get deploymentNo resources found in default namespace.[root@k8s-master01 pod]#

1.5 deployment相关操作

1、在​​k8sdemo01​​​工程创建​​tomcatdeployment.yml​​​文件,在文件中输入​​kdep​​,根据模板快速生成yml文件信息。

apiVersion: apps/v1kind: Deploymentmetadata: name: tomcat-deploy labels: app: tomcat-deployspec: replicas: 3 template: metadata: name: tomcat-deploy labels: app: tomcat-pod spec: containers: - name: tomcat-deploy image: tomcat:9.0.20-jre8-alpine imagePullPolicy: IfNotPresent restartPolicy: Always selector: matchLabels: app: tomcat-pod

2、matchLabels

在Deployment中必须写​​matchLables​​。在定义模板的时候必须定义​​labels​​​,因为​​Deployment.spec.selector​​​是必须字段,而他又必须和​​template.labels​​对应。

3、运行deployment

[root@k8s-master01 pod]# lsnamespace01.yml tomcatdeployment.yml tomcatpod.yml## 1.获取deployment控制器[root@k8s-master01 pod]# kubectl get deploymentNo resources found in default namespace.## 2、运行deployment控制器[root@k8s-master01 pod]# kubectl apply -f tomcatdeployment.yml deployment.apps/tomcat-deploy created[root@k8s-master01 pod]# kubectl get deploymentNAME READY UP-TO-DATE AVAILABLE AGEtomcat-deploy 3/3 3 3 31s[root@k8s-master01 pod]#

4、Deployment控制器

Deployment控制器基本介绍:

具有上线部署、滚动升级、创建副本、回滚到以前某一版本(成功/ 稳定)等功能,Deployment包含ReplicaSet,除非需要自定义升级功能或者根本不需要升级Pod,否则还是建议使用Deployment而不直接使用ReplicaSet 。

5、删除Deployment

[root@k8s-master01 pod]# kubectl get deploymentNAME READY UP-TO-DATE AVAILABLE AGEtomcat-deploy 3/3 3 3 19m## 1.删除控制器[root@k8s-master01 pod]# kubectl delete -f tomcatdeployment.yml deployment.apps "tomcat-deploy" deleted[root@k8s-master01 pod]# kubectl get deploymentNo resources found in default namespace.[root@k8s-master01 pod]#

1.6 service相关操作

1、在​​k8sdemo01​​​工程创建​​tomcatservice.yml​​​文件,在文件中输入​​kser​​,根据模板快速生成yml文件信息。

apiVersion: apps/v1kind: Deploymentmetadata: name: tomcat-deploy labels: app: tomcat-deployspec: replicas: 1 template: metadata: name: tomcat-deploy labels: app: tomcat-pod spec: containers: - name: tomcat-deploy image: tomcat:9.0.20-jre8-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 8088 restartPolicy: Always selector: matchLabels: app: tomcat-pod---apiVersion: v1kind: Servicemetadata: name: tomcat-svcspec: selector: # 标签选择必须是template.labels.app app: tomcat-pod ports: # 对集群内其他服务暴露端口号 - port: 8888 targetPort: 8080 nodePort: 30088 type: NodePort

2、service的selector

​​service.spec.selector.app​​​选择的内容仍然是​​template.label.app​​​内容,而不是​​deployment​​​控制器的​​label​​内容。

3、Service类型

​​ClusterIP​​:默认,分配一个集群内部可以访问的虚拟IP。​​NodePort​​:在每个Node上分配一个端口作为外部访问入口。​​LoadBalancer​​:工作在特定的Cloud Provider上,例如Google Cloud,AWS,OpenStack。​​ExternalName​​:表示把集群外部的服务引入到集群内部中来,即实现了集群内部pod和集群外部的服务进行通信。

4、Service参数

​​port​​:访问service使用的端口。​​targetPort​​ :Pod中容器端口。​​NodePort​​: 通过Node实现外网用户访问k8s集群内service(30000-32767) 。

5、运行service

[root@k8s-master01 pod]# lsnamespace01.yml tomcatdeployment.yml tomcatpod.yml tomcatservice.yml## 1.运行运行service[root@k8s-master01 pod]# kubectl apply -f tomcatservice.yml deployment.apps/tomcat-deploy createdservice/tomcat-svc created## 2.获取service服务[root@k8s-master01 pod]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.1.0.1 443/TCP 2d6htomcat-svc NodePort 10.1.156.209 8888:30088/TCP 29stomcat9-svc NodePort 10.1.215.214 8888:32502/TCP 25h[root@k8s-master01 pod]#

测试访问

curl 10.1.156.209:8888

访问集群外端口

http://8.134.125.116:30088

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kube-proxy保姆级别源码阅读
下一篇:公关界007:TO B企业如何做出大众喜爱的内容?这支视频给你答案!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~