1/23/20

Quản lý cảm xúc tiêu cực trong công việc

Quản lý cảm xúc tiêu cực trong công việc


Hãy kiểm soát cảm xúc…Trước khi chúng kiểm soát bạn

Bạn có thể lấy tất cả mọi thứ từ một người nhưng có một thứ duy nhất mà bạn sẽ không lấy được chính là sự tự do lựa chọn thái độ, lựa chọn cách phản ứng với hoàn cảnh
– Viktor Frankl, “Man’sSearch for Meaning”
Có lẽ ai cũng đã từng rơi vào tình huống đó. Khi dự án bạn yêu thích bị hủy bỏ sau nhiều tuần làm việc chăm chỉ, khi khách hàng vô cớ nói năng thô lỗ với bạn, khi người bạn thân (hay đồng nghiệp) bất ngờ bị sa thải, hoặc ông chủ giao cho bạn nhiều công việc mặc dù bạn đang quá tải.
Trong cuộc sống cá nhân, bạn có thể sẽ phản ứng với các tình huống căng thẳng này bằng cách la hét hoặc trốn ở một góc nào đó và ngẫm nghĩ thương tiếc cho cuộc đời mình. Nhưng trong công việc, những cách cư xử này có thể gây tổn hại đến danh tiếng cũng như năng suất làm việc của bạn.
Những tình huống căng thẳng thường gặp ở công ty là bị cắt giảm ngân sách, bị sa thải, và bị chuyển sang phòng ban khác. Thật sự rất khó kiểm chế cảm xúc trong những tình huống như thế này nhưng việc kiềm chế cảm xúc là rất quan trọng. Bởi vì nếu buộc phải sa thải nhiều nhân viên, người quản lý sẽ chỉ giữ lại những ai biết kiểm soát cảm xúc của họ và chịu được áp lực công việc. Tất cả các ví dụ trên cho thấy, vấn đề không phải là bạn ở trong tình huống nào mà quan trọng là cách bạn phản ứng lại với các tình huống đó như thế nào.
Vì vậy, làm thế nào để kiểm soát cảm xúc của bạn tốt hơn, và “lựa chọn” cách phản ứng với các tình huống xấu? Trong bài này, chúng ta sẽ xem xét những cảm xúc tiêu cực hay gặp nhất ở nơi làm việc – và làm thế nào để kiểm soát chúng 1 cách hiệu quả.
Tại sao chúng ta chỉ tập trung vào những cảm xúc mang tính tiêu cực? Bởi vì hầu hết mọi người không cần chiến lược để kiểm soát cảm xúc tích cực của họ. Tóm lại, cảm giác vui sướng, niềm hăng say, lòng từ bi, hay lạc quan thường không ảnh hưởng tiêu cực đến người khác. Miễn là bạn chia sẻ cảm xúc tích cực đó 1 cách có ích, điều đó sẽ được đánh giá rất cao tại nơi làm việc!

Cảm xúc tiêu cực thường gặp tại nơi làm việc.

Năm 1997, giáo sư Cynthia Fisher của Khoa Quản Trị -Đại học Bond đã tiến hành một nghiên cứu gọi là “cảm xúc tại nơi làm việc: Nhân viên có cảm xúc gì và làm sao đo lường được cảm xúc đó?”
Theo nghiên cứu của Fisher, những cảm xúc tiêu cực thường diễn ra nhất ở nơi làm việc là:
·        Thất vọng / Cáu gắt.
·        Lo lắng / bồn chồn.
·        Tức giận / làm sự việc nghiêm trọng.
·        Không thích.
·        Thất vọng / không vui.
Dưới đây là các chiến lược khác nhau để đối phó với các cảm xúc tiêu cực trên.

Thất vọng / Cáu gắt

Cảm giác thất vọng thường xuất hiện khi bạn cảm thấy bế tắc không thể giải quyết được công việc hoặc rơi vào tình cảnh tiến thoái lưỡng nan. Có thể do đồng nghiệp phản đối dự án tâm huyết của bạn hoặc sếp không đến họp đúng giờ hoặc đơn giản là phải chờ điện thoại quá lâu.
Dù sao đi nữa thì bạn vẫn phải kịp thời kiểm soát sự thất vọng củ mình vì thất vọng thường dẫn tới cảm xúc tiêu cực, chẳng hạn như tức giận.
Dưới đây là một vài gợi ý để kiểm soát sự thất vọng:
·        Dừng lại và đánh giá – Điều tốt nhất mà bạn có thể làm lúc bấy giờ là dùng lý trí lấn át cảm xúc và xem xét tình huống. Hãy tự hỏi tại sao bạn cảm thấy thất vọng, viết ra cụ thể, rồi nghĩ về một điều tích cực hơn trong hoàn cảnh đó. Ví dụ, nếu sếp của bạn trễ họp, thì hãy nghĩ là bạn có thêm thời gian để chuẩn bị. Hoặc, bạn có thể tận dụng thời gian này để thư giãn một chút.
·        Tìm những mặt tích cực trong hoàn cảnh đó – Suy nghĩ tích cực hơn sẽ làm bạn nhìn vấn đề theo một hướng khác. Chính sự thay đổi nhỏ trong suy nghĩ này sẽ có thể thay đổi cả tâm trạng của bạn. Chẳng hạn như có ai đó làm bạn thất vọng thì hãy nghĩ là họ không cố ý. Nếu có điều gì đó đang phiền lòng bạn thì hãy xem đó không phải là chuyện của riêng ai, đừng suy nghĩ nhiều mà hãy cứ tiếp tục công việc của mình.
·        Ngẫm nghĩ về lần thất vọng gần đây nhất của bạn –  Lần cuối cùng bạn cảm thấy thất vọng về một điều gì đó, hãy nhớ lại xem nó có được giải quyết ổn thỏa kịp thời không? Chắc chắn là sự thất vọng hay cáu gắt của bạn chẳng thể giúp bạn giải quyết ổn thỏa vấn đề của mình. Như vậy, có nghĩa là chúng chẳng giúp được gì cho bạn trong lúc này.

