当前位置: 首页 > news >正文

微网站域名如何在百度推广网站

微网站域名,如何在百度推广网站,农业行业网站模板,十大计算机培训学校I. 配置kubectl 1.1 什么是kubectl#xff1f; 官方文档中介绍kubectl是#xff1a; Kubectl 是一个命令行接口#xff0c;用于对 Kubernetes 集群运行命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数–kubeconfig来指定其他… I. 配置kubectl 1.1 什么是kubectl 官方文档中介绍kubectl是 Kubectl 是一个命令行接口用于对 Kubernetes 集群运行命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数–kubeconfig来指定其他位置的kubeconfig文件。 也就是说可以通过kubectl来操作K8S集群官方文档中介绍其基本语法 就如何使用kubectl而言官方文档已经说得非常清楚。不过对于新手而言还是需要解释几句kubectl是K8S的命令行工具并不需要kubectl安装在K8S集群的任何Node上但是需要确保安装kubectl的机器和K8S的集群能够进行网络互通。 接下来一起看看怎么使用kubectl吧切身感受下kubectl的使用。 请注意如何安装kubectl的办法有许多非常明确的教程比如《安装并配置 kubectl》本文不再赘述。 1.2 怎么配置kubectl 第一步必须准备好要连接/使用的K8S的配置文件笔者给出一份杜撰的配置 apiVersion: v1 clusters:- cluster:certificate-authority-data: thisisfakecertifcateauthoritydata00000000000server: https://1.2.3.4:1234name: cls-dev contexts:- context:cluster: cls-devuser: kubernetes-adminname: kubernetes-admintest current-context: kubernetes-admintest kind: Config preferences: {} users:- name: kubernetes-adminuser:token: thisisfaketoken00000解读如下 clusters记录了clusters一个或多个K8S集群信息 name是这个clusterK8S集群的名称代号server是这个clusterK8S集群的访问方式一般为IPPORTcertificate-authority-data是证书数据只有当clusterK8S集群的连接方式是https时为了安全起见需要证书数据 users记录了访问clusterK8S集群的账号信息 name是用户账号的名称代号user/token是用户的token认证方式token不是用户认证的唯一方式其他还有账号密码等。 contexts是上下文信息包括了clusterK8S集群和访问clusterK8S集群的用户账号等信息 name是这个上下文的名称代号cluster是clusterK8S集群的名称代号user是访问clusterK8S集群的用户账号代号 current-context记录当前kubectl默认使用的上下文信息kind和apiVersion都是固定值用户不需要关心preferences则是配置文件的其他设置信息笔者没有使用过暂时不提。 第二步给kubectl配置上配置文件。 请注意上述操作的优先级分别是123也就是说kubectl会优先检查–kubeconfig若无则检查KUBECONFIG若无则最后检查$HOME/.kube/config如果还是没有报错。但凡某一步找到了有效的cluster就中断检查去连接K8S集群了。 第三步配置正确的上下文 按照第二步的做法如果配置文件只有一个cluster是没有任何问题的但是对于有多个cluster怎么办呢到这里有几个关于配置的必须掌握的命令 kubectl config get-contexts。列出所有上下文信息。 kubectl config current-context。查看当前的上下文信息。其实命令1线束出来的*所指示的就是当前的上下文信息。 kubectl config use-context ${CONTEXT_NAME}。更改上下文信息。 kubectl config set-context{CONTEXT_NAME}|–current --{KEY}{VALUE}。 修改上下文的元素。比如可以修改用户账号、集群信息、连接到K8S后所在的namespace。 关于该命令还有几点要啰嗦的 config set-context可以修改任何在配置文件中的上下文信息只需要在命令中指定上下文名称就可以。而**–current则指代当前上下文**。上下文信息所包括的内容有cluster集群名称、用户账号名称、连接到K8S后所在的namespace因此有config set-context严格意义上的用法 kubectl config set-context [NAME|–current] [–clustercluster_nickname] [–useruser_nickname] [–namespacenamespace] [options] 备注[options]可以通过kubectl options查看 综上如何操作kubectl配置都已交代。 II. kubectl部署服务 K8S核心功能就是部署运维容器化服务因此最重要的就是如何又快又好地部署自己的服务了。本章会介绍如何部署Pod和Deployment。 2.1 如何部署Pod 通过kubectl部署Pod的办法分为两步1). 准备Pod的yaml文件2). 执行kubectl命令部署 第一步准备Pod的yaml文件。关于Pod的yaml文件初步解释本系列上一篇文章《K8S系列一概念入门》已经有了初步介绍这里再复习下 apiVersion: v1 kind: Pod metadata:name: memory-demonamespace: mem-example spec:containers:- name: memory-demo-ctrimage: polinux/stressresources:limits:memory: 200Mirequests:memory: 100Micommand: [stress]args: [--vm, 1, --vm-bytes, 150M, --vm-hang, 1]volumeMounts:- name: redis-storagemountPath: /data/redisvolumes:- name: redis-storageemptyDir: {}继续解读 metadata对于新入门的同学来说需要重点掌握的两个字段 name。这个Pod的名称后面到K8S集群中查找Pod的关键字段。namespace。命名空间即该Pod隶属于哪个namespace下关于Pod和namespace的关系上一篇文章已经交代了。 spec记录了Pod内部所有的资源的详细信息这里我们重点查看containers下的几个重要字段 name。Pod下该容器名称后面查找Pod下的容器的关键字段。image。容器的镜像地址K8S会根据这个字段去拉取镜像。resources。容器化服务涉及到的CPU、内存、GPU等资源要求。可以看到有limits和requests两个子项那么这两者有什么区别吗该怎么使用在What’s the difference between Pod resources.limits and resources.requests in Kubernetes?回答了 limits是K8S为该容器至多分配的资源配额而requests则是K8S为该容器至少分配的资源配额。打个比方配置中要求了memory的requests为100M而此时如果K8S集群中所有的Node的可用内存都不足100M那么部署服务会失败又如果有一个Node的内存有16G充裕可以部署该Pod而在运行中该容器服务发生了内存泄露那么一旦超过200M就会因为OOM被kill尽管此时该机器上还有15G的内存。 command。容器的入口命令。对于这个笔者还存在很多困惑不解的地方暂时挖个坑有清楚的同学欢迎留言。args。容器的入口参数。同上有清楚的同学欢迎留言。volumeMounts。容器要挂载的Pod数据卷等。请务必记住Pod的数据卷只有被容器挂载后才能使用 第二步执行kubectl命令部署。有了Pod的yaml文件之后就可以用kubectl部署了命令非常简单kubectl create -f ${POD_YAML}。 随后会提示该命令是否执行成功比如yaml内容不符合要求则会提示哪一行有问题 修正后再次部署 2.2 如何部署Deployment 第一步准备Deployment的yaml文件。首先来看Deployment的yaml文件内容 apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: rss-sitenamespace: mem-examplespec:replicas: 2template:metadata:labels:app: webspec:containers:- name: memory-demo-ctrimage: polinux/stressresources:limits:emory: 200Mirequests:memory: 100Micommand: [stress]args: [--vm, 1, --vm-bytes, 150M, --vm-hang, 1]volumeMounts:- name: redis-storagemountPath: /data/redisvolumes:- name: redis-storageemptyDir: {}继续来看几个重要的字段 metadata同Pod的yaml这里提一点如果没有指明namespace那么就是用kubectl默认的namespace如果kubectl配置文件中没有指明namespace那么就是default空间。spec可以看到Deployment的spec字段是在Pod的spec内容外“包了一层”那就来看Deployment有哪些需要注意的 replicas。副本个数。也就是该Deployment需要起多少个相同的Pod如果用户成功在K8S中配置了nn1个那么Deployment会确保在集群中始终有n个服务在运行。template。 metadata新手同学先不管这边的信息。spec会发现这完完全全是上文提到的Pod的spec内容在这里写明了Deployment下属管理的每个Pod的具体内容。 第二步执行kubectl命令部署。Deployment的部署办法同Podkubectl create -f ${DEPLOYMENT_YAML}。由此可见K8S会根据配置文件中的kind字段来判断具体要创建的是什么资源。 这里插一句题外话部署完deployment之后可以查看到自动创建了ReplicaSet和Pod如下图所示 还有一个有趣的事情通过Deployment部署的服务其下属的RS和Pod命名是有规则的。读者朋友们自己总结发现哦。 综上如何部署一个Pod或者Deployment就结束了。 III. kubectl查看、更新/编辑、删除服务 作为K8S使用者而言更关心的问题应该是本章所要讨论的话题如何通过kubectl查看、更新/编辑、删除在K8S上部署着的服务。 3.1 如何查看服务 请务必记得一个事情在K8S中一个独立的服务即对应一个Pod。即当我们说要xxx一个服务的就是也就是操作一个Pod。而与Pod服务相关的且需要用户关心的有Deployment。 通过kubectl查看服务的基本命令是 $ kubectl get|describe ${RESOURCE} [-o ${FORMAT}] -n${NAMESPACE} # ${RESOURCE}有: pod、deployment、replicaset(rs)在此之前还有一个需要回忆的事情是Deployment、ReplicaSet和Pod之间的关系 - 层层隶属以及这些资源和namespace的关系是 - 隶属。如下图所示。 因此**要查看一个服务也就是一个Pod必须首先指定namespace**那么如何查看集群中所有的namespace呢kubectl get ns 于是只需要通过-n${NAMESPACE}就可以指定自己要操作的资源所在的namespace。比如查看Podkubectl get pod -noona-test同理查看Deploymentkubectl get deployment -noona-test。 问题又来了如果已经忘记自己所部属的服务所在的namespace怎么办这么多namespace一个一个查看过来吗 kubectl get pod --all-namespaces 这样子就可以看到所有namespace下面部署的Pod了同理要查找所有的命名空间下的Deployment的命令是kubectl get deployment --all-namespaces。 于是就可以开心地查看Podkubectl get pod [-o wide] -noona-test或者查看Deploymentkubectl get deployment [-o wide] -noona-test。 哎这里是否加-o wide有什么区别吗实际操作下就明白了其他资源亦然 哎那我们看到之前部署的Pod服务memory-demo显示的“ImagePullBackOff”是怎么回事呢先不着急我们慢慢看下去。 3.2 如何更新/编辑服务 两种办法1). 修改yaml文件后通过kubectl更新2). 通过kubectl直接编辑K8S上的服务。 **方法一修改yaml文件后通过kubectl更新。**我们看到创建一个Pod或者Deployment的命令是kubectl create -f ${YAML}。但是如果K8S集群当前的namespace下已经有该服务的话会提示资源已经存在 通过kubectl更新的命令是kubectl apply -f ${YAML}我们再来试一试 备注命令kubectl apply -f ${YAML}也可以用于首次创建一个服务哦 方法二通过kubectl直接编辑K8S上的服务。命令为kubectl edit ${RESOURCE} ${NAME}比如修改刚刚的Pod的命令为kubectl edit pod memory-demo然后直接编辑自己要修改的内容即可。 但是请注意无论方法一还是方法二能修改的内容还是有限的从笔者实战下来的结论是只能修改/更新镜像的地址和个别几个字段。如果修改其他字段会报错 The Pod “memory-demo” is invalid: spec: Forbidden: pod updates may not change fields other than spec.containers[].image, spec.initContainers[].image, spec.activeDeadlineSeconds or spec.tolerations (only additions to existing tolerations) 如果真的要修改其他字段怎么办呢恐怕只能删除服务后重新部署了。 3.3 如何删除服务 在K8S上删除服务的操作非常简单命令为kubectl delete ${RESOURCE} ${NAME}。比如删除一个Pod是kubectl delete pod memory-demo再比如删除一个Deployment的命令是kubectl delete deployment ${DEPLOYMENT_NAME}。但是请注意 如果只部署了一个Pod那么直接删除该Pod即可 如果是通过Deployment部署的服务那么仅仅删除Pod是不行的正确的删除方式应该是先删除Deployment再删除Pod。 关于第二点应该不难想象仅仅删除了Pod但是Deployment还在的话Deployment定时会检查其下属的所有Pod如果发现失败了则会再拉起。因此会发现过一会儿新的Pod又被拉起来了。 另外还有一个事情有时候会发现一个Pod总也删除不了这个时候很有可能要实施强制删除措施命令为kubectl delete pod --force --grace-period0 ${POD_NAME}。 IV. kubectl排查服务问题 上文说道部署的服务memory-demo失败了是怎么回事呢本章就会带大家一起来看看常见的K8S中服务部署失败、服务起来了但是不正常运行都怎么排查呢 首先祭出笔者最爱的一张K8S排查手册来自博客《Kubernetes Deployment故障排除图解指南》 哈哈哈对于新手同学来说上图还是不够友好下面我们简单来看两个例子 4.1 K8S上部署服务失败了怎么排查 请一定记住这个命令kubectl describe ${RESOURCE} ${NAME}。比如刚刚的Pod服务memory-demo我们来看 拉到最后看到Events部分会显示出K8S在部署这个服务过程的关键日志。这里我们可以看到是拉取镜像失败了好吧大家可以换一个可用的镜像再试试。 一般来说通过kubectl describe pod ${POD_NAME}已经能定位绝大部分部署失败的问题了当然具体问题还是得具体分析。大家如果遇到具体的报错欢迎分享交流。 4.2 K8S上部署的服务不正常怎么排查 如果服务部署成功了且状态为running那么就需要进入Pod内部的容器去查看自己的服务日志了 查看Pod内部某个container打印的日志kubectl log ${POD_NAME} -c ${CONTAINER_NAME}。进入Pod内部某个containerkubectl exec -it [options] ${POD_NAME} -c ${CONTAINER_NAME} [args]嗯这个命令的作用是通过kubectl执行了docker exec xxx进入到容器实例内部。之后就是用户检查自己服务的日志来定位问题。 显然线上可能会遇到更复杂的问题需要借助更多更强大的命令和工具。 写在后面 本文是K8S系列文章第二篇旨在第一篇基础上加深对K8S的理解且鼓励大家一起动手使用K8S。如果文章中有纰漏非常欢迎留言或者私信指出有理解错误的地方更是欢迎留言或者私信告知。 因为是实战入门因此提到的命令相对是比较基础、常见的。也十分欢迎大家留言或者私信交流更多K8S的问题。
http://www.hkea.cn/news/14544487/

