目录
1、查看某个资源的详细信息:kubectl describe pod pod_name -n nameapace
2、查看指定命名空间中pod的基本信息:kubectl get pods -n namespace
3、跨主机登录容器:kubectl exec -it pod_name /bin/bash -n namespace
4.1、直接删除pod。但是deployment,副本控制器还在,他就会自己再创建一个。
4.3、如果删除过程中出现幺蛾子,Pod无法删除,总是处于terminating状态,则执行强行删除--force --grace-period=0
1、创建一个Pod,启动nginx实例,暴露容器80端口,设置副本集为3(创建pod)
[root@master ~]# kubectl describe pods -n kube-public
### 查看指定命名空间中的pod的详细信息
Name: nginx-w1-7464d66457-psk6h
Namespace: kube-public
Priority: 0
Node: node01/192.168.159.11
Start Time: Wed, 02 Nov 2022 01:40:47 +0800
Labels: app=nginx-w1
pod-template-hash=7464d66457
Annotations: <none>
Status: Running
IP: 10.150.1.3
IPs:
IP: 10.150.1.3
Controlled By: ReplicaSet/nginx-w1-7464d66457
Containers:
nginx:
Container ID: docker://4011df060a9ad777793f061675fc1a784f4effe56f5585d91d5ba3670660c620
Image: nginx
Image ID: docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Port: <none>
Host Port: <none>
State: Running
Started: Wed, 02 Nov 2022 01:41:06 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-llzgh (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-llzgh:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
Name: nginx-x1-77484d895f-ddhqt
Namespace: kube-public
Priority: 0
Node: node02/192.168.159.13
Start Time: Thu, 03 Nov 2022 16:16:11 +0800
Labels: app=nginx-x1
pod-template-hash=77484d895f
Annotations: <none>
Status: Running
IP: 10.150.2.3
IPs:
IP: 10.150.2.3
Controlled By: ReplicaSet/nginx-x1-77484d895f
Containers:
nginx:
Container ID: docker://ecc07803682f2d7a51037024354dae0d190841443121ca0a8514ab224179cbf5
Image: nginx:latest
Image ID: docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Port: <none>
Host Port: <none>
State: Running
Started: Thu, 03 Nov 2022 16:16:36 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-47hxr (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-47hxr:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
[root@master ~]# kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-w1-7464d66457-psk6h 1/1 Running 0 43h
nginx-x1-77484d895f-ddhqt 1/1 Running 0 5h12m
root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
[root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@nginx-x1-77484d895f-ddhqt:/#
[root@master ~]# kubectl delete pod nginx- -n kube-public
pod "nginx-w1-7464d66457-psk6h" deleted


[root@master ~]# kubectl delete deployment nginx-w1 -n kube-public



基于上面结果进行实验,设置--replicas=2,指定副本集数量后,他会根据现有的副本集数量和期望值相比较,从而决定时扩容还是缩容

[root@master ~]# kubectl delete svc nginx-server -n default
[root@master ~]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.125.0.1 <none> 443/TCP 2d6h
nginx-server NodePort 10.125.126.34 <none> 80:30537/TCP 45m
nginx1-server NodePort 10.125.103.25 <none> 80:31070/TCP 2m41s
[root@master ~]# kubectl delete svc nginx-server -n default
service "nginx-server" deleted
[root@master ~]# kubectl get svc,pods -n default

[root@master ~]# kubectl get endpoints
[root@master ~]# kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.159.10:6443 2d6h
nginx1-service 10.150.1.10:80,10.150.1.9:80,10.150.2.9:80 32m
[root@master ~]# kubectl describe svc nginx
[root@master ~]# kubectl describe svc nginx
Name: nginx1-service
Namespace: default
Labels: app=nginx
Annotations: <none>
Selector: app=nginx
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.125.32.0
IPs: 10.125.32.0
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 31625/TCP
Endpoints: 10.150.1.10:80,10.150.1.9:80,10.150.2.9:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
通过kubeadm方式部署的K8S
kubectl logs -f pod_name -n namespace 或者 journalctl -u kubelet -f
通过二进制部署的K8S
journalctl -u kubelet -f
pod生命周期是指:pod在从创建到删除过程中,所包含、经历的状态
pod的类型分为2中:
①、自主式:没有控制器管理的就是自助式的。删除时直接删除就行
②、申明式:有控制器管理的Pod。(我们一般使用的类型)
[root@master ~]# kubectl create deployment nginx-ceshi --image=nginx:1.14 --port 80 --replicas=3
deployment.apps/nginx-ceshi created



三、 service的type类型①、clusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)
②、NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问service。每个端口只能是一种服务,端口范围只能是30000-32767
③、LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。
④、externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?
在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],