Lo lắng / Căng thẳng

Nguyên nhân lo lắng của bạn thường do số lượng nhân viên bị sa thải ngày một tăng lên, và tất nhiên là nhiều người cũng lo lắng về công việc của họ như bạn. Nhưng chính sự lo lắng sẽ khiến bạn dễ dàng mất kiểm soát. Và nếu bạn chấp nhận bị nó kiểm soát, thì không những gây ảnh hưởng đến tinh thần, sức khỏe mà còn ảnh hưởng tới năng suất làm việc của bạn cũng như khả năng đương đầu với thách thức trong công việc.
Hãy thử áp dụng những gợi ý sau để kiểm soát lo lắng của bạn:
·        Đừng bao bọc quanh bạn bằng lo lắng – Ví dụ nếu đồng nghiệp bạn đang tụ tập trong phòng nghỉ và bàn tán về việc cắt giảm nhân viên của công ty thì đừng đến đó và cũng đừng bạn tâm đến nó. Mọi người ai cũng lo lắng thì sự lo lắng nó càng lớn hơn và điều đó chẳng tốt cho ai cả.
·        Tập hít thở sâu– Giúp nhịp thở và nhịp tim bạn chậm lại.  Hít vào từ từ trong 5 giây và thở ra từ từ trong 5 giây. Chỉ tập trung hít thở, và đừng để ý đến chuyện gì khác. Hãy làm điều này ít nhất 5 lần. Để biết thêm, hãy đọc  kĩ thuật thư giãn cơ thể.
·        Tập trung cải thiện tình hình – Nếu bạn sợ bị sa thải thì ngồi đó và lo lắng cũng chẳng thể giúp bạn giữ được công việc của mình. Thay vì đó, tại sao bạn không thử động não để tìm cách đóng góp cho công ty nhiều hơn, và cho họ thấy bạn giá trị như thế nào?
·        Viết một quyển nhật kí về những lo lắng của bạn– Nếu bạn cảm thấy lo lắng luôn chiếm giữ tâm trí mình thì hãy viết những lo lắng đó vào vở hoặc nhật kí và lên kế hoạch giải quyết chúng. Rồi hãy quên chúng đi vì biết chắc rằng bạn sẽ giải quyết được. Khi đến lúc thực hiện kế hoạch, hãy tiến hành phân tích rủi ro và có những hành động cần thiết để hạn chế những rủi ro đó.
Khi cảm thấy lo lắng, bồn chồn, bạn sẽ thiếu tự tin. Hãy đọc bài viết “Hình thành sự tự tin” để đảm bảo bạn không rơi vào hoàn cảnh như vậy. Ngoài ra, cũng đừng để lo lắng làm mất đi sự quyết đoán chuẩn xác của bạn.

Tức giận / làm sự việc trở nên nghiêm trọng

