All language subtitles for Learn the history and fundamentals of Kubernetes.eng.eng

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt-PT Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish Download
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:07,130 --> 00:00:13,710 hey everyone I'm a nationís car and I'm 2 00:00:11,519 --> 00:00:16,650 introducing everyone to this IBM 3 00:00:13,710 --> 00:00:21,060 developer Tech Talk series today we'll 4 00:00:16,650 --> 00:00:22,740 be going over kubernetes so this is 5 00:00:21,060 --> 00:00:25,529 titled learn the history and 6 00:00:22,740 --> 00:00:28,560 fundamentals of kubernetes our presenter 7 00:00:25,530 --> 00:00:32,160 today is Edie she and he'll introduce 8 00:00:28,560 --> 00:00:35,280 himself cool so yeah hey everyone I'm 9 00:00:32,159 --> 00:00:38,328 Edie I'm a developer advocate and 10 00:00:35,280 --> 00:00:40,739 working for IBM cloud with a focus on 11 00:00:38,329 --> 00:00:44,699 cloud deployment so you know can 12 00:00:40,739 --> 00:00:47,578 containers serverless virtual machines 13 00:00:44,699 --> 00:00:50,940 that those kind of those are kind of 14 00:00:47,579 --> 00:00:53,370 like the key features of what I focus on 15 00:00:50,940 --> 00:00:55,170 but also I do a fair amount of machine 16 00:00:53,370 --> 00:01:00,030 learning and artificial intelligence as 17 00:00:55,170 --> 00:01:02,129 well so ok so throughout this talk I'll 18 00:01:00,030 --> 00:01:03,960 be monitoring the YouTube chat for 19 00:01:02,129 --> 00:01:06,179 comments and questions and in the 20 00:01:03,960 --> 00:01:08,640 YouTube chat in the description box 21 00:01:06,180 --> 00:01:10,710 there's a link to the event page and in 22 00:01:08,640 --> 00:01:12,900 this event page you'll have a replay of 23 00:01:10,710 --> 00:01:14,369 this video and getting started resources 24 00:01:12,900 --> 00:01:16,710 that will help you take the next steps 25 00:01:14,370 --> 00:01:20,640 in learning kubernetes along with a link 26 00:01:16,710 --> 00:01:24,990 with how to sign up with IBM cloud so ed 27 00:01:20,640 --> 00:01:28,880 we'll begin now cool yeah so what I will 28 00:01:24,990 --> 00:01:31,410 do just before I start just check all my 29 00:01:28,880 --> 00:01:33,300 all my slides up on the screen so that 30 00:01:31,410 --> 00:01:38,750 you're ready to go 31 00:01:33,300 --> 00:01:40,920 ok great yeah so try to try and not like 32 00:01:38,750 --> 00:01:42,960 boy you guys too much with too many 33 00:01:40,920 --> 00:01:45,330 slides what I'm gonna do in this talk is 34 00:01:42,960 --> 00:01:47,369 I'm gonna take you through some basics 35 00:01:45,330 --> 00:01:48,480 of you know containers and Kuban at ease 36 00:01:47,370 --> 00:01:50,790 and where it came from 37 00:01:48,480 --> 00:01:52,290 and just a few of the important things 38 00:01:50,790 --> 00:01:54,120 you'll need to know and then I'm gonna 39 00:01:52,290 --> 00:01:56,370 do live demonstration because I think 40 00:01:54,120 --> 00:01:58,680 it's the best way to learn is to see how 41 00:01:56,370 --> 00:02:00,180 it's actually done and and you can see 42 00:01:58,680 --> 00:02:02,310 it live and this is actually also 43 00:02:00,180 --> 00:02:04,200 available as a workshop if you want to 44 00:02:02,310 --> 00:02:06,200 do it I'll share the link with everyone 45 00:02:04,200 --> 00:02:15,430 afterwards 46 00:02:06,200 --> 00:02:18,260 okay so let me just share my screen cool 47 00:02:15,430 --> 00:02:22,010 and Anisha could you just confirm you 48 00:02:18,260 --> 00:02:29,269 can see that you should be able to see 49 00:02:22,010 --> 00:02:32,000 the intro okay great so just just to 50 00:02:29,270 --> 00:02:34,130 reiterate what Anisha said if you're on 51 00:02:32,000 --> 00:02:35,840 this event page anyway there are 52 00:02:34,130 --> 00:02:38,540 resources you can go to you can find all 53 00:02:35,840 --> 00:02:41,150 sorts of things around Cuba Nettie's and 54 00:02:38,540 --> 00:02:42,890 so on and the the workshop that I 55 00:02:41,150 --> 00:02:45,200 mentioned some of which is covered in 56 00:02:42,890 --> 00:02:47,089 this talk if you go to Cuba Nettie's 101 57 00:02:45,200 --> 00:02:48,859 on the left and if you're interested in 58 00:02:47,090 --> 00:02:50,930 signing up for a free IP em cloud 59 00:02:48,860 --> 00:02:53,180 account go to this link on the right 60 00:02:50,930 --> 00:02:55,040 hand side and from there you can start 61 00:02:53,180 --> 00:03:01,549 playing with all sorts of resources and 62 00:02:55,040 --> 00:03:03,950 services on IBM crowd great so the 63 00:03:01,549 --> 00:03:06,620 agenda for today I'm going to loosely 64 00:03:03,950 --> 00:03:08,480 cover a container architecture and this 65 00:03:06,620 --> 00:03:12,650 talk kind of assumes that you have a 66 00:03:08,480 --> 00:03:15,290 basic understanding or at least familiar 67 00:03:12,650 --> 00:03:16,609 with containers as a concept you don't 68 00:03:15,290 --> 00:03:19,548 necessarily have to have had hands-on 69 00:03:16,609 --> 00:03:22,430 experience talk about the advantages of 70 00:03:19,549 --> 00:03:24,620 them then talk about docker and how that 71 00:03:22,430 --> 00:03:27,829 kind of revolutionized that container 72 00:03:24,620 --> 00:03:29,269 ecosystem and then some of the stuff 73 00:03:27,829 --> 00:03:32,480 around Cuba Nettie's you know why I came 74 00:03:29,269 --> 00:03:34,640 about where it came from and the basics 75 00:03:32,480 --> 00:03:37,040 of Cuban ESI's and how it works 76 00:03:34,640 --> 00:03:38,660 and then some key concepts of Cuba 77 00:03:37,040 --> 00:03:40,548 Nettie's they don't do this demo I 78 00:03:38,660 --> 00:03:41,959 talked about and then finally I'll just 79 00:03:40,549 --> 00:03:46,760 come back to the slides just to wrap 80 00:03:41,959 --> 00:03:48,350 everything up at the end so to start 81 00:03:46,760 --> 00:03:52,179 with just for those who aren't 82 00:03:48,350 --> 00:03:55,760 necessarily familiar containers 83 00:03:52,180 --> 00:03:58,250 essentially have taken what was you know 84 00:03:55,760 --> 00:04:00,350 the virtual machine operating model 85 00:03:58,250 --> 00:04:02,150 where you have a hypervisor and in each 86 00:04:00,350 --> 00:04:05,239 of those you have an you know an 87 00:04:02,150 --> 00:04:07,459 isolated segment of compute and that can 88 00:04:05,239 --> 00:04:09,350 run into an operating system the 89 00:04:07,459 --> 00:04:11,630 difference with a container is that they 90 00:04:09,350 --> 00:04:14,480 share a host operating system so you're 91 00:04:11,630 --> 00:04:16,399 still you still work in an isolated 92 00:04:14,480 --> 00:04:19,389 environment both in terms of compute 93 00:04:16,399 --> 00:04:23,169 memory processors etc but there 94 00:04:19,389 --> 00:04:27,639 actually all on the same Lennox host 95 00:04:23,169 --> 00:04:29,859 operating system and so what this allows 96 00:04:27,639 --> 00:04:33,490 containers to do is to be incredibly 97 00:04:29,860 --> 00:04:35,620 more incredibly like lightweight and way 98 00:04:33,490 --> 00:04:37,749 more portable than a virtual machine is 99 00:04:35,620 --> 00:04:39,849 and I'd like for those who've you've had 100 00:04:37,749 --> 00:04:41,289 experience in this trying to share 101 00:04:39,849 --> 00:04:43,748 virtual machines with each other when 102 00:04:41,289 --> 00:04:46,498 you're sharing images they're often you 103 00:04:43,749 --> 00:04:48,460 know tens or hundreds of gigabytes 104 00:04:46,499 --> 00:04:49,900 containers tend to be you know in the 105 00:04:48,460 --> 00:04:51,340 range of like megabytes tens of 106 00:04:49,900 --> 00:04:53,169 megabytes hundreds of megabytes as 107 00:04:51,340 --> 00:04:54,729 they're very big but it's normally the 108 00:04:53,169 --> 00:04:56,669 stuff you put inside it that makes it 109 00:04:54,729 --> 00:05:00,128 big it's not the base image itself 110 00:04:56,669 --> 00:05:01,930 whereas an operating system already by 111 00:05:00,129 --> 00:05:04,840 default it's taking out gigabytes of 112 00:05:01,930 --> 00:05:07,029 space right and so they're much less 113 00:05:04,840 --> 00:05:08,948 portable yeah the other thing is they 114 00:05:07,029 --> 00:05:12,339 don't have the boot up time of an 115 00:05:08,949 --> 00:05:15,460 operating system so containers can start 116 00:05:12,339 --> 00:05:17,009 in milliseconds where um virtual 117 00:05:15,460 --> 00:05:18,938 machines were starting in you know 118 00:05:17,009 --> 00:05:22,509 seconds if they're really fast but 119 00:05:18,939 --> 00:05:24,939 mostly minutes um to show you how this 120 00:05:22,509 --> 00:05:27,159 this kind of makes it more flexible in 121 00:05:24,939 --> 00:05:28,509 terms of how you run your compute the 122 00:05:27,159 --> 00:05:30,909 other thing with a virtual machine is 123 00:05:28,509 --> 00:05:33,029 that they they are constrained from when 124 00:05:30,909 --> 00:05:36,099 they start in terms of their resources 125 00:05:33,029 --> 00:05:38,819 so if I have this example on the left 126 00:05:36,099 --> 00:05:42,188 hand side I've got a virtual machine but 127 00:05:38,819 --> 00:05:44,710 hardware known as got four apps on it 128 00:05:42,189 --> 00:05:47,139 I've provisioned those into that machine 129 00:05:44,710 --> 00:05:49,029 but I have reserved a quarter of it for 130 00:05:47,139 --> 00:05:49,930 each of those apps and actually none of 131 00:05:49,029 --> 00:05:52,419 them are using the fully allocated 132 00:05:49,930 --> 00:05:53,860 resources that I've given them with 133 00:05:52,419 --> 00:05:55,299 containers you don't have to constrain 134 00:05:53,860 --> 00:05:56,949 them you can constrain them with 135 00:05:55,300 --> 00:06:00,490 kubernetes and you your common to see 136 00:05:56,949 --> 00:06:02,500 this later but it also allows you to get 137 00:06:00,490 --> 00:06:05,020 more utilization out of the hardware you 138 00:06:02,500 --> 00:06:07,689 have underneath because typically 139 00:06:05,020 --> 00:06:10,149 they're smaller lighter weight and they 140 00:06:07,689 --> 00:06:12,219 have fewer resource requirements in the 141 00:06:10,149 --> 00:06:13,899 first place but they also don't 142 00:06:12,219 --> 00:06:17,050 necessarily need to be constrained so if 143 00:06:13,899 --> 00:06:21,930 one app needs more compute than another 144 00:06:17,050 --> 00:06:26,259 it can take it and so then bringing onto 145 00:06:21,930 --> 00:06:27,490 docker right so docker tick containers 146 00:06:26,259 --> 00:06:31,419 which actually been around for a long 147 00:06:27,490 --> 00:06:32,830 long time there was since the 80s but 148 00:06:31,419 --> 00:06:33,159 they weren't very popular because it 149 00:06:32,830 --> 00:06:35,050 would 150 00:06:33,160 --> 00:06:39,430 very difficult deployment technique to 151 00:06:35,050 --> 00:06:42,820 use what daca did was took the container 152 00:06:39,430 --> 00:06:45,430 system and made them developer friendly 153 00:06:42,820 --> 00:06:49,270 so they built a nice experience a user 154 00:06:45,430 --> 00:06:51,880 experience around containers and the way 155 00:06:49,270 --> 00:06:53,620 they did this was they they defined some 156 00:06:51,880 --> 00:06:56,110 key components like on the left hand 157 00:06:53,620 --> 00:06:58,000 side you see it the registry right 158 00:06:56,110 --> 00:07:01,420 inside a registry it's essentially a 159 00:06:58,000 --> 00:07:03,430 store of built containers and and what 160 00:07:01,420 --> 00:07:05,290 gets stored in there or container images 161 00:07:03,430 --> 00:07:07,900 so what you can see in the middle just 162 00:07:05,290 --> 00:07:09,790 under where it says docker engine an 163 00:07:07,900 --> 00:07:12,840 image is the same as a virtual machine 164 00:07:09,790 --> 00:07:15,010 image it's it's like a blueprint of a 165 00:07:12,840 --> 00:07:18,760 built container that contains all the 166 00:07:15,010 --> 00:07:21,870 code and dependencies required to run 167 00:07:18,760 --> 00:07:25,420 your application right those images then 168 00:07:21,870 --> 00:07:27,430 get run and they're instantiated into a 169 00:07:25,420 --> 00:07:29,050 container and that's what actually the 170 00:07:27,430 --> 00:07:31,840 container is is it's a running version 171 00:07:29,050 --> 00:07:34,990 of the image that you've built and those 172 00:07:31,840 --> 00:07:37,000 are built through a set of instructions 173 00:07:34,990 --> 00:07:39,760 called a docker file right which you can 174 00:07:37,000 --> 00:07:42,070 see on the right hand side and so talk 175 00:07:39,760 --> 00:07:44,400 about this very simple ecosystem but it 176 00:07:42,070 --> 00:07:46,990 actually made it really easy to reuse 177 00:07:44,400 --> 00:07:48,820 other people's assets so you know I 178 00:07:46,990 --> 00:07:51,730 could I could take one of your images 179 00:07:48,820 --> 00:07:53,580 from the registry I could add a use my 180 00:07:51,730 --> 00:07:57,490 own docker file and just build my own 181 00:07:53,580 --> 00:07:59,050 application information into the image 182 00:07:57,490 --> 00:08:02,140 that you've already created and then I 183 00:07:59,050 --> 00:08:04,410 can run them as containers when I have a 184 00:08:02,140 --> 00:08:06,940 run in container if I also want to 185 00:08:04,410 --> 00:08:08,740 capture the changes I've made in that I 186 00:08:06,940 --> 00:08:11,020 can commit that and it creates a new 187 00:08:08,740 --> 00:08:14,830 image from the the base image that was 188 00:08:11,020 --> 00:08:16,510 used but so docker kind of made this 189 00:08:14,830 --> 00:08:20,409 really nice and running containers was 190 00:08:16,510 --> 00:08:23,440 then sort of a much easier problem than 191 00:08:20,410 --> 00:08:24,940 it was before but docker has a lot of 192 00:08:23,440 --> 00:08:27,850 limitations when it comes to running 193 00:08:24,940 --> 00:08:29,770 things in production and so if you read 194 00:08:27,850 --> 00:08:31,870 this problem statement at the top I have 195 00:08:29,770 --> 00:08:33,520 multiple applications that I wish to run 196 00:08:31,870 --> 00:08:35,979 across multiple servers with high 197 00:08:33,520 --> 00:08:36,789 availability docker is great but it's 198 00:08:35,979 --> 00:08:40,390 not that smart 199 00:08:36,789 --> 00:08:42,069 so some of the limitations of docker so 200 00:08:40,390 --> 00:08:44,620 docker is only aware of the containers 201 00:08:42,070 --> 00:08:46,120 running on the machine it runs on right 202 00:08:44,620 --> 00:08:48,370 and that's the biggest one here is 203 00:08:46,120 --> 00:08:52,720 the docker engine runs on a single 204 00:08:48,370 --> 00:08:53,649 machine and it has no awareness of the 205 00:08:52,720 --> 00:08:56,620 fact that you might have multiple 206 00:08:53,649 --> 00:08:59,680 machines with multiple applications 207 00:08:56,620 --> 00:09:03,730 running on them so it's also inherently 208 00:08:59,680 --> 00:09:05,498 not aware of its own state right so 209 00:09:03,730 --> 00:09:07,600 actually if your machine totally dies 210 00:09:05,499 --> 00:09:09,699 your doctor engine dies with it 211 00:09:07,600 --> 00:09:11,470 so docker doesn't even know that your 212 00:09:09,699 --> 00:09:15,550 containers underneath are now no longer 213 00:09:11,470 --> 00:09:19,509 running horizontal scaling in docker 214 00:09:15,550 --> 00:09:20,979 doesn't exist so yes you can run you 215 00:09:19,509 --> 00:09:22,899 know you can say here's a container run 216 00:09:20,980 --> 00:09:24,309 it and then run it again and run it and 217 00:09:22,899 --> 00:09:26,829 you can keep running the same container 218 00:09:24,309 --> 00:09:28,660 but it doesn't have it built in by 219 00:09:26,829 --> 00:09:30,489 default right in the way that with 220 00:09:28,660 --> 00:09:34,870 kubernetes you can scale things easily 221 00:09:30,490 --> 00:09:36,399 and independently docker also doesn't 222 00:09:34,870 --> 00:09:41,769 repair applications which become 223 00:09:36,399 --> 00:09:43,930 unhealthy and so with a docker container 224 00:09:41,769 --> 00:09:47,170 if I deploy my application in there and 225 00:09:43,930 --> 00:09:51,309 it's running on an engine in a single 226 00:09:47,170 --> 00:09:53,589 machine and then it crashes and a docker 227 00:09:51,309 --> 00:09:56,459 can report back the status saying this 228 00:09:53,589 --> 00:09:59,350 application has crashed but it doesn't 229 00:09:56,459 --> 00:10:01,420 automatically understand you know why is 230 00:09:59,350 --> 00:10:04,029 my not necessary why my applications 231 00:10:01,420 --> 00:10:05,769 crashed but that the application has 232 00:10:04,029 --> 00:10:07,300 crashed rather than necessarily just 233 00:10:05,769 --> 00:10:10,929 exited because it's finished running a 234 00:10:07,300 --> 00:10:12,370 process and it also doesn't know that 235 00:10:10,929 --> 00:10:13,839 actually I want that thing to be 236 00:10:12,370 --> 00:10:15,490 restarted I still want to always have 237 00:10:13,839 --> 00:10:18,459 one of those running so it doesn't have 238 00:10:15,490 --> 00:10:20,370 this kind of understanding of the 239 00:10:18,459 --> 00:10:23,589 desired state of your application 240 00:10:20,370 --> 00:10:25,179 landscape which is again as we come to 241 00:10:23,589 --> 00:10:28,689 Cuba Nettie's you'll see that that gets 242 00:10:25,179 --> 00:10:31,629 managed very well so just to explain 243 00:10:28,689 --> 00:10:35,410 where where Cuba Nessie's fits in and 244 00:10:31,629 --> 00:10:38,230 this is a kind of very abridged version 245 00:10:35,410 --> 00:10:39,519 of different sort of container stacks so 246 00:10:38,230 --> 00:10:41,470 right down at the bottom you can see 247 00:10:39,519 --> 00:10:43,449 visual physical infrastructure right 248 00:10:41,470 --> 00:10:45,129 which was I guess how you know 249 00:10:43,449 --> 00:10:47,649 traditionally all computing was done and 250 00:10:45,129 --> 00:10:49,029 you buy your own physical machines on 251 00:10:47,649 --> 00:10:52,420 top of that you have virtual 252 00:10:49,029 --> 00:10:56,170 infrastructure things like VMware or ec2 253 00:10:52,420 --> 00:10:57,878 from AWS operating systems again these 254 00:10:56,170 --> 00:10:59,949 are now abstracting even more you know 255 00:10:57,879 --> 00:11:01,240 inside your virtual machine your 256 00:10:59,950 --> 00:11:04,600 extracting stuff through an operating 257 00:11:01,240 --> 00:11:07,090 system inside those who might run a 258 00:11:04,600 --> 00:11:11,200 container engine right which which then 259 00:11:07,090 --> 00:11:13,510 isolates that operating system and then 260 00:11:11,200 --> 00:11:17,140 like a sort of even higher abstraction 261 00:11:13,510 --> 00:11:19,540 to that is this kind of orchestration 262 00:11:17,140 --> 00:11:22,890 scheduling service model right which 263 00:11:19,540 --> 00:11:25,120 basically takes multiples of those 264 00:11:22,890 --> 00:11:26,920 layers that we've talked about beneath 265 00:11:25,120 --> 00:11:29,290 so in this case container engines for 266 00:11:26,920 --> 00:11:31,180 cuba Nettie's right and handles the 267 00:11:29,290 --> 00:11:34,270 deployment and scheduling of workloads 268 00:11:31,180 --> 00:11:37,900 across those and the final one just to 269 00:11:34,270 --> 00:11:41,260 mention at the top there is more of a 270 00:11:37,900 --> 00:11:42,850 like developer focused orientation to 271 00:11:41,260 --> 00:11:45,030 that so if you look at things like open 272 00:11:42,850 --> 00:11:47,380 share or Heroku or Cloud Foundry 273 00:11:45,030 --> 00:11:48,610 typically what's referred to as powers 274 00:11:47,380 --> 00:11:51,820 or platform-as-a-service 275 00:11:48,610 --> 00:11:53,710 and these tend to take a much more that 276 00:11:51,820 --> 00:11:56,260 they're more opinionated but they will 277 00:11:53,710 --> 00:11:58,540 take a more developer centric approach 278 00:11:56,260 --> 00:12:01,180 where actually it's I don't really care 279 00:11:58,540 --> 00:12:03,640 how my application gets deployed and 280 00:12:01,180 --> 00:12:06,280 where and so on I just want it to run 281 00:12:03,640 --> 00:12:12,160 and here's my code so it's like a code 282 00:12:06,280 --> 00:12:14,170 first approach um so just before I talk 283 00:12:12,160 --> 00:12:15,550 about some cuba Nettie's capabilities 284 00:12:14,170 --> 00:12:19,599 let's talk about sort of where it came 285 00:12:15,550 --> 00:12:22,060 from so originally came out of a project 286 00:12:19,600 --> 00:12:26,590 in inside an internal project at Google 287 00:12:22,060 --> 00:12:28,000 called Borg which was their workload 288 00:12:26,590 --> 00:12:30,550 scheduler which would allow their 289 00:12:28,000 --> 00:12:32,620 developers basically to spin up their 290 00:12:30,550 --> 00:12:34,689 own environments super easily and 291 00:12:32,620 --> 00:12:39,100 quickly and it was built using 292 00:12:34,690 --> 00:12:41,110 containers it then became its own open 293 00:12:39,100 --> 00:12:45,190 source project has been you know it's 294 00:12:41,110 --> 00:12:47,500 been backed by huge corporates you know 295 00:12:45,190 --> 00:12:50,260 IBM being one of them Google are still 296 00:12:47,500 --> 00:12:52,990 heavily behind it you see brent hat even 297 00:12:50,260 --> 00:12:56,020 even amazon who traditionally have been 298 00:12:52,990 --> 00:12:58,240 pretty anti open-source ever have caved 299 00:12:56,020 --> 00:13:03,189 in and now back in cuba Nettie's as a 300 00:12:58,240 --> 00:13:06,850 container Orchestrator and it's it's its 301 00:13:03,190 --> 00:13:10,750 own now through the cloud native compute 302 00:13:06,850 --> 00:13:13,630 foundation has become its own foundation 303 00:13:10,750 --> 00:13:17,020 which is great it was the first 304 00:13:13,630 --> 00:13:19,090 project to fully graduate from the cloud 305 00:13:17,020 --> 00:13:21,280 native compute foundation if you're not 306 00:13:19,090 --> 00:13:24,580 aware of what that is Google it because 307 00:13:21,280 --> 00:13:28,449 it has some great tools and utilities in 308 00:13:24,580 --> 00:13:32,050 there that allow you to run distributed 309 00:13:28,450 --> 00:13:35,860 workloads at scale on the cloud using 310 00:13:32,050 --> 00:13:38,500 best practices another fun fact right 311 00:13:35,860 --> 00:13:41,500 kubernetes comes from the ancient Greek 312 00:13:38,500 --> 00:13:43,750 it means helmsman or captain of a ship 313 00:13:41,500 --> 00:13:45,610 and as you start to see some of the 314 00:13:43,750 --> 00:13:48,370 capabilities that cuba's brings to your 315 00:13:45,610 --> 00:13:52,170 container deployments you'll see why 316 00:13:48,370 --> 00:13:55,360 it's named as such so one of those is 317 00:13:52,170 --> 00:13:57,610 intelligent scheduling cuban entities 318 00:13:55,360 --> 00:14:00,550 will take your containers and it's 319 00:13:57,610 --> 00:14:02,860 automatically placing those based on the 320 00:14:00,550 --> 00:14:04,900 required resources so if I have let's 321 00:14:02,860 --> 00:14:06,910 say I have three machines right and and 322 00:14:04,900 --> 00:14:08,980 one of them's running almost at capacity 323 00:14:06,910 --> 00:14:11,500 and the one's kind of half full and the 324 00:14:08,980 --> 00:14:13,540 other ones pre empty right Cuba Nettie's 325 00:14:11,500 --> 00:14:15,250 is aware of that and it knows okay the 326 00:14:13,540 --> 00:14:17,319 best place to deploy that extra 327 00:14:15,250 --> 00:14:19,930 container you know all that run is in 328 00:14:17,320 --> 00:14:21,790 the already the pretty empty one there's 329 00:14:19,930 --> 00:14:25,180 loads of resource there for them to run 330 00:14:21,790 --> 00:14:38,260 and it also you know supports mixed 331 00:14:25,180 --> 00:14:40,540 workloads you draw if I tell Cuba 332 00:14:38,260 --> 00:14:43,750 Nettie's I want three and one want my 333 00:14:40,540 --> 00:14:47,500 application deployed three times for 334 00:14:43,750 --> 00:14:48,760 high availability right in fact I don't 335 00:14:47,500 --> 00:14:51,100 even need to tell I need high 336 00:14:48,760 --> 00:14:53,170 availability it assumes as much it will 337 00:14:51,100 --> 00:14:54,790 take your containers and it will run 338 00:14:53,170 --> 00:14:59,979 them across as many different worker 339 00:14:54,790 --> 00:15:03,069 nodes as it can in order to increase the 340 00:14:59,980 --> 00:15:05,110 availability of your application 341 00:15:03,070 --> 00:15:08,620 another thing Cuba Nessie's does is it 342 00:15:05,110 --> 00:15:10,570 self heals so it has a concept of a 343 00:15:08,620 --> 00:15:12,520 health check and it understands and you 344 00:15:10,570 --> 00:15:16,000 can define what it is that it's checking 345 00:15:12,520 --> 00:15:17,980 on your application but it will restate 346 00:15:16,000 --> 00:15:20,500 restart containers that fail those 347 00:15:17,980 --> 00:15:22,090 health checks and it will replace and 348 00:15:20,500 --> 00:15:25,330 reschedule containers if a whole node 349 00:15:22,090 --> 00:15:26,859 dies so so a node is a think of it as 350 00:15:25,330 --> 00:15:31,269 like a 351 00:15:26,859 --> 00:15:33,850 like a compute pool I guess right or a a 352 00:15:31,269 --> 00:15:37,129 physical worker that is running your 353 00:15:33,850 --> 00:15:39,949 containers if that entire machine goes 354 00:15:37,129 --> 00:15:41,929 out cuban SES is aware of that and it 355 00:15:39,949 --> 00:15:44,089 will then replace and reschedule those 356 00:15:41,929 --> 00:15:46,999 containers on to other machines to make 357 00:15:44,089 --> 00:15:49,040 sure you always have as many as you need 358 00:15:46,999 --> 00:15:50,449 it also will kill containers that don't 359 00:15:49,040 --> 00:15:55,399 respond to your health checks if you 360 00:15:50,449 --> 00:15:58,279 define those cuba Nettie's is fantastic 361 00:15:55,399 --> 00:16:00,699 at horizontal scaling there's a simple 362 00:15:58,279 --> 00:16:04,009 command I'll show you this in my demo um 363 00:16:00,699 --> 00:16:05,779 but you you can say ok that container 364 00:16:04,009 --> 00:16:07,989 I'm running I actually know on 15 of it 365 00:16:05,779 --> 00:16:11,449 and it just immediately scales those up 366 00:16:07,989 --> 00:16:13,339 you can also do automated scaling based 367 00:16:11,449 --> 00:16:16,579 on the usage of those so you know my 368 00:16:13,339 --> 00:16:18,290 application is under heavy load I might 369 00:16:16,579 --> 00:16:23,628 want it to automatically scale up and 370 00:16:18,290 --> 00:16:25,699 add new containers but you know also in 371 00:16:23,629 --> 00:16:28,759 a scenario where it's now nighttime and 372 00:16:25,699 --> 00:16:31,628 few people using my service it can scale 373 00:16:28,759 --> 00:16:31,629 those down as well 374 00:16:31,669 --> 00:16:35,869 one of the other problems you have when 375 00:16:33,439 --> 00:16:39,980 when you're running containers in a 376 00:16:35,869 --> 00:16:42,319 distributed way is how to route traffic 377 00:16:39,980 --> 00:16:45,230 from from those containers to each other 378 00:16:42,319 --> 00:16:48,079 so and if I give you an example right 379 00:16:45,230 --> 00:16:50,119 let's say I build a little micro service 380 00:16:48,079 --> 00:16:52,459 that goes and fetches customer details 381 00:16:50,119 --> 00:16:54,199 from a database it does some sort of 382 00:16:52,459 --> 00:16:57,829 manipulation on that returns them to you 383 00:16:54,199 --> 00:16:59,419 and you know as a team we want to reuse 384 00:16:57,829 --> 00:17:01,789 that micro service quite a lot we need 385 00:16:59,419 --> 00:17:05,179 it in you know a front end we need it in 386 00:17:01,789 --> 00:17:06,769 a bunch of other services that depending 387 00:17:05,179 --> 00:17:08,559 on the industry right you might be doing 388 00:17:06,769 --> 00:17:11,569 all sorts of things 389 00:17:08,559 --> 00:17:12,289 how if if that's running in multiple 390 00:17:11,569 --> 00:17:14,418 containers 391 00:17:12,289 --> 00:17:20,419 how do allow other services to connect 392 00:17:14,419 --> 00:17:23,389 to that even more difficult right in a 393 00:17:20,419 --> 00:17:25,760 kind of old-school deployment is if I'm 394 00:17:23,388 --> 00:17:27,609 now scaling that so now I've gone from 395 00:17:25,760 --> 00:17:29,330 having three versions of it or three 396 00:17:27,609 --> 00:17:31,789 containers 397 00:17:29,330 --> 00:17:33,980 I now have 15 containers how does it 398 00:17:31,789 --> 00:17:35,990 know that that where those new you know 399 00:17:33,980 --> 00:17:38,840 the other twelve containers are and how 400 00:17:35,990 --> 00:17:40,080 to connect to those so Kuban entities 401 00:17:38,840 --> 00:17:42,750 has a concept of service 402 00:17:40,080 --> 00:17:44,309 is and and service discovery so when 403 00:17:42,750 --> 00:17:46,049 your service comes online it registers 404 00:17:44,309 --> 00:17:49,620 with the Cuba Nettie's service broker 405 00:17:46,049 --> 00:17:53,820 and other workloads that are running in 406 00:17:49,620 --> 00:17:55,379 there can then connect to the service 407 00:17:53,820 --> 00:17:58,379 broker and say oh hey where's that 408 00:17:55,380 --> 00:18:02,549 service that Ed built that retrieves 409 00:17:58,380 --> 00:18:04,590 customer details for me and the broker 410 00:18:02,549 --> 00:18:07,529 will say okay here's your connections 411 00:18:04,590 --> 00:18:09,149 string you connect to that and it 412 00:18:07,529 --> 00:18:10,620 automatically then does law load 413 00:18:09,149 --> 00:18:13,139 balancing across all of the running 414 00:18:10,620 --> 00:18:16,260 containers and to make sure that your 415 00:18:13,139 --> 00:18:18,379 request is always served right 416 00:18:16,260 --> 00:18:20,600 regardless of where the stuff is because 417 00:18:18,380 --> 00:18:24,059 ultimately the containers underneath a 418 00:18:20,600 --> 00:18:25,620 ephemeral they are they should be 419 00:18:24,059 --> 00:18:27,178 stateless right a lot of people don't 420 00:18:25,620 --> 00:18:31,559 want stateless workloads and Cuba 421 00:18:27,179 --> 00:18:33,000 Nettie's but it means that they may be 422 00:18:31,559 --> 00:18:37,529 in a totally different place to where 423 00:18:33,000 --> 00:18:39,990 they were last time you connected and it 424 00:18:37,529 --> 00:18:41,690 also has automated rollouts of rollbacks 425 00:18:39,990 --> 00:18:43,799 I'll show you this in the demo 426 00:18:41,690 --> 00:18:46,529 essentially you know you can roll out a 427 00:18:43,799 --> 00:18:48,809 new version of your application if 428 00:18:46,529 --> 00:18:49,950 things don't go correctly or you're 429 00:18:48,809 --> 00:18:52,200 failing health checks or you're 430 00:18:49,950 --> 00:18:53,850 monitoring it and something goes wrong 431 00:18:52,200 --> 00:18:56,120 you can immediately roll that back with 432 00:18:53,850 --> 00:18:58,559 a single command 433 00:18:56,120 --> 00:19:01,168 another thing cube does is it handles 434 00:18:58,559 --> 00:19:02,940 secret and configuration management so 435 00:19:01,169 --> 00:19:05,899 if I have a let's say there's an 436 00:19:02,940 --> 00:19:09,059 external API I want to connect to and 437 00:19:05,899 --> 00:19:11,809 obviously I you know I should know 438 00:19:09,059 --> 00:19:14,789 better than to write the API key in my 439 00:19:11,809 --> 00:19:17,250 in in my code right we shouldn't be 440 00:19:14,789 --> 00:19:18,990 storing it there but you know maybe I 441 00:19:17,250 --> 00:19:21,389 think well I want to put it in 442 00:19:18,990 --> 00:19:22,710 environment variables and so on you 443 00:19:21,389 --> 00:19:25,500 don't even need to do that there's a 444 00:19:22,710 --> 00:19:28,909 within Cuba Nessie's it can it has an 445 00:19:25,500 --> 00:19:33,240 encrypted key store that can securely 446 00:19:28,909 --> 00:19:35,519 store all of those application 447 00:19:33,240 --> 00:19:37,740 credentials you might need and then that 448 00:19:35,519 --> 00:19:40,830 application when granted access can 449 00:19:37,740 --> 00:19:43,110 retrieve those and then use that to to 450 00:19:40,830 --> 00:19:47,460 connect to in this case my external API 451 00:19:43,110 --> 00:19:49,408 that I wanted to speak to so just very 452 00:19:47,460 --> 00:19:52,260 quickly before we dive in a couple of 453 00:19:49,409 --> 00:19:53,820 concepts in terms of like naming that 454 00:19:52,260 --> 00:19:57,810 are important 455 00:19:53,820 --> 00:20:00,240 so actually just before we do that this 456 00:19:57,810 --> 00:20:02,340 is a very very simplified kind of 457 00:20:00,240 --> 00:20:05,060 architecture of how kubernetes works and 458 00:20:02,340 --> 00:20:09,600 and if you look right in the middle 459 00:20:05,060 --> 00:20:13,200 there's this database at CD right and 460 00:20:09,600 --> 00:20:15,449 that essentially right is at the heart 461 00:20:13,200 --> 00:20:19,110 of everything cuban SE studs what what 462 00:20:15,450 --> 00:20:21,680 goes in there is as a user I tell 463 00:20:19,110 --> 00:20:24,689 kubernetes here is what I want my 464 00:20:21,680 --> 00:20:26,640 application landscape to look like so it 465 00:20:24,690 --> 00:20:29,900 might be you know I want this service 466 00:20:26,640 --> 00:20:32,460 deployed and I want five versions of it 467 00:20:29,900 --> 00:20:33,900 and I want you know each of those 468 00:20:32,460 --> 00:20:35,550 versions to have three different 469 00:20:33,900 --> 00:20:38,100 containers running across as many 470 00:20:35,550 --> 00:20:39,659 machines as possible and then I might 471 00:20:38,100 --> 00:20:42,030 have another service and I say you know 472 00:20:39,660 --> 00:20:44,220 I just want to run fifteen containers of 473 00:20:42,030 --> 00:20:47,399 that right that all gets stored as a 474 00:20:44,220 --> 00:20:49,800 what is called the desired state and 475 00:20:47,400 --> 00:20:51,270 then these controllers that you see in 476 00:20:49,800 --> 00:20:53,610 the top right hand side these are 477 00:20:51,270 --> 00:20:56,070 continuously monitoring your application 478 00:20:53,610 --> 00:20:57,990 your actual deployed state right and 479 00:20:56,070 --> 00:20:58,800 checking against all those machines okay 480 00:20:57,990 --> 00:21:02,810 what are you running 481 00:20:58,800 --> 00:21:05,300 what's your resource utilization app 482 00:21:02,810 --> 00:21:07,530 haven't you know have any of those apps 483 00:21:05,300 --> 00:21:10,919 return to exit codes that they crashed 484 00:21:07,530 --> 00:21:13,980 and it takes those and it checks them 485 00:21:10,920 --> 00:21:15,630 against the database and essentially 486 00:21:13,980 --> 00:21:19,110 it's just doing a diff in those two 487 00:21:15,630 --> 00:21:22,440 states and so if I have if I've said I 488 00:21:19,110 --> 00:21:24,870 want three containers to be running and 489 00:21:22,440 --> 00:21:28,500 there are only two in the in my actual 490 00:21:24,870 --> 00:21:30,209 landscape kubernetes the lot less this 491 00:21:28,500 --> 00:21:34,860 is where all the like logic within Cuba 492 00:21:30,210 --> 00:21:37,710 Nettie's automatically takes takes care 493 00:21:34,860 --> 00:21:39,209 of that for you so it will say oh we'll 494 00:21:37,710 --> 00:21:41,550 only have two and the desired stays 495 00:21:39,210 --> 00:21:43,380 three so I need to schedule another one 496 00:21:41,550 --> 00:21:45,149 of those containers right and that's 497 00:21:43,380 --> 00:21:46,710 where the intelligent shelling comes in 498 00:21:45,150 --> 00:21:48,240 and will say here's the best know to put 499 00:21:46,710 --> 00:21:51,000 it on I'm not going to put it on one 500 00:21:48,240 --> 00:21:54,090 there the other two already exist etc 501 00:21:51,000 --> 00:21:56,510 and the final piece in that is that you 502 00:21:54,090 --> 00:22:00,720 see the API server above that with this 503 00:21:56,510 --> 00:22:04,020 and this like handles all the requests 504 00:22:00,720 --> 00:22:06,030 that you you do to it as a user the 505 00:22:04,020 --> 00:22:09,470 controller's talk to it essentially it 506 00:22:06,030 --> 00:22:09,470 just handles the database acts 507 00:22:09,580 --> 00:22:16,850 and then in terms of terminology there's 508 00:22:13,970 --> 00:22:18,320 a master node the master node is the bit 509 00:22:16,850 --> 00:22:20,870 that runs all the kind of cuba Nettie's 510 00:22:18,320 --> 00:22:23,090 magic right underneath so it controls 511 00:22:20,870 --> 00:22:25,429 manages the cluster it's what you 512 00:22:23,090 --> 00:22:28,100 communicate with from the cube CTL 513 00:22:25,430 --> 00:22:30,350 command line has a REST API for 514 00:22:28,100 --> 00:22:33,800 communication with workers and I guess 515 00:22:30,350 --> 00:22:35,330 any external tooling you might use and 516 00:22:33,800 --> 00:22:38,810 it handles all the scheduling and the 517 00:22:35,330 --> 00:22:42,159 replication logic the worker nodes 518 00:22:38,810 --> 00:22:45,050 within you know within kubernetes are 519 00:22:42,160 --> 00:22:47,180 these are essentially your like compute 520 00:22:45,050 --> 00:22:49,220 resources the these are the ones that 521 00:22:47,180 --> 00:22:51,950 actually do the work for you and hence 522 00:22:49,220 --> 00:22:54,410 worker node right they host the Kuban SE 523 00:22:51,950 --> 00:22:56,090 services that you deploy they do have a 524 00:22:54,410 --> 00:22:58,400 few other little things on them so they 525 00:22:56,090 --> 00:23:01,250 have Kuebler which accept commands from 526 00:22:58,400 --> 00:23:06,020 the master and and actions those on the 527 00:23:01,250 --> 00:23:08,930 on the host has proxy which as you would 528 00:23:06,020 --> 00:23:11,590 expect properties the traffic to and 529 00:23:08,930 --> 00:23:14,510 from those containers inside the worker 530 00:23:11,590 --> 00:23:17,330 to understand you know when i mentioned 531 00:23:14,510 --> 00:23:20,629 the fact that it has a service discovery 532 00:23:17,330 --> 00:23:22,040 and load balancing the queue proxy 533 00:23:20,630 --> 00:23:24,020 handles that peacefully so you don't 534 00:23:22,040 --> 00:23:26,330 need to and of course it it actually 535 00:23:24,020 --> 00:23:29,350 runs a complete container engine inside 536 00:23:26,330 --> 00:23:31,520 so in this example it runs docker engine 537 00:23:29,350 --> 00:23:33,830 one of the interesting things about Kiba 538 00:23:31,520 --> 00:23:35,840 Nessie's is it actually it doesn't run 539 00:23:33,830 --> 00:23:38,600 any of your containers it requires you 540 00:23:35,840 --> 00:23:41,030 to bring your own container on time and 541 00:23:38,600 --> 00:23:43,550 actually in the vast majority of cases 542 00:23:41,030 --> 00:23:46,340 this tends to be darker but it doesn't 543 00:23:43,550 --> 00:23:48,020 have to be and that's one of the cool 544 00:23:46,340 --> 00:23:52,419 things about the kubernetes design is 545 00:23:48,020 --> 00:23:54,770 that as other container runtimes develop 546 00:23:52,420 --> 00:23:57,050 you can swap them in and out so if you 547 00:23:54,770 --> 00:23:58,190 eventually want it to run like I know 548 00:23:57,050 --> 00:24:00,649 there's a lot of work going on with 549 00:23:58,190 --> 00:24:04,640 windows containers being able to isolate 550 00:24:00,650 --> 00:24:06,740 the window windows operating system you 551 00:24:04,640 --> 00:24:09,910 know if you have very specific like Net 552 00:24:06,740 --> 00:24:13,040 Applications that have to run on a 553 00:24:09,910 --> 00:24:16,430 Windows host right 554 00:24:13,040 --> 00:24:18,430 you should be able to do that whilst 555 00:24:16,430 --> 00:24:21,200 using cuba Nettie's to orchestrate those 556 00:24:18,430 --> 00:24:23,540 and there's also you know I 557 00:24:21,200 --> 00:24:25,730 contribute heavily to a container 558 00:24:23,540 --> 00:24:27,560 runtime called container D which is 559 00:24:25,730 --> 00:24:30,140 essentially trying to take out so 560 00:24:27,560 --> 00:24:32,419 Dockers Dockers great but I mentioned 561 00:24:30,140 --> 00:24:40,120 all the user experience it gives when 562 00:24:32,420 --> 00:24:43,160 you're using Cuban air variants because 563 00:24:40,120 --> 00:24:44,419 gin in there doesn't do any of their 564 00:24:43,160 --> 00:24:45,890 scheduling and checking of the 565 00:24:44,420 --> 00:24:47,780 containers right cube is doing all that 566 00:24:45,890 --> 00:24:49,220 for you so all the engine needs to do 567 00:24:47,780 --> 00:24:51,770 really is literally run the containers 568 00:24:49,220 --> 00:24:54,500 and it's quite using Dockers is probably 569 00:24:51,770 --> 00:24:56,840 overkill for most of the scenarios so 570 00:24:54,500 --> 00:24:58,940 what container container D does is like 571 00:24:56,840 --> 00:25:01,070 strips this down to the really 572 00:24:58,940 --> 00:25:02,840 lightweight and fast container runtime 573 00:25:01,070 --> 00:25:05,020 that really just does the basics of 574 00:25:02,840 --> 00:25:07,730 executing and running those containers 575 00:25:05,020 --> 00:25:11,650 and then kubernetes does all the the 576 00:25:07,730 --> 00:25:13,700 fancy scheduling stuff over the top and 577 00:25:11,650 --> 00:25:18,020 another thing you'll need to knows pods 578 00:25:13,700 --> 00:25:20,390 right a pod is essentially you could you 579 00:25:18,020 --> 00:25:22,160 can try to think of it as a like a 580 00:25:20,390 --> 00:25:24,560 container it's not a container because 581 00:25:22,160 --> 00:25:26,600 they can contain multiple containers but 582 00:25:24,560 --> 00:25:30,379 it's the smallest deployment unit in 583 00:25:26,600 --> 00:25:31,850 cuba Nettie's so everything every 584 00:25:30,380 --> 00:25:36,170 application you deploy it will be in 585 00:25:31,850 --> 00:25:41,480 pods it the reason I mentioned it can be 586 00:25:36,170 --> 00:25:44,270 a collection of containers is that on on 587 00:25:41,480 --> 00:25:46,780 their own like you generally shouldn't 588 00:25:44,270 --> 00:25:49,490 put multiple containers in a pod like 589 00:25:46,780 --> 00:25:52,490 let's say my application has like a 590 00:25:49,490 --> 00:25:54,470 front-end back-end a database like I 591 00:25:52,490 --> 00:25:56,840 should the last thing I should do is 592 00:25:54,470 --> 00:25:59,110 pull all of those in a pod and because 593 00:25:56,840 --> 00:26:01,399 then I can't scale them separately 594 00:25:59,110 --> 00:26:03,469 everything in the pod also you know 595 00:26:01,400 --> 00:26:07,550 shares a namespace network and hostname 596 00:26:03,470 --> 00:26:09,940 so again they may have processes that 597 00:26:07,550 --> 00:26:13,669 conflict with each other 598 00:26:09,940 --> 00:26:15,800 the the only like in general keep things 599 00:26:13,670 --> 00:26:18,020 in separate pods the things that do make 600 00:26:15,800 --> 00:26:21,950 sense to put in a pod alongside your 601 00:26:18,020 --> 00:26:24,200 application container are things what 602 00:26:21,950 --> 00:26:27,770 they call the sidecar model so let's say 603 00:26:24,200 --> 00:26:31,100 you have like a logging agent right that 604 00:26:27,770 --> 00:26:32,600 takes all of the logs coming out of your 605 00:26:31,100 --> 00:26:34,830 containers 606 00:26:32,600 --> 00:26:36,750 pipes them all to some central 607 00:26:34,830 --> 00:26:39,210 repository or to a third-party service 608 00:26:36,750 --> 00:26:40,650 or something right that's something you 609 00:26:39,210 --> 00:26:42,570 want to deploy alongside every 610 00:26:40,650 --> 00:26:46,590 application that you do and actually 611 00:26:42,570 --> 00:26:48,990 deploying it inside a pod next to the 612 00:26:46,590 --> 00:26:51,449 other container is a good deployment 613 00:26:48,990 --> 00:26:54,540 technique because you know it again it 614 00:26:51,450 --> 00:26:59,940 shares these the common processes the 615 00:26:54,540 --> 00:27:01,560 name space network and hostname and it's 616 00:26:59,940 --> 00:27:03,600 not actually affecting the running of 617 00:27:01,560 --> 00:27:05,370 the container itself also they tend to 618 00:27:03,600 --> 00:27:07,290 be incredibly lightweight right and you 619 00:27:05,370 --> 00:27:08,820 should you would need to scale one to 620 00:27:07,290 --> 00:27:12,690 one with each of the application 621 00:27:08,820 --> 00:27:15,210 containers as you scale them labels are 622 00:27:12,690 --> 00:27:17,910 that that simply just metadata right 623 00:27:15,210 --> 00:27:19,860 there just key value pairs but they're 624 00:27:17,910 --> 00:27:21,720 Cuba Nettie's has a really good way of 625 00:27:19,860 --> 00:27:25,860 filtering and searching on these like in 626 00:27:21,720 --> 00:27:28,200 a super fast way so so try to write 627 00:27:25,860 --> 00:27:30,270 labels for your resources as much as 628 00:27:28,200 --> 00:27:32,490 possible initially when you start 629 00:27:30,270 --> 00:27:34,860 playing with kubernetes it might matter 630 00:27:32,490 --> 00:27:36,450 because you only be deploying you know a 631 00:27:34,860 --> 00:27:39,149 small application or a couple of 632 00:27:36,450 --> 00:27:40,860 applications but when you get into you 633 00:27:39,150 --> 00:27:42,540 know huge scale deployments where people 634 00:27:40,860 --> 00:27:45,570 are running hundreds of thousands of 635 00:27:42,540 --> 00:27:48,810 containers and often thousands or tens 636 00:27:45,570 --> 00:27:51,330 of thousands of applications being able 637 00:27:48,810 --> 00:27:53,780 to debug which of those containers and 638 00:27:51,330 --> 00:27:56,189 which worker node in which application 639 00:27:53,780 --> 00:27:58,950 gets very very difficult if you don't 640 00:27:56,190 --> 00:28:00,630 have labels because the IDS give you 641 00:27:58,950 --> 00:28:04,560 very little name on very little 642 00:28:00,630 --> 00:28:06,420 information on right and then services 643 00:28:04,560 --> 00:28:09,480 these these are essentially a way of 644 00:28:06,420 --> 00:28:11,220 describing your like what your 645 00:28:09,480 --> 00:28:14,010 application or you might prefer this 646 00:28:11,220 --> 00:28:15,780 looks like within Cuba Nettie's so it's 647 00:28:14,010 --> 00:28:19,260 as said here you know a collection of 648 00:28:15,780 --> 00:28:21,350 pods exposed and as an endpoint it's 649 00:28:19,260 --> 00:28:23,460 it's essentially saying these three 650 00:28:21,350 --> 00:28:27,629 containers that I've just deployed I 651 00:28:23,460 --> 00:28:32,400 want those to be described as my I might 652 00:28:27,630 --> 00:28:34,860 get customer details service because 653 00:28:32,400 --> 00:28:38,490 then other cuban at ease applications 654 00:28:34,860 --> 00:28:41,280 can connect to that and use them here's 655 00:28:38,490 --> 00:28:45,180 a super quick example of just how this 656 00:28:41,280 --> 00:28:46,320 like the logic within Cuba work so if 657 00:28:45,180 --> 00:28:47,519 you look on the right hand side 658 00:28:46,320 --> 00:28:50,759 you can see we've got three different 659 00:28:47,519 --> 00:28:53,130 workers so those are our compute poles 660 00:28:50,759 --> 00:28:55,139 as I said and then on the left-hand side 661 00:28:53,130 --> 00:28:58,440 I've specified this is my like desired 662 00:28:55,139 --> 00:29:04,229 stay a very simplified one it says okay 663 00:28:58,440 --> 00:29:06,990 I want one pod containing image a and B 664 00:29:04,230 --> 00:29:08,730 and I want three versions of that right 665 00:29:06,990 --> 00:29:11,610 so you can see humilities is 666 00:29:08,730 --> 00:29:12,990 automatically put a B on each of the 667 00:29:11,610 --> 00:29:17,459 three worker nodes on the right hand 668 00:29:12,990 --> 00:29:20,009 side and then pod two is container image 669 00:29:17,460 --> 00:29:22,649 C and I want replicas to right so it's 670 00:29:20,009 --> 00:29:24,269 also put one pod with C in it and it's 671 00:29:22,649 --> 00:29:27,239 put it on those top two worker nodes on 672 00:29:24,269 --> 00:29:29,549 the right hand side um if like this 673 00:29:27,240 --> 00:29:31,889 middle worker where to died my cube 674 00:29:29,549 --> 00:29:35,549 knows well I still need three versions 675 00:29:31,889 --> 00:29:39,149 of three instances of pod one which 676 00:29:35,549 --> 00:29:41,549 contains a be running and I know I no 677 00:29:39,149 --> 00:29:44,309 longer have that so it's automatically 678 00:29:41,549 --> 00:29:47,100 scaled it and put two of them onto the 679 00:29:44,309 --> 00:29:48,928 worker node at the bottom and and it's 680 00:29:47,100 --> 00:29:51,240 also moved see down there as well so 681 00:29:48,929 --> 00:29:53,580 that like we're always maintaining that 682 00:29:51,240 --> 00:29:55,320 desired state the same thing could 683 00:29:53,580 --> 00:29:57,059 happen with scaling so in this example 684 00:29:55,320 --> 00:29:59,428 this is back where we were where we've 685 00:29:57,059 --> 00:30:01,320 got a B on each of them and see on the 686 00:29:59,429 --> 00:30:03,330 top two well what if I want a third 687 00:30:01,320 --> 00:30:06,649 version of C well again it knows like 688 00:30:03,330 --> 00:30:09,299 again this is this worker is 689 00:30:06,649 --> 00:30:12,479 underutilized compared to the others it 690 00:30:09,299 --> 00:30:14,850 also doesn't contain the same pod 691 00:30:12,480 --> 00:30:19,080 already so it makes sense for us to 692 00:30:14,850 --> 00:30:22,918 deploy a new container C onto the third 693 00:30:19,080 --> 00:30:26,250 worker in the bottom right um there's 694 00:30:22,919 --> 00:30:28,409 also the cube CTL right cube CTL is the 695 00:30:26,250 --> 00:30:31,559 command you type on the the Kalon line 696 00:30:28,409 --> 00:30:37,350 and the it's a it's generally it's a 697 00:30:31,559 --> 00:30:40,918 very powerful and easy to use CLI and 698 00:30:37,350 --> 00:30:43,830 it's the general like as you'd expect 699 00:30:40,919 --> 00:30:46,710 right way it works is a cube CTL and 700 00:30:43,830 --> 00:30:48,658 then action and then noun and then any 701 00:30:46,710 --> 00:30:51,840 other flags you've got afterwards so 702 00:30:48,659 --> 00:30:55,230 keep CTL create and then configuration 703 00:30:51,840 --> 00:30:58,230 file or cube CTL get pods described pod 704 00:30:55,230 --> 00:30:59,490 which gives you more details and I'm 705 00:30:58,230 --> 00:31:00,090 going to spend time on this because I'm 706 00:30:59,490 --> 00:31:03,679 going to show you 707 00:31:00,090 --> 00:31:08,428 live now so I jump in and do hello 708 00:31:03,679 --> 00:31:10,650 right so in fact before I do I'll just 709 00:31:08,429 --> 00:31:14,520 to explain in this way I'll show you um 710 00:31:10,650 --> 00:31:16,880 the cube cube Annette C's cluster I'm 711 00:31:14,520 --> 00:31:18,779 running I've deployed this on IBM cloud 712 00:31:16,880 --> 00:31:22,980 the great thing about running on an IBM 713 00:31:18,779 --> 00:31:25,470 cloud is that they managed and take care 714 00:31:22,980 --> 00:31:27,630 of all the master nodes for you so the 715 00:31:25,470 --> 00:31:30,720 bit like that actually runs the clever 716 00:31:27,630 --> 00:31:32,580 kubernetes logic and so on and that you 717 00:31:30,720 --> 00:31:36,600 communicate with through the API and the 718 00:31:32,580 --> 00:31:40,350 CLI and that bit you don't you don't 719 00:31:36,600 --> 00:31:43,020 have to run at all yourself and all it 720 00:31:40,350 --> 00:31:44,760 all that you're in charge of I like 721 00:31:43,020 --> 00:31:46,529 those worker nodes that you provision 722 00:31:44,760 --> 00:31:48,510 and the worker nodes are just your 723 00:31:46,529 --> 00:31:50,159 computers so it's no no it's not really 724 00:31:48,510 --> 00:31:52,260 any different - like provisioning your 725 00:31:50,159 --> 00:31:53,789 own virtual machines except that now you 726 00:31:52,260 --> 00:31:56,700 get all the power of cuba Nettie's on 727 00:31:53,789 --> 00:31:59,039 top of it and all the headache of like 728 00:31:56,700 --> 00:32:00,419 you know upgrading when cuba Nettie's 729 00:31:59,039 --> 00:32:02,700 come out with new versions or new 730 00:32:00,419 --> 00:32:04,799 features are checking whether you know 731 00:32:02,700 --> 00:32:08,309 it's supported with your underlying 732 00:32:04,799 --> 00:32:09,840 operating system and they're not grading 733 00:32:08,309 --> 00:32:12,720 it and doing it or like all of that 734 00:32:09,840 --> 00:32:15,209 taking care care of by IBM so like for 735 00:32:12,720 --> 00:32:16,679 me this is super easy and so I've 736 00:32:15,210 --> 00:32:20,250 created this cluster here it's called my 737 00:32:16,679 --> 00:32:23,029 cluster and just to connect to that 738 00:32:20,250 --> 00:32:27,480 right I need I need to tell my cube CTL 739 00:32:23,029 --> 00:32:31,370 CLI like how it can communicate with 740 00:32:27,480 --> 00:32:35,039 that so I'm just gonna do IBM cloud 741 00:32:31,370 --> 00:32:37,908 kubernetes Service clusters right and so 742 00:32:35,039 --> 00:32:40,440 that was only the cost as I have and you 743 00:32:37,909 --> 00:32:43,409 can see that that my cluster one I just 744 00:32:40,440 --> 00:32:46,260 showed it's running there so the thing I 745 00:32:43,409 --> 00:32:50,340 need to do now is IBM cloud chess 746 00:32:46,260 --> 00:32:51,990 cluster that config my cluster and this 747 00:32:50,340 --> 00:32:54,120 will give me the configuration that 748 00:32:51,990 --> 00:32:59,730 kubernetes needs in order to connect to 749 00:32:54,120 --> 00:33:02,760 that cluster and right so this is going 750 00:32:59,730 --> 00:33:07,520 to export a cube config variable right 751 00:33:02,760 --> 00:33:07,520 and now if I did cube CTL get nodes 752 00:33:08,360 --> 00:33:13,168 should like that one I'll connect to 753 00:33:10,770 --> 00:33:13,650 that cluster and it will say okay return 754 00:33:13,169 --> 00:33:15,360 all the 755 00:33:13,650 --> 00:33:16,770 we'll work our notes on that so you can 756 00:33:15,360 --> 00:33:20,189 see this cluster only has one worker 757 00:33:16,770 --> 00:33:22,170 node down here you'd have expected that 758 00:33:20,190 --> 00:33:24,120 anyway because look if you look at that 759 00:33:22,170 --> 00:33:26,010 cluster it's being created with only one 760 00:33:24,120 --> 00:33:27,750 worker node so this is a very simple 761 00:33:26,010 --> 00:33:31,050 small cluster but it will do for what 762 00:33:27,750 --> 00:33:33,750 we're demonstrating here today um what 763 00:33:31,050 --> 00:33:35,490 I'm gonna do now is I'm just going to 764 00:33:33,750 --> 00:33:37,920 show you like the quickest way to deploy 765 00:33:35,490 --> 00:33:41,210 a container straight away to cuba 766 00:33:37,920 --> 00:33:43,970 Nettie's so if I take you CTL run and 767 00:33:41,210 --> 00:33:52,290 then this is the name of my deployment 768 00:33:43,970 --> 00:33:53,809 guestbook and image equals I be v1 right 769 00:33:52,290 --> 00:33:57,000 so what I've done there as I've said 770 00:33:53,809 --> 00:33:59,670 when you run something it's call it 771 00:33:57,000 --> 00:34:01,080 guestbook and here's the image right and 772 00:33:59,670 --> 00:34:04,230 if I give it an image this is actually a 773 00:34:01,080 --> 00:34:05,520 docker hub image so if you're not 774 00:34:04,230 --> 00:34:08,580 familiar with docker hub it's kind of 775 00:34:05,520 --> 00:34:11,000 like github but for container images and 776 00:34:08,580 --> 00:34:14,190 it's gonna go and get the IBM comm 777 00:34:11,000 --> 00:34:15,480 guestbook image with the tag version one 778 00:34:14,190 --> 00:34:19,260 right because there may be multiple 779 00:34:15,480 --> 00:34:21,418 versions of it and you can see it's 780 00:34:19,260 --> 00:34:24,149 created a deployment for me all right so 781 00:34:21,418 --> 00:34:26,219 now if I go to cube CTL get pods right 782 00:34:24,149 --> 00:34:30,179 and remember pods are like the smallest 783 00:34:26,219 --> 00:34:32,100 deployment unit we could create and you 784 00:34:30,179 --> 00:34:34,470 can see in here there is one pot in 785 00:34:32,100 --> 00:34:36,418 there called guestbook there's one of 786 00:34:34,469 --> 00:34:39,408 them and it's already running okay 787 00:34:36,418 --> 00:34:39,408 that's great that was pretty quick 788 00:34:41,210 --> 00:34:45,690 access that pod and check them my 789 00:34:43,679 --> 00:34:48,418 application is running I need to expose 790 00:34:45,690 --> 00:34:51,659 that as a service so the way it can be 791 00:34:48,418 --> 00:34:58,470 that is I can go you see a look this 792 00:34:51,659 --> 00:35:01,800 type up expose deployment yes and then 793 00:34:58,470 --> 00:35:07,020 there are different ways you can expose 794 00:35:01,800 --> 00:35:08,880 your deployments in cuba Nettie's this 795 00:35:07,020 --> 00:35:10,620 the simplest of these right is just to 796 00:35:08,880 --> 00:35:13,740 use a node port which is essentially 797 00:35:10,620 --> 00:35:18,450 saying like I just want you to map one 798 00:35:13,740 --> 00:35:20,430 poor on that host machine to the 799 00:35:18,450 --> 00:35:25,370 container inside so that I can access it 800 00:35:20,430 --> 00:35:26,700 right so in this case I'm saying 3000 so 801 00:35:25,370 --> 00:35:29,279 what I can 802 00:35:26,700 --> 00:35:32,700 I'm doing is saying to Cuba Nettie's my 803 00:35:29,280 --> 00:35:34,890 container that runs in there wants to 804 00:35:32,700 --> 00:35:37,078 listen on port 3000 805 00:35:34,890 --> 00:35:40,049 can you please expose that somewhere on 806 00:35:37,079 --> 00:35:41,640 the host right so if I do that and then 807 00:35:40,050 --> 00:35:43,740 it creates a service and I can go and 808 00:35:41,640 --> 00:35:50,640 let's look at that service quickly so we 809 00:35:43,740 --> 00:35:53,069 go get service yes but you can see that 810 00:35:50,640 --> 00:35:56,839 what it's done here is it Maps port 3000 811 00:35:53,070 --> 00:36:01,050 inside the container to 30,000 208 on 812 00:35:56,839 --> 00:36:02,849 the the actual host machine all right so 813 00:36:01,050 --> 00:36:04,320 let's remember that because I was going 814 00:36:02,849 --> 00:36:06,180 to access this from a web browser in a 815 00:36:04,320 --> 00:36:08,930 second but the most important thing is 816 00:36:06,180 --> 00:36:12,180 that I need the public IP of the actual 817 00:36:08,930 --> 00:36:14,368 worker right or of my cluster that I 818 00:36:12,180 --> 00:36:18,740 created on IBM cloud so I can get that 819 00:36:14,369 --> 00:36:23,910 from the IBM cloud CLI I can go OKs 820 00:36:18,740 --> 00:36:25,560 workers my cluster and this would just 821 00:36:23,910 --> 00:36:27,180 list the worker nodes that are relatable 822 00:36:25,560 --> 00:36:29,009 in that cluster and you can see this 823 00:36:27,180 --> 00:36:32,759 public IP here so I'm gonna take that 824 00:36:29,010 --> 00:36:46,440 public IP and then just remember it's 825 00:36:32,760 --> 00:36:49,319 30,000 208 so let's go okay so hopefully 826 00:36:46,440 --> 00:36:52,230 this will show my guestbook deployed 827 00:36:49,319 --> 00:36:54,420 yeah there we go so we can see that this 828 00:36:52,230 --> 00:36:55,920 application is very simple it's it's 829 00:36:54,420 --> 00:36:57,390 like kind of like a to-do list it's a 830 00:36:55,920 --> 00:37:04,920 guestbook you can just leave your notes 831 00:36:57,390 --> 00:37:08,490 you say I write so you know simple cron 832 00:37:04,920 --> 00:37:11,520 pipe application and let's jump jump 833 00:37:08,490 --> 00:37:12,990 back here again so now let's say I don't 834 00:37:11,520 --> 00:37:15,119 know my guest books up and running 835 00:37:12,990 --> 00:37:17,069 people are loving it it needs to scale 836 00:37:15,119 --> 00:37:21,270 well I can do that super easily with one 837 00:37:17,069 --> 00:37:26,310 come on so I can go scale replicas was 838 00:37:21,270 --> 00:37:27,810 10 employment yes but right and I'm 839 00:37:26,310 --> 00:37:30,270 saying I'm basically saying take that 840 00:37:27,810 --> 00:37:34,819 deployment but this time run 10 replicas 841 00:37:30,270 --> 00:37:34,819 of it and if I'm fast with this one 842 00:37:36,910 --> 00:37:42,348 right I can view the rollout status of 843 00:37:39,829 --> 00:37:45,079 that deployment so you can see it's 844 00:37:42,349 --> 00:37:47,060 saying waiting for rollout to finish one 845 00:37:45,079 --> 00:37:52,250 of 10 updated replicas are available now 846 00:37:47,060 --> 00:37:54,290 2 of 10 updated replicas 3 or 10 so what 847 00:37:52,250 --> 00:38:00,349 it's doing behind the scenes is starting 848 00:37:54,290 --> 00:38:03,500 new containers on my machine just 849 00:38:00,349 --> 00:38:05,660 through that scale command and you'll 850 00:38:03,500 --> 00:38:07,819 see we now you know we have 5 or 10 and 851 00:38:05,660 --> 00:38:09,770 it says minimum required is 9 so when 852 00:38:07,819 --> 00:38:12,440 it's it's gonna get most of the way 853 00:38:09,770 --> 00:38:14,540 there before it'll let you successfully 854 00:38:12,440 --> 00:38:25,339 complete the deployment sorry though 855 00:38:14,540 --> 00:38:26,720 this the wrong Val nearly that cool so 856 00:38:25,339 --> 00:38:29,480 it now says we've successfully rolled 857 00:38:26,720 --> 00:38:31,939 that out now if I do cube CT I'll get 858 00:38:29,480 --> 00:38:34,910 pods or to my deployment units remember 859 00:38:31,940 --> 00:38:37,849 I can now see that I've got 10 of these 860 00:38:34,910 --> 00:38:39,140 in here and if you look at the top here 861 00:38:37,849 --> 00:38:41,540 you know that was the first one I 862 00:38:39,140 --> 00:38:43,670 deployed which was 4 minutes ago but the 863 00:38:41,540 --> 00:38:46,490 other nine of them have all happened 864 00:38:43,670 --> 00:38:49,460 just now in the last minute so I've now 865 00:38:46,490 --> 00:38:52,669 got 10 containers all serving that same 866 00:38:49,460 --> 00:38:54,920 application but but because I've exposed 867 00:38:52,670 --> 00:38:57,770 that as a service if I go back to my web 868 00:38:54,920 --> 00:39:02,349 page and refresh it right I could be in 869 00:38:57,770 --> 00:39:07,849 any one of those instances each time and 870 00:39:02,349 --> 00:39:09,470 right let's so now let's say I want to 871 00:39:07,849 --> 00:39:10,880 let's let's say I want to deploy a 872 00:39:09,470 --> 00:39:11,480 different version of my application how 873 00:39:10,880 --> 00:39:17,319 would I do that 874 00:39:11,480 --> 00:39:28,099 so I can be cube CTL set image 875 00:39:17,319 --> 00:39:29,509 deployment yes but so I'd sent you one 876 00:39:28,099 --> 00:39:31,910 doing and here is changing that 877 00:39:29,510 --> 00:39:35,050 container image I've given it and said I 878 00:39:31,910 --> 00:39:38,690 want to just deploy IBM comms guestbook 879 00:39:35,050 --> 00:39:41,150 v2 this time right and you'll see my 880 00:39:38,690 --> 00:39:44,089 deployment guestbook image updated so 881 00:39:41,150 --> 00:39:46,910 keepers understood that and now if I go 882 00:39:44,089 --> 00:39:49,710 back to the browser and I force refresh 883 00:39:46,910 --> 00:39:53,180 this I may have to go incognito 884 00:39:49,710 --> 00:40:04,830 because it caches stuff sometimes 885 00:39:53,180 --> 00:40:07,950 updated I tied that all correct odds oh 886 00:40:04,830 --> 00:40:10,980 ok still it's it was still updating so I 887 00:40:07,950 --> 00:40:12,870 was too fast there cubes pretty quick 888 00:40:10,980 --> 00:40:15,300 but because I've also I've got a really 889 00:40:12,870 --> 00:40:17,609 small cluster with a tiny machine on it 890 00:40:15,300 --> 00:40:21,060 and I'm trying to run 10 rep I'm trying 891 00:40:17,610 --> 00:40:23,820 to create 10 new replicas and it wasn't 892 00:40:21,060 --> 00:40:26,279 quite as quick as I was in this case so 893 00:40:23,820 --> 00:40:28,680 maybe if I forced refresher in a second 894 00:40:26,280 --> 00:40:30,060 we'll get there there we go so now we've 895 00:40:28,680 --> 00:40:31,919 moved could guess what version to you 896 00:40:30,060 --> 00:40:35,070 can see that color change that we now so 897 00:40:31,920 --> 00:40:36,330 this version to up here and I can type 898 00:40:35,070 --> 00:40:38,280 some new stuff and you'll notice that 899 00:40:36,330 --> 00:40:42,630 the state was lost right we'll come back 900 00:40:38,280 --> 00:40:45,150 to that in a minute so and you can see 901 00:40:42,630 --> 00:40:46,800 from these pods here that some of them 902 00:40:45,150 --> 00:40:48,390 were terminating in creating new 903 00:40:46,800 --> 00:40:50,610 containers what actually happens when 904 00:40:48,390 --> 00:40:52,859 you roll out to a new version is that 905 00:40:50,610 --> 00:40:54,780 kubernetes by default will do a 906 00:40:52,860 --> 00:40:56,400 Bluegreen deployment so it creates in 907 00:40:54,780 --> 00:41:00,120 this case it will create ten new 908 00:40:56,400 --> 00:41:01,860 containers with version two running then 909 00:41:00,120 --> 00:41:04,020 when they're healthy it will start to 910 00:41:01,860 --> 00:41:05,910 terminate the version one months so we 911 00:41:04,020 --> 00:41:10,440 always have the application accessible 912 00:41:05,910 --> 00:41:15,750 and ready and but let me see I don't 913 00:41:10,440 --> 00:41:17,420 know type some more staff oh oh what's 914 00:41:15,750 --> 00:41:20,250 happened here right I've got an error 915 00:41:17,420 --> 00:41:23,480 I'm not really sure what this is but I 916 00:41:20,250 --> 00:41:26,100 guess I should probably roll back my 917 00:41:23,480 --> 00:41:27,750 deployment here well the good thing is I 918 00:41:26,100 --> 00:41:31,339 can be that super easy with kubernetes 919 00:41:27,750 --> 00:41:35,520 as well so if I do roll out undo 920 00:41:31,340 --> 00:41:37,920 deployment expert that will literally 921 00:41:35,520 --> 00:41:40,290 take the last roll out I did or the last 922 00:41:37,920 --> 00:41:43,910 change and just roll it back right and 923 00:41:40,290 --> 00:41:43,910 if I'm again if I'm quick here 924 00:41:47,160 --> 00:41:53,440 and they look at the rollout status you 925 00:41:49,930 --> 00:41:55,890 can see essentially by telling it to 926 00:41:53,440 --> 00:41:58,750 rollback or like an undo a rollout 927 00:41:55,890 --> 00:42:02,890 it's now going oh okay I better deploy 928 00:41:58,750 --> 00:42:05,020 ten versions of ten in containers of 929 00:42:02,890 --> 00:42:07,420 version one again and then when they're 930 00:42:05,020 --> 00:42:14,740 all healthy start to terminate the 931 00:42:07,420 --> 00:42:16,210 others from the diversion - and actually 932 00:42:14,740 --> 00:42:19,000 I what I'll try and do is Australia 933 00:42:16,210 --> 00:42:24,670 while this is running here's a good 934 00:42:19,000 --> 00:42:27,190 example of Cuba CTL get replica sets so 935 00:42:24,670 --> 00:42:28,870 the way Cube manages these is it 936 00:42:27,190 --> 00:42:31,690 actually calls each of these things of 937 00:42:28,870 --> 00:42:33,430 replicas set and and I can you also use 938 00:42:31,690 --> 00:42:40,210 a label here so you can see what's going 939 00:42:33,430 --> 00:42:41,890 on by using the - el flag and then key 940 00:42:40,210 --> 00:42:43,690 value pair essentially I'm using those 941 00:42:41,890 --> 00:42:46,000 labels and it's searching to match those 942 00:42:43,690 --> 00:42:50,110 and you can see there are two replica 943 00:42:46,000 --> 00:42:51,610 sets in there one of which will be my 944 00:42:50,110 --> 00:42:54,160 version one of the app and one of which 945 00:42:51,610 --> 00:42:56,230 is version - and if I rerun that command 946 00:42:54,160 --> 00:42:59,230 they should have fewer of each now so 947 00:42:56,230 --> 00:43:01,450 now yeah you can see that version one's 948 00:42:59,230 --> 00:43:04,230 back up and running and version two it's 949 00:43:01,450 --> 00:43:05,410 nearly finished killing all of those 950 00:43:04,230 --> 00:43:06,460 okay 951 00:43:05,410 --> 00:43:08,379 what I'm going to do now is I'm just 952 00:43:06,460 --> 00:43:09,580 going to quickly delete this and then 953 00:43:08,380 --> 00:43:13,030 show you another way of deploying 954 00:43:09,580 --> 00:43:15,630 applications if I could type to delete 955 00:43:13,030 --> 00:43:22,180 that would be helpful 956 00:43:15,630 --> 00:43:28,150 cool so we ended meet the deployment and 957 00:43:22,180 --> 00:43:29,649 then delete service guestbook as well so 958 00:43:28,150 --> 00:43:31,840 we delete the service and now if I do 959 00:43:29,650 --> 00:43:34,090 cube CTL get pods just check there's 960 00:43:31,840 --> 00:43:35,650 nothing running okay there are a couple 961 00:43:34,090 --> 00:43:37,780 of the three left that are still 962 00:43:35,650 --> 00:43:39,850 terminating they've probably gone by the 963 00:43:37,780 --> 00:43:44,140 next time I run it which they have okay 964 00:43:39,850 --> 00:43:45,790 cool so let's clear this and what you'll 965 00:43:44,140 --> 00:43:47,470 you'll find from that right that's a 966 00:43:45,790 --> 00:43:51,040 really simple way of doing it but I've 967 00:43:47,470 --> 00:43:52,689 deployed those with a prebuilt image and 968 00:43:51,040 --> 00:43:54,160 I haven't given it much information I 969 00:43:52,690 --> 00:43:55,300 basically just said like here's an image 970 00:43:54,160 --> 00:43:59,930 run it 971 00:43:55,300 --> 00:44:01,910 ultimately what happens is when you run 972 00:43:59,930 --> 00:44:04,819 kubernetes deployments you end up 973 00:44:01,910 --> 00:44:07,370 writing a lot of these manifests in yam 974 00:44:04,820 --> 00:44:11,000 all right so here we go let's get this 975 00:44:07,370 --> 00:44:14,480 one open so if you have a look here this 976 00:44:11,000 --> 00:44:16,960 is a simple deployment for example and 977 00:44:14,480 --> 00:44:20,360 I'm saying with with each of these 978 00:44:16,960 --> 00:44:23,900 manifest files that kubernetes will 979 00:44:20,360 --> 00:44:25,160 accept there's you would have to specify 980 00:44:23,900 --> 00:44:27,680 the API version that you're 981 00:44:25,160 --> 00:44:30,290 communicating with and the kind of 982 00:44:27,680 --> 00:44:31,910 object you're creating and then you can 983 00:44:30,290 --> 00:44:34,009 put as much metadata as you like right 984 00:44:31,910 --> 00:44:37,310 these can be all these labels and so on 985 00:44:34,010 --> 00:44:40,010 to be able to filter on them later 986 00:44:37,310 --> 00:44:41,900 but the the bit that kubernetes needs in 987 00:44:40,010 --> 00:44:44,210 order to actually deploy stuff is your 988 00:44:41,900 --> 00:44:47,090 spec in here so in the spec you can see 989 00:44:44,210 --> 00:44:48,890 I'm defining replicas ten let's change 990 00:44:47,090 --> 00:44:50,120 that actually let's say like seven so 991 00:44:48,890 --> 00:44:54,140 that we can tell it's not the point the 992 00:44:50,120 --> 00:44:56,630 same thing as last time we've got a 993 00:44:54,140 --> 00:44:59,870 thing here we're saying match labels 994 00:44:56,630 --> 00:45:01,940 where the app equals guestbook the 995 00:44:59,870 --> 00:45:03,380 template here in here we've now got 996 00:45:01,940 --> 00:45:05,480 again some more metadata around the 997 00:45:03,380 --> 00:45:07,520 container or the pod and then the 998 00:45:05,480 --> 00:45:09,650 containers itself so here I'm specifying 999 00:45:07,520 --> 00:45:12,470 the name is guestbook but I want that 1000 00:45:09,650 --> 00:45:15,800 IBM comm guestbook v1 right and then 1001 00:45:12,470 --> 00:45:17,540 also I need to expose that pour on 3000 1002 00:45:15,800 --> 00:45:20,840 and you can start to store all sorts of 1003 00:45:17,540 --> 00:45:24,009 information in here and the way I deploy 1004 00:45:20,840 --> 00:45:29,660 that right is I just do keep CTL create 1005 00:45:24,010 --> 00:45:32,360 guestbook deployment yam all right so 1006 00:45:29,660 --> 00:45:35,029 keep city I'll create minus F it's 1007 00:45:32,360 --> 00:45:37,460 basically like here's a file deploy it 1008 00:45:35,030 --> 00:45:39,410 right and it knows that this is the 1009 00:45:37,460 --> 00:45:42,640 deployment because I specified that in 1010 00:45:39,410 --> 00:45:45,140 the spec here I said kind deployment and 1011 00:45:42,640 --> 00:45:47,330 it's created the deployment it's named a 1012 00:45:45,140 --> 00:45:50,390 guestbook be one because again at the 1013 00:45:47,330 --> 00:45:52,220 name here guess that'd be one it will 1014 00:45:50,390 --> 00:45:55,879 use the containers image I've specified 1015 00:45:52,220 --> 00:45:58,990 etc and this becomes a much easier way 1016 00:45:55,880 --> 00:46:03,740 of being able to employ things and also 1017 00:45:58,990 --> 00:46:06,950 store the configuration and like like 1018 00:46:03,740 --> 00:46:08,538 not have you can also use it to automate 1019 00:46:06,950 --> 00:46:11,328 things which is much easier but also 1020 00:46:08,539 --> 00:46:12,589 like avoid human error you can you can 1021 00:46:11,329 --> 00:46:14,390 do you could do all of that from the 1022 00:46:12,589 --> 00:46:17,209 command line but it said a lot of 1023 00:46:14,390 --> 00:46:19,729 commands or a lot of flags and you could 1024 00:46:17,209 --> 00:46:21,649 easily type some wrong and whereas when 1025 00:46:19,729 --> 00:46:24,019 you're storing it in a manifest it's 1026 00:46:21,650 --> 00:46:25,549 much easier to handle the other thing I 1027 00:46:24,019 --> 00:46:28,999 then need to do is I need to go and 1028 00:46:25,549 --> 00:46:33,979 create a service and finally let's check 1029 00:46:28,999 --> 00:46:35,629 this is deployed first so get pods okay 1030 00:46:33,979 --> 00:46:35,959 cool yeah so my seven pods are up and 1031 00:46:35,630 --> 00:46:45,229 running 1032 00:46:35,959 --> 00:46:48,140 I could equally have done L thing to 1033 00:46:45,229 --> 00:46:49,729 filter in this case I should get a mob 1034 00:46:48,140 --> 00:46:54,949 because all of they have running from 1035 00:46:49,729 --> 00:46:56,479 that guestbook app to be a little bit 1036 00:46:54,949 --> 00:46:59,449 slow responding but there we go yet we 1037 00:46:56,479 --> 00:47:01,009 get the same result and then let me just 1038 00:46:59,449 --> 00:47:03,349 show you how I can actually that 1039 00:47:01,009 --> 00:47:10,339 deployment I showed you I can edit that 1040 00:47:03,349 --> 00:47:11,630 deployment from straight from cuba 1041 00:47:10,339 --> 00:47:13,699 Nettie's right so what this does is it 1042 00:47:11,630 --> 00:47:15,289 downloads a version of them deployment 1043 00:47:13,699 --> 00:47:17,989 and you'll notice as I scroll through 1044 00:47:15,289 --> 00:47:21,739 this that there's way more information 1045 00:47:17,989 --> 00:47:24,619 in here then was in the deployment 1046 00:47:21,739 --> 00:47:26,390 manifest I gave to Cuba Nettie's right 1047 00:47:24,619 --> 00:47:28,159 and that's because this is a copy of 1048 00:47:26,390 --> 00:47:29,959 what's being stored in the database and 1049 00:47:28,159 --> 00:47:32,599 this contains all sorts of information 1050 00:47:29,959 --> 00:47:34,519 about like you can see the status here 1051 00:47:32,599 --> 00:47:37,939 for available replicas as the conditions 1052 00:47:34,519 --> 00:47:40,578 so the last time it was updated you know 1053 00:47:37,939 --> 00:47:43,819 the minimum availability message on 1054 00:47:40,579 --> 00:47:45,469 there and so on all that so but 1055 00:47:43,819 --> 00:47:47,058 essentially like it's this is all the 1056 00:47:45,469 --> 00:47:50,089 stuff that Cuban if he's is added to it 1057 00:47:47,059 --> 00:47:55,269 before it's stored it so let's just quit 1058 00:47:50,089 --> 00:47:57,380 that and then what I won't do is me like 1059 00:47:55,269 --> 00:47:59,299 you could equally I could have made 1060 00:47:57,380 --> 00:48:01,609 taken that guestbook deployment and then 1061 00:47:59,299 --> 00:48:04,699 apply to change but let's just deploy a 1062 00:48:01,609 --> 00:48:08,390 service now instead so let's do let's 1063 00:48:04,699 --> 00:48:12,799 have a look at that first service and 1064 00:48:08,390 --> 00:48:15,558 you'll see this service let's go back 1065 00:48:12,799 --> 00:48:18,319 again looks much like the deployment 1066 00:48:15,559 --> 00:48:20,539 does it's long but simpler this one it's 1067 00:48:18,319 --> 00:48:22,359 basically saying you know deploy a 1068 00:48:20,539 --> 00:48:27,650 service 1069 00:48:22,359 --> 00:48:29,569 match the selector here is looking for 1070 00:48:27,650 --> 00:48:33,289 app equals guestbook so all of the pods 1071 00:48:29,569 --> 00:48:34,969 where the label app equals guestbook and 1072 00:48:33,289 --> 00:48:35,299 then I want you to load balance over 1073 00:48:34,969 --> 00:48:37,849 there 1074 00:48:35,299 --> 00:48:39,950 and I want you to expose port 3000 right 1075 00:48:37,849 --> 00:48:46,900 so there's my simple service 1076 00:48:39,950 --> 00:48:46,899 let's do QT TL create guestbook service 1077 00:48:51,670 --> 00:48:58,839 and that should now be deployed 1078 00:48:56,239 --> 00:49:04,759 so it says service guestbook created and 1079 00:48:58,839 --> 00:49:11,630 and then if I do once once more I go to 1080 00:49:04,759 --> 00:49:15,289 my let me get this the called hopefully 1081 00:49:11,630 --> 00:49:17,420 guess but yeah so I just need to check 1082 00:49:15,289 --> 00:49:18,979 that port again right so that because 1083 00:49:17,420 --> 00:49:21,910 this time I've created a new node port 1084 00:49:18,979 --> 00:49:24,468 on there and I need to update that 1085 00:49:21,910 --> 00:49:27,709 unlike browser so we can go and check 1086 00:49:24,469 --> 00:49:30,499 the route still running Oh in fact it's 1087 00:49:27,709 --> 00:49:32,538 the same port still so we're good um and 1088 00:49:30,499 --> 00:49:35,209 you can see my applications now up and 1089 00:49:32,539 --> 00:49:37,989 running this time I've deployed the same 1090 00:49:35,209 --> 00:49:40,339 thing but I used manifests rather than 1091 00:49:37,989 --> 00:49:44,599 specifying the image myself and then 1092 00:49:40,339 --> 00:49:48,109 writing commands in to do it so and then 1093 00:49:44,599 --> 00:49:50,809 I can do the usual like it will take 1094 00:49:48,109 --> 00:49:52,788 state the only thing is right all of 1095 00:49:50,809 --> 00:49:54,380 these haven't had a way to actually 1096 00:49:52,789 --> 00:49:57,589 store the information I put into my 1097 00:49:54,380 --> 00:50:02,390 guestbook so very quickly what I'm gonna 1098 00:49:57,589 --> 00:50:05,538 do is I'm going to deploy a Redis cache 1099 00:50:02,390 --> 00:50:07,249 so that this application when it takes 1100 00:50:05,539 --> 00:50:10,309 information in here 1101 00:50:07,249 --> 00:50:12,649 it still stores it because if i refresh 1102 00:50:10,309 --> 00:50:16,089 this again i force a refresh because i 1103 00:50:12,650 --> 00:50:18,410 have seven instances right you'll see 1104 00:50:16,089 --> 00:50:20,479 sometimes they get the response i typed 1105 00:50:18,410 --> 00:50:22,279 in but a lot of the time i'm getting 1106 00:50:20,479 --> 00:50:24,439 blank right because it depends which one 1107 00:50:22,279 --> 00:50:27,859 I'm connecting to that's not 1108 00:50:24,440 --> 00:50:30,170 particularly good behavior for my 1109 00:50:27,859 --> 00:50:33,859 application so let's deploy a backing 1110 00:50:30,170 --> 00:50:34,789 service to this so a cube CTO or grave - 1111 00:50:33,859 --> 00:50:36,739 F 1112 00:50:34,789 --> 00:50:38,390 redis last time and you can see this is 1113 00:50:36,739 --> 00:50:42,229 much easier when I have these deployment 1114 00:50:38,390 --> 00:50:44,328 manifests written off already so now I'm 1115 00:50:42,229 --> 00:50:49,698 creating a new deployment called Redis 1116 00:50:44,329 --> 00:50:54,380 master and you can see if I do let's do 1117 00:50:49,699 --> 00:50:55,459 the this time my selectors actually do 1118 00:50:54,380 --> 00:50:59,209 something because I have multiple 1119 00:50:55,459 --> 00:51:01,038 deployments so I'm saying match the 1120 00:50:59,209 --> 00:51:03,439 labels where at people's Redis role 1121 00:51:01,039 --> 00:51:05,239 equals master and still return the pods 1122 00:51:03,439 --> 00:51:08,598 and you can see I have one of those 1123 00:51:05,239 --> 00:51:10,489 running this Redis master they're going 1124 00:51:08,599 --> 00:51:12,859 to copy that quickly because another 1125 00:51:10,489 --> 00:51:17,799 cool thing you can do in cube is you can 1126 00:51:12,859 --> 00:51:20,689 do queue TTL exactly right and this will 1127 00:51:17,799 --> 00:51:24,769 back into the container is like SSH is 1128 00:51:20,689 --> 00:51:26,359 in and runs a command for you so in this 1129 00:51:24,769 --> 00:51:29,089 case I'm gonna give it so that's the 1130 00:51:26,359 --> 00:51:31,038 name of the pod I want to connect to and 1131 00:51:29,089 --> 00:51:33,259 the command I want to run it Redis CLI 1132 00:51:31,039 --> 00:51:35,900 so if we jump in there we can just check 1133 00:51:33,259 --> 00:51:37,759 the Redis Eli's running and you know we 1134 00:51:35,900 --> 00:51:40,309 can go like ping and it responds okay 1135 00:51:37,759 --> 00:51:44,059 great so that's fine 1136 00:51:40,309 --> 00:51:45,949 let's just jump out of there and then we 1137 00:51:44,059 --> 00:51:55,779 also need to create a service for that 1138 00:51:45,949 --> 00:51:57,799 one that ServiceNow will match that 1139 00:51:55,779 --> 00:52:02,179 deployment we created so that it's 1140 00:51:57,799 --> 00:52:03,349 exposed and just in order to so the 1141 00:52:02,179 --> 00:52:05,150 thing I need to do now is the 1142 00:52:03,349 --> 00:52:07,339 application has the code that's written 1143 00:52:05,150 --> 00:52:09,799 for it is automatically going to try and 1144 00:52:07,339 --> 00:52:11,808 connect to Redis if it's available but 1145 00:52:09,799 --> 00:52:14,749 because it's already up and running it's 1146 00:52:11,809 --> 00:52:16,729 now using in-memory database instead we 1147 00:52:14,749 --> 00:52:18,979 need to restart it so there's no real 1148 00:52:16,729 --> 00:52:21,198 real concept of like a restart in Cuba 1149 00:52:18,979 --> 00:52:22,549 Nettie's and because all your containers 1150 00:52:21,199 --> 00:52:25,489 are supposed to be stateless in 1151 00:52:22,549 --> 00:52:30,679 ephemeral and so the way we do that is 1152 00:52:25,489 --> 00:52:35,539 we do a cube CTL elite deploy guess 1153 00:52:30,679 --> 00:52:39,259 Burke v1 so I'm basically deleting my 1154 00:52:35,539 --> 00:52:42,549 deployment I created and then I'm just 1155 00:52:39,259 --> 00:52:42,549 gonna create it again 1156 00:52:45,410 --> 00:52:49,250 and they'd like I could equally I could 1157 00:52:47,480 --> 00:52:51,440 have scaled the replicas to zero and 1158 00:52:49,250 --> 00:52:54,980 scaled them back up again that would 1159 00:52:51,440 --> 00:52:58,960 also have achieved the same like same 1160 00:52:54,980 --> 00:53:02,270 goal and now if I jump over to my 1161 00:52:58,960 --> 00:53:04,180 application refresh it quickly enough 1162 00:53:02,270 --> 00:53:06,920 it's finished 1163 00:53:04,180 --> 00:53:08,839 if those pods of finish creating so 1164 00:53:06,920 --> 00:53:10,369 they're still saying container creating 1165 00:53:08,839 --> 00:53:13,250 two of them are finished so we might get 1166 00:53:10,369 --> 00:53:15,859 a response now there we go right and now 1167 00:53:13,250 --> 00:53:18,560 if I type something in and I say you 1168 00:53:15,859 --> 00:53:21,790 know how about world if I fall to 1169 00:53:18,560 --> 00:53:25,460 refresh this regardless of which of the 1170 00:53:21,790 --> 00:53:27,619 instances I connect to and I can see 1171 00:53:25,460 --> 00:53:30,770 that state because it's being stored in 1172 00:53:27,619 --> 00:53:32,990 my Redis service and we can also like 1173 00:53:30,770 --> 00:53:39,290 let's confirm that for sure by going 1174 00:53:32,990 --> 00:53:41,270 into the let's exec pending on what do 1175 00:53:39,290 --> 00:53:54,770 they call that pod again I'd find it's 1176 00:53:41,270 --> 00:53:56,180 that exact into the Redis pod again all 1177 00:53:54,770 --> 00:53:58,160 right so we're now using the Redis CLI 1178 00:53:56,180 --> 00:54:03,319 again inside that container that we're 1179 00:53:58,160 --> 00:54:04,578 storing the cache and let's do just see 1180 00:54:03,319 --> 00:54:09,140 what this one's called okay it's called 1181 00:54:04,579 --> 00:54:10,160 guestbook in here let's just get like 1182 00:54:09,140 --> 00:54:11,868 the return the phone 1183 00:54:10,160 --> 00:54:15,078 essentially I'm saying to it return the 1184 00:54:11,869 --> 00:54:18,079 first ten rows of whatever stored in 1185 00:54:15,079 --> 00:54:19,970 this cache on the guestbook key and you 1186 00:54:18,079 --> 00:54:22,790 can see it's stored inside there is 1187 00:54:19,970 --> 00:54:24,470 hello world so my cache is working and 1188 00:54:22,790 --> 00:54:27,980 it's replicating across all the 1189 00:54:24,470 --> 00:54:31,700 containers um fantastic so I've now 1190 00:54:27,980 --> 00:54:36,290 deployed like a very simple but pretty 1191 00:54:31,700 --> 00:54:37,490 powerful scalable deployment the final 1192 00:54:36,290 --> 00:54:39,410 thing that I was going to show you but I 1193 00:54:37,490 --> 00:54:45,259 won't do and I'll talk about instead is 1194 00:54:39,410 --> 00:54:47,020 if I jump back to my slides and what I 1195 00:54:45,260 --> 00:54:49,940 was hoping to have time to do was to say 1196 00:54:47,020 --> 00:54:52,400 now I've deployed a Redis master how do 1197 00:54:49,940 --> 00:54:53,690 we keep that scalable well one of the 1198 00:54:52,400 --> 00:54:55,980 ways we could have done that would be to 1199 00:54:53,690 --> 00:54:59,280 deploy slave nodes to that Redis much 1200 00:54:55,980 --> 00:55:01,050 and what those slaves do is is they 1201 00:54:59,280 --> 00:55:03,450 replicate the data that gets stored in 1202 00:55:01,050 --> 00:55:05,640 the Redis master across them so we can 1203 00:55:03,450 --> 00:55:07,919 have multiple instances of the database 1204 00:55:05,640 --> 00:55:10,440 as well and then the way the application 1205 00:55:07,920 --> 00:55:12,839 behaves is it takes reads from those 1206 00:55:10,440 --> 00:55:15,630 slaves and any rights go to the master 1207 00:55:12,839 --> 00:55:18,029 and then they get synced across and at 1208 00:55:15,630 --> 00:55:19,829 that point right very quickly you know 1209 00:55:18,030 --> 00:55:22,109 with in under an hour whilst explaining 1210 00:55:19,829 --> 00:55:24,359 it we have like a three-tier application 1211 00:55:22,109 --> 00:55:28,009 that's fully scalable highly available 1212 00:55:24,359 --> 00:55:30,328 on cloud deployed with kubernetes and 1213 00:55:28,010 --> 00:55:31,800 kubernetes is now constantly monitoring 1214 00:55:30,329 --> 00:55:34,320 that to make sure it's always up and 1215 00:55:31,800 --> 00:55:35,910 running which is it's a pretty cool and 1216 00:55:34,320 --> 00:55:40,380 powerful way to have your application 1217 00:55:35,910 --> 00:55:44,129 running and again like thanks to cuba 1218 00:55:40,380 --> 00:55:46,500 Nettie's so I'm gonna open up very 1219 00:55:44,130 --> 00:55:48,390 quickly to questions and nisha identif 1220 00:55:46,500 --> 00:55:51,210 you mentioned you were going to monitor 1221 00:55:48,390 --> 00:55:53,069 if there were any I don't know if you 1222 00:55:51,210 --> 00:55:57,560 want to let me know if we have any at 1223 00:55:53,070 --> 00:56:00,780 this stage oh yeah people asked about um 1224 00:55:57,560 --> 00:56:02,759 advantages of using kubernetes on IBM 1225 00:56:00,780 --> 00:56:06,740 cloud specifically if you have anything 1226 00:56:02,760 --> 00:56:09,089 to share about that or yeah sure um so 1227 00:56:06,740 --> 00:56:11,549 yeah there's essentially right there's 1228 00:56:09,089 --> 00:56:14,609 like two ways of running communities and 1229 00:56:11,550 --> 00:56:17,550 you can either like run it and host it 1230 00:56:14,609 --> 00:56:19,020 all yourself either on your own 1231 00:56:17,550 --> 00:56:21,060 infrastructure or in cloud 1232 00:56:19,020 --> 00:56:24,300 infrastructure like a lot of a lot of 1233 00:56:21,060 --> 00:56:26,040 cloud providers will will spin up Kuban 1234 00:56:24,300 --> 00:56:29,460 entities for you in a load of virtual 1235 00:56:26,040 --> 00:56:30,329 machines and go like here it is like now 1236 00:56:29,460 --> 00:56:32,910 it's your problem 1237 00:56:30,329 --> 00:56:35,220 and the problem with that is is you have 1238 00:56:32,910 --> 00:56:37,770 to manage and maintain all of the master 1239 00:56:35,220 --> 00:56:39,319 nodes you have to handle a lot of the 1240 00:56:37,770 --> 00:56:41,790 networking that goes on underneath 1241 00:56:39,319 --> 00:56:43,740 you then have to stay up-to-date with 1242 00:56:41,790 --> 00:56:50,430 kubernetes upgrades or you have to 1243 00:56:43,740 --> 00:56:54,078 delete your entire later if you if you 1244 00:56:50,430 --> 00:56:57,089 want to get efforts from provider and 1245 00:56:54,079 --> 00:56:59,250 the other way of doing it is is like a 1246 00:56:57,089 --> 00:57:01,799 managed kubernetes environment which is 1247 00:56:59,250 --> 00:57:02,940 what IDM provide it's what do you get if 1248 00:57:01,800 --> 00:57:04,650 you you know if you go to Google cloud 1249 00:57:02,940 --> 00:57:07,920 as well I think there are some others 1250 00:57:04,650 --> 00:57:09,839 who do it now to essentially the benefit 1251 00:57:07,920 --> 00:57:11,880 with that right is in this case IBM 1252 00:57:09,839 --> 00:57:14,299 masternodes they look after all of the 1253 00:57:11,880 --> 00:57:19,349 kubernetes type upgrades for you and 1254 00:57:14,299 --> 00:57:21,869 they there is still like a an option you 1255 00:57:19,349 --> 00:57:22,979 have as to when you want to upgrade but 1256 00:57:21,869 --> 00:57:25,170 the other thing they'll be doing is 1257 00:57:22,979 --> 00:57:28,558 they'll be providing things like when 1258 00:57:25,170 --> 00:57:29,700 your worker nodes like fall out of day 1259 00:57:28,559 --> 00:57:33,210 or there's a security vulnerability 1260 00:57:29,700 --> 00:57:36,058 within them IBM will notify you and tell 1261 00:57:33,210 --> 00:57:37,619 you like here all you have to do is run 1262 00:57:36,059 --> 00:57:39,089 this command and we can upgrade them for 1263 00:57:37,619 --> 00:57:41,039 you but you've just got to be aware that 1264 00:57:39,089 --> 00:57:42,660 you're working like you know what your 1265 00:57:41,039 --> 00:57:45,239 stuff is you you've deployed on there 1266 00:57:42,660 --> 00:57:46,950 and whether it might be affected so it 1267 00:57:45,239 --> 00:57:48,930 takes a lot of a headache of running 1268 00:57:46,950 --> 00:57:50,249 kubernetes away from you and lets you 1269 00:57:48,930 --> 00:57:51,839 focus more on just deploying your 1270 00:57:50,249 --> 00:57:55,558 applications and being an end-user 1271 00:57:51,839 --> 00:58:00,058 rather than operations manager of a cube 1272 00:57:55,559 --> 00:58:02,759 cluster great answer um someone else 1273 00:58:00,059 --> 00:58:07,079 asked where are the logs to the commands 1274 00:58:02,759 --> 00:58:13,349 and service stored so we're the lost of 1275 00:58:07,079 --> 00:58:16,890 the commands and service perhaps or 1276 00:58:13,349 --> 00:58:17,969 maybe I'm gonna hey I think I thought I 1277 00:58:16,890 --> 00:58:21,058 know what they mean by that I'm gonna 1278 00:58:17,969 --> 00:58:23,729 assume they mean like if I run so when 1279 00:58:21,059 --> 00:58:25,529 I'm running cube CTL like create service 1280 00:58:23,729 --> 00:58:27,718 etc or something like that 1281 00:58:25,529 --> 00:58:30,450 right I'm telling Cuban Eddie's to do a 1282 00:58:27,719 --> 00:58:32,460 bunch of things is there like an audit 1283 00:58:30,450 --> 00:58:34,558 trail about that because you know one of 1284 00:58:32,460 --> 00:58:38,039 my other developers might tell cube to 1285 00:58:34,559 --> 00:58:43,140 do lots of stuff um yes that's that's 1286 00:58:38,039 --> 00:58:44,640 it's all stored in the side the API 1287 00:58:43,140 --> 00:58:48,058 server that I mentioned earlier like 1288 00:58:44,640 --> 00:58:50,670 keeps an audit trail of that I don't 1289 00:58:48,059 --> 00:58:53,249 know how accessible that is like so you 1290 00:58:50,670 --> 00:58:56,099 can see it I know when you run cube 1291 00:58:53,249 --> 00:58:58,529 yourself right you can see that whether 1292 00:58:56,099 --> 00:59:01,499 through IBM cloud because it's like a 1293 00:58:58,529 --> 00:59:03,119 managed service you may have to if you 1294 00:59:01,499 --> 00:59:06,328 had that request you may have to open a 1295 00:59:03,119 --> 00:59:07,979 support ticket and just request could we 1296 00:59:06,329 --> 00:59:11,609 see all the audit trail for our commands 1297 00:59:07,979 --> 00:59:14,089 and that but ultimately like you you 1298 00:59:11,609 --> 00:59:16,769 want to get away from in a you know in a 1299 00:59:14,089 --> 00:59:18,359 multi-person environment you want to get 1300 00:59:16,769 --> 00:59:20,308 away from running as many commands as 1301 00:59:18,359 --> 00:59:22,460 possible and you want all of this to be 1302 00:59:20,309 --> 00:59:24,859 handled by automated tooling 1303 00:59:22,460 --> 00:59:26,450 that you know in reality you write your 1304 00:59:24,859 --> 00:59:28,520 code you check it into your get 1305 00:59:26,450 --> 00:59:31,939 repository and that triggers some sort 1306 00:59:28,520 --> 00:59:33,710 of delivery pipeline that you know 1307 00:59:31,940 --> 00:59:36,530 builds your code into a container it 1308 00:59:33,710 --> 00:59:39,470 deploys it off to kubernetes it asks for 1309 00:59:36,530 --> 00:59:42,970 certain number of replicas etc and the 1310 00:59:39,470 --> 00:59:46,578 only thing that the developers kind of 1311 00:59:42,970 --> 00:59:48,109 in charge of is maybe like changing a 1312 00:59:46,579 --> 00:59:49,309 few bits in the configuration that they 1313 00:59:48,109 --> 00:59:51,319 then have to check in with their code 1314 00:59:49,309 --> 00:59:53,270 anyway so you then have a full audit 1315 00:59:51,319 --> 00:59:54,619 trail from that side and that's probably 1316 00:59:53,270 --> 01:00:01,520 a better way to handle it you know like 1317 00:59:54,619 --> 01:00:13,640 you know multi-user scenario and any 1318 01:00:01,520 --> 01:00:15,589 other questions Anisha we as as do we 1319 01:00:13,640 --> 01:00:18,049 have any more questions or is that all 1320 01:00:15,589 --> 01:00:20,960 should I wrap up that uh yeah I think 1321 01:00:18,050 --> 01:00:24,170 that's all for questions so anyway thank 1322 01:00:20,960 --> 01:00:26,420 you to add and as I said before for for 1323 01:00:24,170 --> 01:00:28,490 more information in the description box 1324 01:00:26,420 --> 01:00:29,750 of the video there's an event page and 1325 01:00:28,490 --> 01:00:32,209 there you'll have links to more 1326 01:00:29,750 --> 01:00:34,400 resources on how to get started along 1327 01:00:32,210 --> 01:00:36,770 with a link to how to sign up for IBM 1328 01:00:34,400 --> 01:00:40,720 cloud so thank you everyone and that's 1329 01:00:36,770 --> 01:00:40,720 our Tech Talk go 101999

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.