-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathImperative Commands with kubectl.html
More file actions
73 lines (71 loc) · 9.48 KB
/
Imperative Commands with kubectl.html
File metadata and controls
73 lines (71 loc) · 9.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- common.css -->
<style>* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-family: -apple-system, Helvetica, Arial, sans-serif;margin: 0;padding: 20px;color: #333;word-wrap: break-word;}h1, h2, h3, h4, h5, h6 {line-height: 1.1;}img {max-width: 100% !important;height: auto;}blockquote {margin: 0;padding: 0 15px;color: #777;border-left: 4px solid #ddd;}hr {background-color: #ddd;border: 0;height: 1px;margin: 15px 0;}code {font-family: Menlo, Consolas, 'Ubuntu Mono', Monaco, 'source-code-pro', monospace;line-height: 1.4;margin: 0;padding: 0.2em 0;font-size: 90%;background-color: rgba(0,0,0,0.04);border-radius: 3px;}pre > code {margin: 0;padding: 0;font-size: 100%;word-break: normal;background: transparent;border: 0;}ol {list-style-type: decimal;}ol ol, ul ol {list-style-type: lower-latin;}ol ol ol, ul ol ol, ul ul ol, ol ul ol {list-style-type: lower-roman;}table {border-spacing: 0;border-collapse: collapse;margin-top: 0;margin-bottom: 16px;}table th {font-weight: bold;}table th, table td {padding: 6px 13px;border: 1px solid #ddd;}table tr {border-top: 1px solid #ccc;}table tr:nth-child(even) {background-color: #f8f8f8;}input[type="checkbox"] {cursor: default;margin-right: 0.5em;font-size: 13px;}.task-list-item {list-style-type: none;}.task-list-item+.task-list-item {margin-top: 3px;}.task-list-item input {float: left;margin: 0.3em 1em 0.25em -1.6em;vertical-align: middle;}#tag-field {margin: 8px 2px 10px;}#tag-field .tag {display: inline-block;background: #cadff3;border-radius: 4px;padding: 1px 8px;color: black;font-size: 12px;margin-right: 10px;line-height: 1.4;}</style>
<!-- ace-static.css -->
<style>.ace_static_highlight {white-space: pre-wrap;}.ace_static_highlight .ace_gutter {width: 2em;text-align: right;padding: 0 3px 0 0;margin-right: 3px;}.ace_static_highlight.ace_show_gutter > .ace_line {padding-left: 2.6em;}.ace_static_highlight .ace_line {position: relative;}.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;top: 0;bottom: 0;left: 0;position: absolute;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}</style>
<style>.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}</style>
<!-- export.css -->
<style>
body{margin:0 auto;max-width:800px;line-height:1.4}
#nav{margin:5px 0 10px;font-size:15px}
#titlearea{border-bottom:1px solid #ccc;font-size:17px;padding:10px 0;}
#contentarea{font-size:15px;margin:16px 0}
.cell{outline:0;min-height:20px;margin:5px 0;padding:5px 0;}
.code-cell{font-family:Menlo,Consolas,'Ubuntu Mono',Monaco,'source-code-pro',monospace;font-size:12px;}
.latex-cell{white-space:pre-wrap;}
</style>
<!-- User CSS -->
<style> .text-cell {font-size: 15px;}.code-cell {font-size: 12px;}.markdown-cell {font-size: 15px;}.latex-cell {font-size: 15px;}</style>
</head>
<body>
<div id="nav"><div>Next: <a href='Working with ETCDCTL.html'>Working with ETCDCTL</a>, Previous: <a href='A quick note on editing PODs and Deployments.html'>A quick note on editing PODs and Deployments</a>, Up: <a href='index.html'>Index</a></div></div>
<div id="titlearea">
<h2>Imperative Commands with kubectl</h2>
</div>
<div id="contentarea"><div class="cell markdown-cell"><p><code>--dry-run</code>: By default as soon as the command is run, the resource will be created.<br>
If you simply want to test your command, use the <code>--dry-run=client</code> option. This will not create the resource, instead, tell you whether the resource can be created and if your command is right.<br>
<code>-o yaml</code>: This will output the resource definition in YAML format on the screen.</p>
<h2>POD</h2>
<h3>Create an NGINX Pod</h3>
<p><code>kubectl run nginx --image=nginx</code></p>
<h3>Generate POD Manifest YAML file (-o yaml). Don't create it(--dry-run)</h3>
<p><code>kubectl run nginx --image=nginx --dry-run=client -o yaml</code></p>
<h2>Deployment</h2>
<h3>Create a deployment</h3>
<p><code>kubectl create deployment --image=nginx nginx</code></p>
<h3>Generate Deployment YAML file (-o yaml). Don't create it(--dry-run)</h3>
<p><code>kubectl create deployment --image=nginx nginx --dry-run -o yaml</code></p>
<h3>Generate Deployment with 4 Replicas</h3>
<p><code>kubectl create deployment nginx --image=nginx --replicas=4</code></p>
<h3>You can also scale a deployment using the kubectl scale command.</h3>
<p><code>kubectl scale deployment nginx --replicas=4</code></p>
<h3>Another way to do this is to save the YAML definition to a file.</h3>
<p><code>kubectl create deployment nginx --image=nginx--dry-run=client -o yaml > nginx-deployment.yaml</code><br>
You can then update the YAML file with the replicas or any other field before creating the deployment.</p>
<h2>Service</h2>
<h3>Create a Service named redis-service of type ClusterIP to expose pod redis on port 6379</h3>
<p><code>kubectl expose pod redis --port=6379 --name redis-service --dry-run=client -o yaml</code><br>
(This will automatically use the pod's labels as selectors)</p>
<p>Or</p>
<p><code>kubectl create service clusterip redis --tcp=6379:6379 --dry-run=client -o yaml</code></p>
<p>(This will not use the pods labels as selectors, instead it will assume selectors as app=redis. You cannot pass in selectors as an option. So it does not work very well if your pod has a different label set. So generate the file and modify the selectors before creating the service)</p>
<h3>Create a Service named nginx of type NodePort to expose pod nginx's port 80 on port 30080 on the nodes:</h3>
<p><code>kubectl expose pod nginx --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml</code></p>
<p>(This will automatically use the pod's labels as selectors, but you cannot specify the node port. You have to generate a definition file and then add the node port in manually before creating the service with the pod.)</p>
<p>Or</p>
<p><code>kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml</code><br>
(This will not use the pods labels as selectors)</p>
<p>Both the above commands have their own challenges. While one of it cannot accept a selector the other cannot accept a node port. I would recommend going with the <code>kubectl expose</code> command. If you need to specify a node port, generate a definition file using the same command and manually input the nodeport before creating the service.</p>
<h2>Reference:</h2>
<p><a href="https://kubernetes.io/docs/reference/kubectl/conventions/">https://kubernetes.io/docs/reference/kubectl/conventions/</a></p>
</div></div>
<script>document.body.onkeyup = function(e) {
if (e.keyCode === 39) window.location.href = 'Working with ETCDCTL.html';
if (e.keyCode === 37) window.location.href = 'A quick note on editing PODs and Deployments.html';
}</script>
</body>
</html>