Giận dữ mất kiểm soát có lẽ là cảm xúc tiêu cực nhất mà mọi người thường kinh qua tại nơi làm việc. Đó cũng là cảm xúc mà hầu hết chúng ta không kiểm soát tốt. Nếu bạn thấy khó khăn trong việc kiểm soát sự nóng giận của mình ở công ty thì hãy học cách kiểm soát nó ngay từ bây giờ, vì đó là một trong những cách tốt nhất để giữ công việc của mình.
Hãy thử những gợi ý dưới đây để kiểm soát cơn giận của bạn:
·        Nhận ra các dấu hiệu ban đầu của sự giận dữ– Chỉ có bạn mới biết được dấu hiệu tức giận của chính mình khi nó đang hình thành, vì vậy, hãy học cách nhận ra nó ngay khi nó bắt đầu. Ngăn sự giận dữ của mình chính là điều quan trọng nhất. Hãy nhớ rằng, bạn có quyền chọn cách phản ứng lại với hoàn cảnh. Đừng biện minh rằng bản năng đầu tiên của bạn đối với hoàn cảnh là thể hiện sự tức giận, đó không phải là cách phản ứng khôn ngoan.
·        Nếu bạn bắt đầu tức giận, hãy ngưng mọi việc đang làm – Nhắm mắt lại và thở sâu như chúng ta đã học ở bên trên. Việc tập trung thở sâu sẽ làm gián đoạn suy nghĩ bực tức và đưa bạn trở lại trang thái tích cực hơn
·        Tưởng tượng ra chính mình khi đang giận dữ– Nếu bạn tưởng tượng ra bạn trông như thế nào và hành xử ra sao trong khi tức giận, bạn sẽ có quan điểm và thái độ khác trong tình huống đó. Ví dụ, nếu bạn chuẩn bị quát tháo nhân viên, hãy tưởng tượng bạn sẽ trông như thế nào. Mặt bạn đỏ phải không? Bạn vung tay lung tung phải không? Liệu bạn có muốn làm việc với một người như mình lúc đó không? Chắc chắn là không.
Để tìm hiểu thêm về cách kiểm soát sự giận dữ ở công ty, hãy làm bài kiểm tra của chúng tôi “Bạn có kiểm soát cơn giận hiệu qua không?” Ngoài ra hãy đọc “Cách giải quyết với những lời phê bình không công bằng” và “Kiểm soát cơn giận”

Không thích

Có lẽ chúng ta đã từng phải làm việc với những người mà ta không thích. Nhưng quan trọng là phải hoàn thành công việc và tỏ ra chuyên nghiệp dù trong hoàn cảnh nào
Dưới đây là một số gợi ý cách làm việc với những người mà bạn không thích:
·        Hãy tôn trọng– Nếu bạn phải làm việc với một người mà bạn không thích, hãy tạm thời gạt bỏ niềm tự hào và cái tôi của bạn đi. Hãy lịch sự và tôn trọng họ như bạn đang đối xử với những người khác. Người ta hành xử một cách không chuyên nghiệp không có nghĩa là bạn cũng như họ.
·        Hãy quyết đoán– Nếu người khác hành xử thô lỗ và không chuyên nghiệp, hãy giải thích dứt khoát rằng bạn không muốn họ cư xử với bạn như vậy và thật bình tĩnh thoát khỏi hoàn cảnh đó. Hãy nhớ rằng, bạn phải nêu gương nếu muốn người khác cư xử tốt với mình.
Để tìm hiểu thêm về cách xử lý tình huống phải làm việc với những người mà bạn không thích, hãy xem “Đối phó với khó khăn về con người” và “cái tôi tại nơi làm việc”.

Thất vọng / Không vui

Đối phó với sự thất vọng hay không vui tại nơi làm việc thật sự khó khăn. Tất cả những cảm xúc trong công việc có thể tác động đến năng suất của bạn. Nếu bạn vừa mới nhận được kết quả đáng thất vọng, năng lượng của bạn chắc hẳn sẽ thấp, bạn sẽ lo ngại gặp phải rủi ro nào đó, và những cảm xúc đó có thể ngăn cản bạn đạt được kết quả tốt trong công việc.
Dưới đây là một số bước để chủ động học hỏi và đối phó với sự thất vọng và không vui:
·        Nhìn vào suy nghĩ của bạn–Nếu suy nghĩ kỹ bạn sẽ nhận ra rằng mọi việc không luôn như mình mong muốn. Nếu mọi việc đều như bạn nghĩ thì cuộc sống sẽ là một đường thẳng thay vì có những ngọn đồi và thung lũng, lên và xuống đúng không nào?Và chính những ngọn đồi và thung lũng ấy thường làm nên điều thú vị trong cuộc sống.
·        Điều chỉnh mục tiêu của bạn– Bạn đang thất vọng vì không đạt mục tiêu? Điều này không có nghĩa là mục tiêu ấy sẽ không bao giờ đạt được. Hãy giữ nguyên mục tiêu nhưng cần điều chỉnh đôi chút trong cách thức – ví dụ, kéo dài thời hạn.
·        Ghi lại suy nghĩ của bạn– Hãy viết ra những điều thật sự làm cho bạn không hài lòng. Đồng nghiệp? Công việc của bạn? Quá nhiều việc phải làm? Ngay khi bạn phát hiện ra điều bất ổn hãy bắt đầu động não để tìm cách giải quyết nó. Hãy nhớ rằng, việc thay đổi tình hình là nằm trong tầm tay bạn.
·        Mỉm cười! – Nghe co vẻ lạ, nhưng một nụ cười miễn cưỡng- thậm chí chỉ cần 1 cái nhăn mặt – cũng có thể làm cho bạn cảm thấy hạnh phúc (đây là một trong những cách kỳ lạ mà con người có thể làm được) Hãy thử xem – bạn sẽ ngạc nhiên đấy!

Điểm cốt lõi:

