{"id":1898,"date":"2023-03-31T06:41:33","date_gmt":"2023-03-30T22:41:33","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1898"},"modified":"2023-04-22T08:57:55","modified_gmt":"2023-04-22T00:57:55","slug":"basic-usage-of-kubectl","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/31\/basic-usage-of-kubectl\/","title":{"rendered":"kubectl\u57fa\u672c\u4f7f\u7528"},"content":{"rendered":"<h2>kubectl \u8f93\u51fa\u683c\u5f0f<\/h2>\n<p>\u663e\u793aPod\u7684\u66f4\u591a\u4fe1\u606f<\/p>\n<pre><code class=\"language-bash\">kubectl get pod &lt;pod-name&gt; -o wide<\/code><\/pre>\n<p><!-- more --><\/p>\n<p>\u4ee5yaml\u683c\u5f0f\u663e\u793aPod\u7684\u8be6\u7ec6\u4fe1\u606f<\/p>\n<pre><code class=\"language-bash\">kubectl get pod &lt;pod-name&gt; -o yaml<\/code><\/pre>\n<h2>kubectl \u64cd\u4f5c\u793a\u4f8b<\/h2>\n<h3>kubectl \u521b\u5efa\u8d44\u6e90\u5bf9\u8c61<\/h3>\n<pre><code class=\"language-bash\">$ kubectl create -f .\/my-manifest.yaml\u00a0\u00a0\u00a0\u00a0 #\u521b\u5efa\u8d44\u6e90\n\n$ kubectl create -f .\/my1.yaml -f .\/my2.yaml\u00a0\u00a0\u00a0 #\u4f7f\u7528\u591a\u4e2a\u6587\u4ef6\u521b\u5efa\u8d44\u6e90\n$ kubectl create -f my-service.yaml -f my-rc.yaml    #\u6839\u636eyaml\u914d\u7f6e\u6587\u4ef6\u4e00\u6b21\u6027\u521b\u5efaservice\u548crc\n\n$ kubectl create -f &lt;directory&gt;    #\u6839\u636e&lt;directory&gt;\u76ee\u5f55\u4e0b\u6240\u6709.yaml\u3001.yml\u3001.json\u6587\u4ef6\u7684\u5b9a\u4e49\u8fdb\u884c\u521b\u5efa\u64cd\u4f5c\n$ kubectl create -f .\/dir\u00a0\u00a0\u00a0 #\u4f7f\u7528\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6e05\u5355\u6587\u4ef6\uff08yaml\uff09\u6765\u521b\u5efa\u8d44\u6e90\n\n$ kubectl create -f https:\/\/www.appblog.cn\/test.yaml\u00a0\u00a0\u00a0 #\u4f7f\u7528url\u521b\u5efa\u8d44\u6e90\n\n$ kubectl run nginx --image=nginx\u00a0\u00a0\u00a0 #\u542f\u52a8\u4e00\u4e2anginx\u5b9e\u4f8b\n\n$ kubectl explain pods\u00a0\u00a0\u00a0 #\u83b7\u53d6pod\u548csvc\u7684\u6587\u6863<\/code><\/pre>\n<h3>kubectl \u67e5\u770b\u548c\u67e5\u627e\u8d44\u6e90\u5bf9\u8c61<\/h3>\n<p>\u4ee5\u4e0b\u547d\u4ee4\u67e5\u627e\u8d44\u6e90\u65f6\u53ef\u80fd\u67e5\u4e0d\u5230\u7684\u539f\u56e0\u662f\u9700\u8981\u6307\u5b9anamespace\uff0c\u901a\u8fc7<code>-n &lt;namespace&gt;<\/code>\u6307\u5b9a\u5373\u53ef\uff0c\u6216\u8005all<\/p>\n<pre><code class=\"language-bash\">$ kubectl get pods    #\u67e5\u770b\u6240\u6709Pod\u5217\u8868\n\n$ kubectl get rc,service    #\u67e5\u770brc\u548cservice\u5217\u8868\n\n$ kubectl get pods --all-namespaces\u00a0\u00a0\u00a0 #\u5217\u51fa\u6240\u6709namespace\u4e2d\u7684pod\uff0c\u4e5f\u53ef\u4ee5\u662fservices\u3001deployment\u7b49\n\n$ kubectl get pods -o wide\u00a0\u00a0\u00a0 #\u5217\u51fapod\u5e76\u663e\u793a\u8be6\u7ec6\u4fe1\u606f\n\n$ kubectl get deployment my-dep\u00a0\u00a0\u00a0 #\u5217\u51fa\u6307\u5b9adaployment\n\n$ kubectl get pods --include-uninitialized\u00a0\u00a0\u00a0 #\u5217\u51fa\u8be5namespace\u4e2d\u7684\u6240\u6709pod\uff0c\u5305\u62ec\u672a\u521d\u59cb\u5316\u7684<\/code><\/pre>\n<p>\u4f7f\u7528\u8be6\u7ec6\u8f93\u51fa\u63cf\u8ff0\u8d44\u6e90\u5bf9\u8c61<\/p>\n<pre><code class=\"language-bash\">$ kubectl describe nodes &lt;node-ip or node-name&gt;\u00a0\u00a0\u00a0 #\u67e5\u770bnode\u8282\u70b9\u8be6\u7ec6\u4fe1\u606f\n\n$ kubectl describe pods &lt;pod-name&gt;\u00a0\u00a0\u00a0 #\u67e5\u770bpod\u8be6\u7ec6\u4fe1\u606f\n\n$ kubectl describe pods &lt;rc-name&gt;    #\u67e5\u770b\u7531RC\u7ba1\u7406\u7684Pod\u7684\u4fe1\u606f\n\n$ kubectl get services --sort-by=.metadata.name --all-namespaces\u00a0\u00a0\u00a0 #\u5217\u51fa\u6240\u6709service\u5e76\u6309\u540d\u79f0\u6392\u5e8f<\/code><\/pre>\n<p>\u6839\u636e\u91cd\u542f\u6b21\u6570\u6392\u5e8f\u5217\u51fapod<\/p>\n<pre><code class=\"language-bash\">$ kubectl get pods --sort-by=&#039;.status.containerStatuses[0].restartCount&#039; --all-namespaces<\/code><\/pre>\n<p>\u83b7\u53d6\u6240\u6709\u5177\u6709app=cassandra\u7684pod\u4e2d\u7684version\u6807\u7b7e<\/p>\n<pre><code class=\"language-bash\">$ kubectl get pods --selector=app=cassandra rc -o jsonpath=&#039;{.items[*].metadata.labels.version}&#039;<\/code><\/pre>\n<p>\u83b7\u53d6\u6240\u6709\u8282\u70b9\u7684ExternalIP<\/p>\n<pre><code class=\"language-bash\">$ kubectl get nodes -o jsonpath=&#039;{.items[*].status.addresses[?(@.type==&quot;ExternlIP&quot;)].address}&#039;<\/code><\/pre>\n<h3>kubectl \u7f16\u8f91\u8d44\u6e90\u5bf9\u8c61<\/h3>\n<pre><code class=\"language-bash\">$ kubectl -n codeus edit svc\/c\u00a0\u00a0\u00a0 #\u7f16\u8f91codeus\u547d\u540d\u7a7a\u95f4\u4e0b\u540d\u79f0\u4e3ac\u7684service<\/code><\/pre>\n<h3>kubectl Scale \u8d44\u6e90\u5bf9\u8c61\uff08Pod\u7684\u6269\u5bb9\u4e0e\u7f29\u5bb9\uff09<\/h3>\n<p>\u6269\u5c55pod\u4e0b\u5bb9\u5668\u6570\u91cf<\/p>\n<pre><code class=\"language-bash\">$ kubectl scale --replicas=3 rc redis    #\u6267\u884c\u6269\u5bb9\u7f29\u5bb9Pod\u7684\u64cd\u4f5c\n$ kubectl scale --replicas=3 rs\/foo\u00a0\u00a0\u00a0 #\u6269\u5c55\u540d\u79f0\u4e3afoo\u7684\u8d44\u6e90\u52303\u4e2a\uff0c\u662f\u5426\u4f7f\u7528rs\u53d6\u51b3\u4e8eyaml\u4e2d\u7684\u7f16\u5199<\/code><\/pre>\n<p>\u4f8b\u5982yaml\u4e2d<code>kind: Deployment<\/code>\uff0c\u5219\u5e94\u901a\u8fc7\u4e0b\u9762\u65b9\u6cd5\u6269\u5c55<\/p>\n<pre><code class=\"language-bash\">$ kubectl scale --replicas=3 deployment\/foo<\/code><\/pre>\n<p>\u6216\u8005\u76f4\u63a5\u901a\u8fc7\u521b\u5efa\u8d44\u6e90\u7684yaml\u6587\u4ef6\u6269\u5c55<\/p>\n<pre><code class=\"language-bash\">$ kubectl scale --replicas=3 -f foo.yaml<\/code><\/pre>\n<p>\u6839\u636e\u5224\u65ad\u6761\u4ef6\u6269\u5c55<\/p>\n<p>\u4f8b\u5982\u6761\u4ef6\u662f\uff1a\u5982\u679cmysql\u7684\u6570\u91cf\u662f2\uff0c\u5219\u6269\u5c55\u52303<\/p>\n<pre><code class=\"language-bash\">$ kubectl scale --current-replicas=2 --replicas=3 deployment\/mysql<\/code><\/pre>\n<p>\u540c\u65f6\u6269\u5c55\u591a\u4e2a\u8d44\u6e90<\/p>\n<pre><code class=\"language-bash\">$ kubectl scale --replicas=5 rc\/foo rc\/bar rc\/baz<\/code><\/pre>\n<blockquote>\n<p>\u9700\u8981\u786e\u8ba4\u7684\u662f\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684replicas\u6570\u91cf\uff0c\u5f53\u6211\u4eec\u6267\u884c\u4e0a\u8ff0\u547d\u4ee4\u7684\u7ed3\u679c\u5927\u4e8ereplicas\u7684\u6570\u91cf\u65f6\uff0c\u5219\u6211\u4eec\u6267\u884c\u7684\u547d\u4ee4\u76f8\u5f53\u4e8e\u6269\u5bb9\u64cd\u4f5c\uff0c\u53cd\u4e4b\u76f8\u53cd\uff0c\u53ef\u4ee5\u7406\u89e3\u4e3a\u6211\u4eec\u586b\u5199\u7684\u6570\u91cf\u662f\u6211\u4eec\u9700\u8981\u7684Pod\u6570\u91cf\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5f53\u6211\u4eec\u9700\u8981\u8fdb\u884c\u6c38\u4e45\u6027\u6269\u5bb9\u65f6\uff0c\u4e0d\u8981\u5fd8\u8bb0\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684replicas\u6570\u91cf\u3002<\/p>\n<\/blockquote>\n<h3>kubectl \u5220\u9664\u8d44\u6e90\u5bf9\u8c61<\/h3>\n<pre><code class=\"language-bash\">$ kubectl delete deployment &lt;name&gt;\u00a0\u00a0\u00a0 #\u5220\u9664\u6307\u5b9adeployment\uff0c\u6b64\u65b9\u6cd5\u8fd8\u53ef\u4ee5\u5220\u9664service\u7b49\n\n$ kubectl delete -f xxx.yaml\u00a0\u00a0\u00a0 #\u57fa\u4e8e\u521b\u5efa\u6b64pod\u7684yaml\u6587\u4ef6\u5220\u9664pod\n\n$ kubectl delete pods,services -l name=&lt;label-name&gt;    #\u5220\u9664\u6240\u6709\u5305\u542b\u67d0\u4e2alabel\u7684Pod\u548cservice\n\n$ kubectl delete pods --all    #\u5220\u9664\u6240\u6709Pod<\/code><\/pre>\n<h3>kubectl \u4e0e\u8fd0\u884c\u4e2d\u7684pod\u4ea4\u4e92<\/h3>\n<pre><code class=\"language-bash\">$ kubectl -n &lt;namespaces&gt; logs &lt;pod-name&gt;\u00a0\u00a0\u00a0 #\u67e5\u770bpod\u65e5\u5fd7\uff0c-f \u6301\u7eed\u67e5\u770b\n\n$ kubectl port-forward &lt;pod-name&gt; 5000:6000\u00a0\u00a0\u00a0 #\u8f6c\u53d1pod\u4e2d\u76846000\u7aef\u53e3\u5230\u672c\u5730\u76845000\u7aef\u53e3\n\n$ kubectl exec &lt;pod-name&gt; --ls \/\u00a0\u00a0\u00a0 #\u5728\u5df2\u5b58\u5728\u7684\u5bb9\u5668\u4e2d\u6267\u884c\u547d\u4ee4\n\n$ kubectl exec &lt;pod-name&gt; data    #\u6267\u884cPod\u7684data\u547d\u4ee4\uff0c\u9ed8\u8ba4\u662f\u7528Pod\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5bb9\u5668\u6267\u884c\n\n$ kubectl exec &lt;pod-name&gt; -c &lt;container-name&gt; data    #\u6307\u5b9aPod\u4e2d\u67d0\u4e2a\u5bb9\u5668\u6267\u884cdata\u547d\u4ee4\n\n$ kubectl exec -it &lt;pod-name&gt; -c &lt;container-name&gt; bash    #\u901a\u8fc7bash\u83b7\u5f97Pod\u4e2d\u67d0\u4e2a\u5bb9\u5668\u7684TTY\uff0c\u76f8\u5f53\u4e8e\u767b\u5f55\u5bb9\u5668<\/code><\/pre>\n<h3>Pod\u7684\u6eda\u52a8\u5347\u7ea7<\/h3>\n<pre><code class=\"language-bash\">kubectl rolling-update redis -f redis-rc.update.yaml    #\u6267\u884c\u6eda\u52a8\u5347\u7ea7\u64cd\u4f5c<\/code><\/pre>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\u5f53\u6211\u4eec\u6267\u884c<code>rolling-update<\/code>\u547d\u4ee4\u524d\u9700\u8981\u51c6\u5907\u597d\u65b0\u7684RC\u914d\u7f6e\u6587\u4ef6\u4ee5\u53caConfigMap\u914d\u7f6e\u6587\u4ef6\uff0cRC\u914d\u7f6e\u6587\u4ef6\u4e2d\u9700\u8981\u6307\u5b9a\u5347\u7ea7\u540e\u9700\u8981\u4f7f\u7528\u7684\u955c\u50cf\u540d\u79f0\uff0c\u6216\u8005\u53ef\u4ee5\u4f7f\u7528<code>kubeclt rolling-update redis --image=redis-2.0<\/code>\u76f4\u63a5\u6307\u5b9a\u955c\u50cf\u540d\u79f0\u7684\u65b9\u5f0f\u76f4\u63a5\u5347\u7ea7\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>kubectl \u8f93\u51fa\u683c\u5f0f \u663e\u793aPod\u7684\u66f4\u591a\u4fe1\u606f kubectl get pod &lt;pod-name&#038;gt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[484],"class_list":["post-1898","post","type-post","status-publish","format-standard","hentry","category-k8s","tag-kubectl"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1898"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1898\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}