{"componentChunkName":"component---src-templates-post-template-jsx","path":"/history/posts/2022-04-04--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"0fce2511-99db-5cde-a89c-60718f34b684","html":"<p><span class=\"title__sub1\"> ■ 오브젝트 생성/변경 </span>\n<span class=\"title__sub2\"> ■ Create </span></p>\n<ul>\n<li>같은 이름의 오브젝트가 존재할때 생성이 안됨</li>\n</ul>\n<p><span class=\"title__sub3\"> 1. Yaml 파일로 생성 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl create -f <span class=\"token punctuation\">[</span>yaml 파일<span class=\"token punctuation\">]</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub3\"> 2. ConfigMap 생성 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># file-c.txt 라는 파일로 cm-file라는 이름의 ConfigMap 생성</span>\n$ kubectl create configmap cm-file --from-file<span class=\"token operator\">=</span>./file-c.txt\n\n<span class=\"token comment\"># key1:value1 라는 상수로 cm-file라는 이름의 ConfigMap 생성</span>\n$ kubectl create configmap cm-file --from-literal<span class=\"token operator\">=</span>key1<span class=\"token operator\">=</span>value1\n\n<span class=\"token comment\"># 여러 key:value로 cm-file라는 이름의 ConfigMap 생성 </span>\n$ kubectl create configmap cm-file --from-literal<span class=\"token operator\">=</span>key1<span class=\"token operator\">=</span>value1 --from-literal<span class=\"token operator\">=</span>key2<span class=\"token operator\">=</span>value2</code></pre></div>\n<br/>\n<p><span class=\"title__sub3\"> 2. Secret 생성 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># file-s.txt 라는 파일로 sec-file라는 이름의 Secret 생성</span>\nkubectl create secret generic sec-file --from-file<span class=\"token operator\">=</span>./file-s.txt\n\n<span class=\"token comment\"># key1:value1 라는 상수로 sec-file라는 이름의 Secret 생성</span>\nkubectl create secret generic sec-file --from-literal<span class=\"token operator\">=</span>key1<span class=\"token operator\">=</span>value1</code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> ■ Apply </span></p>\n<ul>\n<li>기존에 같은 이름의 오브젝트가 존재할때 업데이트 됨</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl apply -f <span class=\"token punctuation\">[</span>yaml 파일<span class=\"token punctuation\">]</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> ■ Create/Apply 상태 확인 </span></p>\n<ul>\n<li>생성/업데이트 된 오브젝트 상태 확인</li>\n<li>결과(성공 또는 실패)가 나올때까지 해당 명령어는 계속 수행중 상태가 됨</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl rollout status <span class=\"token punctuation\">[</span>오브젝트<span class=\"token punctuation\">]</span>/<span class=\"token punctuation\">[</span>오브젝트명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span>\n$ kubectl rollout status deployment/fifi-app -n dev</code></pre></div>\n<p><span class=\"title__sub1\"> ■ 오브젝트 조회 </span>\n<span class=\"title__sub2\"> ■ Get </span>\n<span class=\"title__sub3\"> 1. 파드 내용 조회 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># 파드리스트 조회</span>\n$ kubectl get pods -n <span class=\"token punctuation\">[</span>namespace명<span class=\"token punctuation\">]</span>\n\n<span class=\"token comment\"># 좀 더 많은 내용 출력</span>\n$ kubectl get pods -n <span class=\"token punctuation\">[</span>namespace명<span class=\"token punctuation\">]</span> -o wide\n\n<span class=\"token comment\"># 특정 파드만 조회</span>\n$ kubectl get pod <span class=\"token punctuation\">[</span>파드명<span class=\"token punctuation\">]</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub2\"> ■ Describe </span></p>\n<ul>\n<li>상세 내용 출력</li>\n</ul>\n<p><span class=\"title__sub3\"> 1. 파드 내용 상세 조회 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl describe pod <span class=\"token punctuation\">[</span>파드명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub3\"> 2. 디플로이먼트 내용 상세 조회 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl describe deployment <span class=\"token punctuation\">[</span>디플로이먼트명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub3\"> 3. namespace의 resourcequota&#x26;limitrange 상세 조회 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># nm-3의 Namespace에 있는 ResourceQuota들의 상세 조회</span>\n$ kubectl describe resourcequotas --namespace<span class=\"token operator\">=</span>nm-3\n\n<span class=\"token comment\"># nm-5의 Namespace에 있는 LimitRange들의 상세 조회</span>\n$ kubectl describe limitranges --namespace<span class=\"token operator\">=</span>nm-5</code></pre></div>\n<br/>\n<p><span class=\"title__sub1\"> ■ 오브젝트 삭제 </span>\n<span class=\"title__sub2\"> ■ Delete </span>\n<span class=\"title__sub3\"> 1. 파드 삭제 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># 파일이 있을 경우 생성한 방법 그대로 삭제</span>\n$ kubectl delete -f ./pod.yaml\n\n<span class=\"token comment\"># Pod 이름 지정</span>\n$ kubectl delete pod pod1</code></pre></div>\n<br/>\n<span class=\"title__sub3\"> 2. ReplicationController 삭제 </span>\n연결된 pod는 지우지 않고 ReplicationController만 삭제\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl delete replicationcontrollers <span class=\"token punctuation\">[</span>ReplicationController명<span class=\"token punctuation\">]</span> --cascade<span class=\"token operator\">=</span>false</code></pre></div>\n<br/>\n<p><span class=\"title__sub1\"> ■ 오브젝트 컨테이너 </span>\n<span class=\"title__sub3\"> ■ Exec </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># Container 들어가기</span>\n$ kubectl <span class=\"token builtin class-name\">exec</span> <span class=\"token punctuation\">[</span>파드명<span class=\"token punctuation\">]</span> -it /bin/bash\n\n<span class=\"token comment\"># Container가 두개 이상 있을때</span>\n$ kubectl <span class=\"token builtin class-name\">exec</span> <span class=\"token punctuation\">[</span>파드명<span class=\"token punctuation\">]</span> -c <span class=\"token punctuation\">[</span>컨테이너명<span class=\"token punctuation\">]</span> -it /bin/bash</code></pre></div>\n<br/>\n<p><span class=\"title__sub1\"> ■ Deployment Rollback </span>\n<span class=\"title__sub3\"> 1. rollout 히스토리 확인 </span></p>\n<ul>\n<li>deployment 생성/적용시 —record=true 옵션을 넣으면 CHANGE-CAUSE 필드에 명령어가 표시됨\n\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/c4451/04-001-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 40%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABYlAAAWJQFJUiTwAAAA4UlEQVQoz62SWWvEMAyE7dx3SR5Dl5JtznUgdZMl//+XTTOClBb60OthsISsz4MstdgXvN7v6PoBdllgxhFmGPCQZlBKQWsF13U/yfd9keM4knueJ7HWGuo2TjDThMvlEXZd8dz3eLpe4QS+AH8skhnwxdkYpGn6rUZx81WNlhlEUYR931EUxe+cnQqC4H+BBNA+wdZaZFn2NyABJ9AcMyzLUtwyZy1JEjk52ziOEYahzJs5a+cfvCvPcwHyAh12XYflWJ+qqjDPM9bj56lt2zAd29A0Deq6lsfbtgX7PwLfAP1rsjIqoTkXAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"04 001 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/d9199/04-001-01.png\"\n        srcset=\"/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/8ff5a/04-001-01.png 240w,\n/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/e85cb/04-001-01.png 480w,\n/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/d9199/04-001-01.png 960w,\n/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/07a9c/04-001-01.png 1440w,\n/devHistoryBlog/static/f491f82f9efe922dd09492c0f31e2b19/c4451/04-001-01.png 1450w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ kubectl rollout <span class=\"token function\">history</span> deployment <span class=\"token punctuation\">[</span>디플로이먼트명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span>\n$ kubectl rollout <span class=\"token function\">history</span> deployment deployment-1 -n dev</code></pre></div>\n<br/>\n<p><span class=\"title__sub3\"> 2. 롤백 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\"># 바로 이전 버전으로 변경</span>\n$ kubectl rollout undo deployment <span class=\"token punctuation\">[</span>디플로이먼트명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span>\n$ kubectl rollout undo deployment fifi-app -n dev\n\n<span class=\"token comment\"># 원하는 리비전으로 번경 (마지막 리비전이 현재 리비전)</span>\n$ kubectl rollout undo deployment <span class=\"token punctuation\">[</span>디플로이먼트명<span class=\"token punctuation\">]</span> -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span> --to-revision<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span>리비전번호<span class=\"token punctuation\">]</span>\n$ kubectl rollout undo deployment deployment-1 -n <span class=\"token punctuation\">[</span>네임스페이스명<span class=\"token punctuation\">]</span> --to-revision<span class=\"token operator\">=</span><span class=\"token number\">2</span></code></pre></div>\n<br/>\n<p><span class=\"title__sub1\"> ■ Label </span>\n<span class=\"title__sub3\"> 1. node에 라벨 추가/삭제 </span></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token comment\">#os=centos 라벨 추가</span>\n$ kubectl label nodes <span class=\"token punctuation\">[</span>노드명<span class=\"token punctuation\">]</span> <span class=\"token punctuation\">[</span>라벨키<span class=\"token punctuation\">]</span><span class=\"token operator\">=</span><span class=\"token punctuation\">[</span>라벨벨류<span class=\"token punctuation\">]</span>\n$ kubectl label nodes k8s-node1 <span class=\"token assign-left variable\">os</span><span class=\"token operator\">=</span>centos\n\n<span class=\"token comment\">#라벨 삭제</span>\n$ kubectl label nodes <span class=\"token punctuation\">[</span>노드명<span class=\"token punctuation\">]</span> <span class=\"token punctuation\">[</span>라벨키<span class=\"token punctuation\">]</span>-\n$ kubectl label nodes k8s-node1 os-</code></pre></div>","fields":{"tagSlugs":["/tags/k-8-s/","/tags/kubectl/"],"slug":"/history/posts/2022-04-04--001"},"frontmatter":{"title":"[K8S] kubectl 자주 사용하는 명령어","tags":["k8s","kubectl"],"date":"2022-04-04","description":""}}},"pageContext":{"slug":"/history/posts/2022-04-04--001"}},"staticQueryHashes":[]}