Tất cả chúng ta phải đối phó với cảm xúc tiêu cực trong công việc và học cách đương đầu với chúng ngay từ bây giờ. Tóm lại, cảm xúc tiêu là một chất xúc tác có khả năng lây lan rất nhanh, và chẳng ai muốn ở bên cạnh một người luôn gây ảnh hưởng tiêu cực lên nhóm.
Hiểu rõ nguyên nhân gây ra cảm xúc tiêu cực của bạn và những cảm xúc bạn phải đối mặt thường xuyên nhất. Khi những cảm xúc tiêu cực bắt đầu xuất hiện, ngay lập tức sử dụng những phương thức được học để ngăn chặn nó lại. Càng chần chừ ngăn chặn cảm xúc tiêu cực thì bạn càng gặp nhiều rắc rối hơn.

Tóm tắt sách: Quẳng gánh lo đi và vui sống

Tóm tắt sách: Quẳng gánh lo đi và vui sống – Dale Carnegie

Phần 1: Các nguyên tắc cơ bản để loại bỏ sự lo lắng 
Nguyên tắc 1: Hãy sống với ngày hôm nay, đừng bận tâm đến quá khứ và lo lắng về tương lai
Nguyên tắc 2: Đối mặt với sự lo lắng bằng cách
  1. Tự hỏi bản thân: “Điều tệ nhất có thể xảy ra là gì?”
  2. Chuẩn bị tinh thần để chấp nhận điều tồi tệ nhất.
  3. Nỗ lực cải thiện tình trạng xấu nhất.
Nguyên tắc 3: Nhắc nhở bản thân về cái giá phải trả bằng sức khoẻ của chính mình khi chúng ta quá lo lắng.

Phần 2: Phương pháp phân tích và giải quyết sự lo lắng
Nguyên tắc 1: Tìm hiểu vấn đề gây lo lắng, thu thập tất cả các dữ liệu có liên quan.
Nguyên tắc 2: Cân nhắc tất cả các thông tin, rồi đưa ra quyết định.
Nguyên tắc 3: Một khi đã đưa ra quyết định, hãy thực hiện ngay và kiên định làm theo quyết định đó.
Nguyên tắc 4: Nêu ra và trả lời bốn câu hỏi sau:
  1. Vấn đề là gì?
  2. Đâu là nguyên nhân gây ra vấn đề
  3. Tất cả những giải pháp có thể đưa ra để giải quyết vấn đề là gì?
  4. Giải pháp tốt nhất là gì?

Phần 3: Phá bỏ thói quen lo lắng trước khi sự lo lắng tàn phá chúng ta
Nguyên tắc 1: Loại bỏ tất cả lo lắng ra khỏi đầu bạn bằng cách giữ cho mình luôn bận rộn
Nguyên tắc 2: Đừng quan tâm quá nhiều đến những chuyện vặt vãnh. “Cuộc đời quá ngắn ngủi để có thời gian xét nét những điều vụn vặt”
Nguyên tắc 3: Sử dụng luật bình quân để loại bỏ những nỗi lo lắng. Tự hỏi bản thân: “Xác suất xảy ra việc này là bao nhiêu?”
Nguyên tắc 4: Hợp tác với những điều không thể tránh khỏi. Nếu lâm vào tình thế nằm ngoài khả năng thay đổi hay cải thiện của bạn, hãy tự nhắc bản thân rằng “Chuyện cũng đã vậy rồi, không thể khác được”
Nguyên tắc 5: Đặt một lệnh “dừng” đối với nỗi lo lắng của chúng ta. Đừng dành cho nó sự quan tâm quá mức.
Nguyên tắc 6: Hãy sống với hiện tại và để cho quá khứ tự chôn vùi những sai lầm của nó.

Phần 4: 7 cách luyện tinh thần để sống thanh thản và hạnh phúc
Nguyên tắc 1:Suy nghĩ và hành động một cách vui tươi: Suy nghĩ của chúng ta tạo nên cuộc đời của chúng ta, suy nghĩ tích cực thì chúng ta sẽ hạnh phúc.
Nguyên tắc 2: Đừng bao giờ cố trả đũa kẻ thù của mình: Sự oán ghét của ta chẳng làm tổn thương kẻ thù mà chỉ khién cho cuộc sống của ta trở thành những chuỗi ngày khốn khổ, chúng ta sẽ làm tổn thương bản thân còn nhiều hơn là tổn thương họ.
Nguyên tắc 3: Luôn chuẩn bị tinh thần để đối diện với sự vô ơn: Hãy chấp nhận đó là một điều bình thường. Cách duy nhất để có thể tìm thấy hạnh phúc là đừng mong đợi được biết ơn mà hãy cứ cho đi và vui hưởng niềm hạnh phúc từ việc làm ấy. Muốn con cái có thái độ biết ơn thì ta phải dạy bảo chúng bằng chính hành động và thái độ của mình.
Nguyên tắc 4: Hãy nghĩ đến những điều may mắn mà bạn có được – chứ không phải những rắc rối.
Nguyên tắc 5: Hãy là chính mình! Đừng bắt chước người khác. Hãy khám phá bản thân và tự tin là chính mình
Nguyên tắc 6: Chấp nhận và biến khó khăn thành cơ hội: Nếu đời cho ta một quả chanh, hay pha thành ly nước chanh. Đức tính kỳ diệu của con người là “khả năng biến mất thành được”. Điều thực sự quan trọng là phải biết thu lợi từ chính những cái đã mất.
Nguyên tắc 7: Hãy quên đi bản thân và mang niềm vui, hạnh phúc đến cho người khác.