相关文章:

  • 山东建设厅官方网站孙松青做网站可以用别人的源码吗
  • 吴江微信网站制作我的世界是怎么做的视频网站
  • 做网站用什么语言快但网页打不开
  • 凯里市网站建设可以做进销存的网站系统
  • 网页升级访问升级免费seo营销软件
  • 关于开展网站建设工作的通知网站首页点击中文英文链接 翻译成对应的语言 怎么做
  • 微信公众号上微做网站互联网推广网站建设
  • 网站建设与维护招聘条件百度站长平台官网登录入口
  • 广州互助网站开发菜谱网站开发
  • 一个人搞得定网站建设网站建设后端技术
  • 制作网站服务器做网站servlet
  • 网站建设目的及意义企业网站设计服务公司
  • 广州市花都区建设局网站易拉罐手工制作大全
  • 网站定制 北京网站的备案号在哪
  • 手机端网站建设企业网站建设的常见流程为
  • 网站的费用多少山西省住房和城乡建设厅门户网官方网站
  • seo网站关键字优化网页设计图片排列关系
  • 万建站南昌网站改版必要性
  • 合肥本地网站辽宁网络推广公司
  • 800元做小程序网站有了域名建设网站
  • 010网站建设山东网建设
  • 二网站手网站自适应手机端
  • 水友做的yyf网站建设网站需求
  • wordpress怎么加站点图标海天建设集团网站
  • 乐清网站优化推广电子商务网站建设论文资料
  • 南阳市建网站公安徽龙山建设网站
  • 各大网站vip接口建设中区网站建设
  • 创业做网站需要哪些必备条件电商平台建设做网站
  • 有趣的网站游戏深圳网站建设最专业的
  • 垂直行业门户网站网页制作网站制作