Phần 5: Gạt bỏ nỗi lo bị chỉ trích
Nguyên tắc 1: Một lời chỉ trích bất công thường là những lời ca ngợi bị biến hình vì ghen tị vì không ai thèm soi mói vì một kẻ tầm thường.
Nguyên tắc 2: Hãy làm tốt những gì có thể rồi bật chiếc dù của bạn lên để cơn mưa nhận xét không làm ướt gáy bạn.
Nguyên tắc 3: Ghi nhận và phân tích những điểm yếu của bản thân.

Phần 6: 6 cách tránh mệt mỏi và lo lắng, đồng thời nâng cao tinh thần và sức lực 
Nguyên tắc 1: Nghỉ ngơi trước khi bị mệt
Nguyên tắc 2: Học cách thư giãn khi đang làm việc
Nguyên tắc 3: Học cách thư giãn khi ở nhà
Nguyên tắc 4: Áp dụng bốn thói quen trong lúc làm việc:
  • Dọn sạch tất cả giấy tờ trên bàn, trừ những thứ liên quan đến vấn đề đang giải quyết
  • Xử lý mọi việc theo thứ tự quan trọng
  • Khi gặp vấn đề nảy sinh, hãy giải quyết luôn nếu thấy có đầy đủ các yếu tố cần thiết để đưa ra quyết định
  • Học cách tổ chức, uỷ quyền và giám sát công việc
Nguyên tắc 5: Nhiệt tình với công việc
Nguyên tắc 6: Không nên lo lắng về sự mất ngủ. Chính sự lo lắng về chứng mất ngủ mới huỷ hoại sức khoẻ của bạn chứ không phải chứng mất ngủ

1/22/20

Using Amazon EKS to Build a Demo Guestbook Application

Link: https://medium.com/@shouldroforion/using-amazon-eks-to-build-a-demo-guestbook-application-e48c2a909bde
We’ve been doing some experimentation with containers and Docker/Docker Swarm for some of our on-premise applications at work. I’ve only just touched Kubernetes, the apparent winner of the container orchestration and management battle in the infotech arena. Now having some real experience under my belt with Docker/Docker Swarm (though I’ve got a ton still to learn), I wanted to get some real experience with Kubernetes.
Over the past week and this weekend, I took the opportunity to dive deeper in to Kubernetes (k8s), specifically with Amazon EKS. This is the project I completed with the steps involved. The outputs of the steps are not exactly 1:1 to the architecture diagram I was basing this experiment on, but it does give a rough idea. If you’re interested in building your own Amazon EKS Cluster and Worker Nodes, you can do so following the steps here: https://github.com/m3kan1cal/aws-eks-demo

Create EKS Cluster Service Role in IAM

To create your Amazon EKS service role in the IAM console:
1. Open the IAM console at https://console.aws.amazon.com/iam/.
2. Choose Roles, then Create role.
3. Choose EKS from the list of services, then Allows Amazon EKS to manage your clusters on your behalf for your use case, then Next: Permissions.
4. Choose Next: Review.
5. For Role name, enter a unique name for your role, such as Stoic-EksCluster-ServiceRole , then choose Create role.

Create AWS EKS Cluster VPC Stack

To create the EKS Cluster VPC with defaults, use the following command.
aws cloudformation create-stack — profile=stoic \
  — stack-name “Stoic-EksCluster-Vpc-Stack” \
  — template-body https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/amazon-eks-vpc-sample.yaml
If you want to use values other than the defaults, check the CloudFormation template at the referenced URL for the parameters to work with. Note the following outputs generated from this command. These values will be used later in this demo.
aws cloudformation describe-stacks --profile=stoic \
    --stack-name "Stoic-EksCluster-Vpc-Stack" \
    --query "Stacks[].Outputs"[
    [
        {
            "OutputKey": "SecurityGroups",
            "OutputValue": "sg-069a1b7585d2ec879",
            "Description": "Security group for the cluster control plane communication with worker nodes"
        },
        {
            "OutputKey": "VpcId",
            "OutputValue": "vpc-0ee2845a85eef4d1b",
            "Description": "The VPC Id"
        },
        {
            "OutputKey": "SubnetIds",
            "OutputValue": "subnet-048f7eb94d7433cfa,subnet-0deacae0efb648275,subnet-015c0bdab265cf8fa",
            "Description": "All subnets in the VPC"
        }
    ]
]

Install kubectl for Amazon EKS

Kubernetes uses a command-line utility called kubectl for communicating with the cluster API server. Beginning with Kubernetes version 1.10, you can configure the kubectl client to work with Amazon EKS by installing the AWS IAM Authenticator for Kubernetes and modifying your kubectl configuration file to use it for authentication.

Install the aws-iam-authenticator for Amazon EKS

Amazon EKS clusters require the https://github.com/kubernetes-sigs/aws-iam-authenticator to allow IAM authentication for your Kubernetes cluster. Beginning with Kubernetes version 1.10, you can configure the kubectl client to work with Amazon EKS by installing the AWS IAM Authenticator for Kubernetes and modifying your kubectl configuration file to use it for authentication.
Follow the instructions here:

Create Your Amazon EKS Cluster

In the Kubernetes Engine, a cluster consists of at least one cluster master and multiple worker machines called nodes. A cluster is the foundation of KE: the Kubernetes objects that represent your containerized applications all run on top of a cluster. With this basic understanding on the table, and the above commands completed, now you can create your Amazon EKS cluster. There are some subtleties related to the IAM User or Role that creates the cluster and the ability to make API calls to the EKS API server. Make sure you know what IAM User or Role you are using when creating the cluster.
Note that the arn used in the following command for creating your EKS cluster is the one tied to the service role created at the beginning of this demo. The subnetIds and securityGroupIds are the values you noted above when the describe-stacks command was run against your EKS Cluster VPC CloudFormation stack.
aws eks create-cluster --profile=stoic \
    --name "Stoic-EksCluster" \
    --role-arn "arn:aws:iam::750444023825:role/Stoic-EksCluster-ServiceRole" \
    --resources-vpc-config "subnetIds=subnet-048f7eb94d7433cfa,subnet-0deacae0efb648275,subnet-015c0bdab265cf8fa,securityGroupIds=sg-069a1b7585d2ec879"{
    "cluster": {
        "name": "Stoic-EksCluster",
        "arn": "arn:aws:eks:us-west-2:750444023825:cluster/Stoic-EksCluster",
        "createdAt": 1547313824.194,
        "version": "1.11",
        "roleArn": "arn:aws:iam::750444023825:role/Stoic-EksCluster-ServiceRole",
        "resourcesVpcConfig": {
            "subnetIds": [
                "subnet-048f7eb94d7433cfa",
                "subnet-0deacae0efb648275",
                "subnet-015c0bdab265cf8fa"
            ],
            "securityGroupIds": [
                "sg-069a1b7585d2ec879"
            ],
            "vpcId": "vpc-0ee2845a85eef4d1b"
        },
        "status": "CREATING",
        "certificateAuthority": {},
        "platformVersion": "eks.1"
    }
}
If the above command is successful (if it fails, it’s most likely related to the IAM User or Role used to execute command), then you should see output similar to the above. Cluster provisioning usually takes less than 10 minutes. You can query the status of your cluster with the following command.
aws eks describe-cluster --profile=stoic \
    --name "Stoic-EksCluster" \
    --query "cluster.status"
When your cluster status is ACTIVE, you can proceed. You can also omit the --query option to get a complete metadata listing of your EKS Cluster. A few other helpful commands to verify different aspects of your cluster are listed below:
## Describe master endpoint
aws eks describe-cluster --profile=stoic \
    --name "Stoic-EksCluster" \
    --query "cluster.endpoint"## Describe master certificate data
aws eks describe-cluster --profile=stoic \
    --name "Stoic-EksCluster" \
    --query "cluster.certificateAuthority.data"

Configure kubectl for Amazon EKS

First, make sure you have kubectl installed. Use these instructions for your OS platform:
Now it’s time to create your kubeconfig file for the EKS cluster you just built. Use the AWS CLI update-kubeconfig command to create or update your kubeconfig for your cluster. By default, the resulting configuration file is created at the default kubeconfig path (.kube/config) in your home directory or merged with an existing kubeconfig at that location. You can specify another path with the --kubeconfig option, which we’ll do in the following command.
aws eks update-kubeconfig --profile=stoic \
    --name "Stoic-EksCluster" \
    --kubeconfig "~/.kube/config-Stoic-EksCluster"Updated context arn:aws:eks:us-west-2:750444023825:cluster/Stoic-EksCluster in /Users/mlfowler/.kube/config-Stoic-EksCluster
Once you see a message about adding/updating a new context, then it’s almost time to test your configuration that was just created.
We’re going to make one modification before we move on. Most users are going to be using multiple AWS profiles when interacting with the CLI. To accommodate this scenario, open up the ~/.kube/config-Stoic-EksCluster file and add the following to the users section of the config file, right below the command: aws-iam-authenticator line. This will tell kubectl to use the AWS profile and credentials that the EKS Cluster was created with.
env:
- name: AWS_PROFILE
  value: stoic
We’re also going to make one more modification to our KUBECONFIG environment variable to accommodate multiple Kubernetes cluster configurations on your local machine. If you’ve worked with Kubernetes before, you may have an environment variable named KUBECONFIG. If so, save the current value of your KUBECONFIG environment variable, so you can restore it later. For example, on Linux:
export KUBECONFIG_SAVED=$KUBECONFIG
The KUBECONFIG environment variable is a list of paths to configuration files. The list is colon-delimited for Linux and Mac, and semicolon-delimited for Windows. If you do have a KUBECONFIG environment variable, familiarize yourself with the configuration files in the list.
If you have a $HOME/.kube/config-Stoic-EksCluster file like we created in this demo, and it’s not already listed in your KUBECONFIG environment variable, append it to your KUBECONFIG environment variable now. For example, on Linux:
export KUBECONFIG=$KUBECONFIG:~/.kube/config-Stoic-EksCluster
If you find that you want to restore your configuration to the previous value, return your KUBECONFIG environment variable to its original value like this:
export KUBECONFIG=$KUBECONFIG_SAVED
Also, as you get going with kubectl you’re going to want to remember a few commands. Bookmark this URL for quick reference: https://kubernetes.io/docs/reference/kubectl/cheatsheet/. One small tip to prevent insanity is to run your commands with verbose logging enabled.
kubectl get svc --v=10NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1           443/TCP   5m
If everything checks out, you should end up with output like the above. To verify a bit more information on your EKS Cluster, use the following command:
kubectl --kubeconfig ~/.kube/config-Stoic-EksCluster cluster-infoKubernetes master is running at https://4A530A73F1AA2BF4009798217CDB7B69.yl4.us-west-2.eks.amazonaws.com
CoreDNS is running at https://4A530A73F1AA2BF4009798217CDB7B69.yl4.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

Launch and Configure Amazon EKS Worker Nodes

Now that your VPC and Kubernetes control plane are created, you can launch and configure your worker nodes. Likely enough time has passed, but you need to wait for your cluster status to show as ACTIVE. If you launch your worker nodes before the cluster is active, the worker nodes will fail to register with the cluster and you will have to relaunch them.
Launch the CloudFormation Stack for the worker nodes with this command:
aws cloudformation create-stack --profile=stoic \
    --stack-name "Stoic-EksCluster-WorkerNodes-Stack" \
    --capabilities CAPABILITY_IAM \
    --template-body https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/amazon-eks-nodegroup.yaml \
    --parameters ParameterKey=ClusterName,ParameterValue=Stoic-EksCluster \
    ParameterKey=ClusterControlPlaneSecurityGroup,ParameterValue=sg-069a1b7585d2ec879 \
    ParameterKey=NodeGroupName,ParameterValue=Stoic-EksCluster-WorkerNodes-Group \
    ParameterKey=NodeAutoScalingGroupMinSize,ParameterValue=1 \
    ParameterKey=NodeAutoScalingGroupMaxSize,ParameterValue=4 \
    ParameterKey=NodeInstanceType,ParameterValue=t2.small \
    ParameterKey=NodeImageId,ParameterValue=ami-0a2abab4107669c1b \
    ParameterKey=KeyName,ParameterValue=Stoic-EksCluster-WorkerNodes-KeyPair-001 \
    ParameterKey=VpcId,ParameterValue=vpc-0ee2845a85eef4d1b \
    ParameterKey=Subnets,ParameterValue=\"subnet-048f7eb94d7433cfa,subnet-0deacae0efb648275,subnet-015c0bdab265cf8fa\"
Note the following outputs generated from this command. These values will be used later in this demo.
aws cloudformation describe-stacks --profile=stoic \
    --stack-name "Stoic-EksCluster-WorkerNodes-Stack" \
    --query "Stacks[].Outputs"[
    [
        {
            "OutputKey": "NodeInstanceRole",
            "OutputValue": "arn:aws:iam::750444023825:role/Stoic-EksCluster-WorkerNodes-Stac-NodeInstanceRole-1LNSVW11HNA8Z",
            "Description": "The node instance role"
        },
        {
            "OutputKey": "NodeSecurityGroup",
            "OutputValue": "sg-00d7e7bd57570de90",
            "Description": "The security group for the node group"
        }
    ]
]

Enable Worker Nodes to Join EKS Cluster

We’ve got to do one thing to allow our new worker nodes to join the EKS Cluster we created. That means we need to download, edit, and apply the AWS authenticator configuration map.
1. Download the configuration map.
curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2019-01-09/aws-auth-cm.yaml
2. Open the file with your favorite text editor. Replace the `rolearn` value with the `NodeInstanceRole` value that you recorded in the previous CloudFormation Stack creation procedure, and save the file.
apiVersion: v1
    kind: ConfigMap
    metadata:
    name: aws-auth
    namespace: kube-system
    data:
    mapRoles: |
        - rolearn: arn:aws:iam::750444023825:role/Stoic-EksCluster-WorkerNodes-Stac-NodeInstanceRole-1LNSVW11HNA8Z
        username: system:node:{{EC2PrivateDNSName}}
        groups:
            - system:bootstrappers
            - system:nodes
3. Apply the configuration. This command may take a few minutes to finish.
kubectl apply -f aws-auth-cm.yaml
4. Now we just need to watch the status of your nodes and wait for them to reach the `Ready` status.
kubectl get nodes --watchNAME                                            STATUS   ROLES    AGE   VERSION
    ip-192-168-179-111.us-west-2.compute.internal   Ready       24s   v1.11.5
    ip-192-168-196-159.us-west-2.compute.internal   Ready       29s   v1.11.5
    ip-192-168-71-167.us-west-2.compute.internal    Ready       24s   v1.11.5
    ip-192-168-196-159.us-west-2.compute.internal   Ready      31s   v1.11.5
    ip-192-168-179-111.us-west-2.compute.internal   Ready      30s   v1.11.5
    ip-192-168-71-167.us-west-2.compute.internal   Ready      30s   v1.11.5
    ip-192-168-196-159.us-west-2.compute.internal   Ready      41s   v1.11.5
    ip-192-168-179-111.us-west-2.compute.internal   Ready      40s   v1.11.5
    ip-192-168-71-167.us-west-2.compute.internal   Ready      41s   v1.11.5
When you see output like the above scrolling output, then you’re ready to move on to getting controllers and services deployed to your cluster.

Launching a Guest Book Application

Now that all our resources are created, we’re ready to actually do something with them. Even though we have a fully functioning and managed Amazon EKS Cluster and Worker Nodes, they’re not doing anything other than incurring costs in your AWS account. For this demo, we’re going to be using the sample Kubernetes guest book application right from the https://github.com/kubernetes/examples/blob/master/guestbook-go/README.md documentation.
After all is said and done, we’re going to have a Redis Master/Slave Replication Controller, a Redis Master/Slave Service, a Guestbook Replication Controller, and a Guestbook Service running on our EKS Cluster. Use the commands below to accomplish this.
1. Create the Redis master replication controller.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-controller.json
2. Create the Redis master service.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-master-service.json
3. Create the Redis slave replication controller.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-controller.json
4. Create the Redis slave service.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/redis-slave-service.json
5. Create the guestbook replication controller.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-controller.json
6. Create the guestbook service.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook-go/guestbook-service.json
7. Now it’s time to query the services in your cluster and wait until the `External IP` column for the guestbook service is populated. It may take several minutes before the IP address is available.
kubectl get services -o wideNAME           TYPE           CLUSTER-IP      EXTERNAL-IP                                                               PORT(S)          AGE   SELECTOR
    guestbook      LoadBalancer   10.100.94.8     a91538fe9169411e9bb560209f7f5bbc-1044359555.us-west-2.elb.amazonaws.com   3000:30680/TCP   8s    app=guestbook
    kubernetes     ClusterIP      10.100.0.1                                                                          443/TCP          33m   
    redis-master   ClusterIP      10.100.13.235                                                                       6379/TCP         46s   app=redis,role=master
    redis-slave    ClusterIP      10.100.134.76                                                                       6379/TCP         32s   app=redis,role=slave
After your external IP address is available, point a web browser to that address at port `3000` to view your guest book. Note that it may take several minutes for DNS to propagate and for your guest book to show up. If everything is working properly, you should see something similar in your browser to the screenshot below.

Cleaning Up the Guestbook Demo Application

When you are finished experimenting with your guest book application, you should clean up the resources that you created for it. The following command deletes all of the services and replication controllers for the guest book application:
kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook
When you are done with your Amazon EKS cluster, you should delete it and its resources so that you do not incur additional charges. Be warned that the EKS Cluster and Worker Nodes will rack up some costs pretty quickly if left unchecked.
When you are done with your Amazon EKS cluster, you should delete it and its resources so that you do not incur additional charges. Be warned that the EKS Cluster and Worker Nodes will rack up some costs pretty quickly if left unchecked. Use these commands to clean up your stacks and EKS cluster.
# Delete the worker nodes/stack.
aws cloudformation delete-stack --profile=stoic \
    --stack-name "Stoic-EksCluster-WorkerNodes-Stack"# Delete the EKS cluster.
aws eks delete-cluster --profile=stoic \
    --name "Stoic-EksCluster"# Delete the EKS cluster VPC.
aws cloudformation delete-stack --profile=stoic \
    --stack-name "Stoic-EksCluster-Vpc-Stack"

Some Observations Gained along the Way

  • Kubernetes has a certain “hardened through battle” feel to it. It just feels rock solid as you’re playing with it, watching it scale worker nodes in and out, working with the  to control your cluster.
  • k8s also is very complex. Much more so than Docker/Docker Swarm to me. Without significant experience, I don’t think I’d want to set up a k8s cluster on-prem. Docker Swarm seems much more simple to build and maintain for an on-premise team.
  • Amazon EKS has made the process of spinning up an EKS Cluster and Work Nodes as easy I can picture it being. It’s not surprising to me that its carving out a big chunk of the k8s space.
  • Having played with k8s at a high-level this week, I see some very solid use cases within work. My brain is focused on a “best of breed” Rx claims adjudication system for the near future, and I see some very strong opportunities for Amazon EKS for more automation, more lightweight virtualization, more resiliency, microservices and decoupling systems, and more horizontal scaling.
  • Also, if we do decide to bring Amazon EKS in-house or another flavor of k8s, we’ll need to be careful. We can do it but we’ll need a very solid plan or we’ll end up more brittle than we are now.