Tumgik
#after these two i would have made more than my goal for a switch lite and new horizons (used) so i
atesomerocks · 3 years
Text
Tumblr media
all my posts have just been commissions huh. flhdiof either way nother commission down! the next two are quite large so they may take more time but im so honoured to be in the position im in to get all these commissions! especially this one, which was for my online little sibling (love you butter <3)
want your own piece? heres my commission sheet!
224 notes · View notes
Text
I’ll Meet You There (Part 3)
Tumblr media
Pairing: Marcus Moreno/ Wife!Reader (AFAB, no y/n) 
Word Count: 2.6K
Warnings: Talks about loss of spouse, loss of child, medical conditions/inaccuracies, grief/mourning, manipulation/brainwashing (subtext/implied, but we’ll get into it later *winkwink*)
Tags: Hurt/No comfort (for now), ANGST, eventual happy ending, one really sad man for whom I just keep making things worse, #sorrynotsorry, and now I’m just making stuff up as I go along
Summary(lite): You are Marcus’s wife, and you’re definitely not dead. No one is having a great time right now, but like hell if there's a force on this earth that’ll keep you apart forever. This is not a goodbye, its just a see you later. And the interim is going to be everyone else’s problem, you’ll make sure of it.
A/N: Hello dears, welcome back to my twisted mind story,,, guess who showed up like 2 weeks late with a smoothie! So things about this new chapter: I am a criminal with italics and someone needs to stop me, hello switching scenes and perspectives because I just want to fast forward to the good stuff but y’all don’t live in my head and don’t know all the stuff that happens to get us there so here we are taking the slow lane, and I keep brainstorming new and horrible things for my characters because I am A Lot, All The Time, and will not be stopped. Also hey, Marcus the Simp is here for you, so much. I hope this is acceptable to be a reader fic still, because I am giving you some serious personality traits... ehh, it is what it is. Tell me if you spot any of my various references, there’s a lot of ‘em. Thanks to everyone who has liked/reblogged/commented, y’all are gorgeous and I’m so grateful for the love <3 Drop me a message/ask if you want a secret about one of the characters (specify which one), I need an outlet for my endless b.t.s. plotting >;) Please enjoy p3!
AO3|Masterlist
[Previous Part]
---
There were more casseroles in his fridge that Marcus knew what to do with, and more sympathy and “thinking of you” cards stacked in piles around the house than he could count. He appreciated everyone’s gestures, but he could recognize the difference between people who were kind in the interest of helping others, and those who were kind only to help themselves. It was quite obvious which type were flooding his mailbox.
Hell, most of the people sending him cards, his fans, didn’t even know his wife, never spoke to her, didn’t feel the empty Her-shaped-space in their very souls. They just wanted the clout, the prestige, of being ‘involved’ and sympathetic to a grieving superhero. It was exhausting, but no one seemed to empathize with him on that.
The Heroics upper management, and the director specifically after his press conference and the publicity the attack had brought the organization, had insisted on Marcus taking an undetermined amount of leave from the team so he could “process and mourn his loss in the comfort of his own home.” Like he didn’t look around and see every piece of himself and his wife over the years; the Home they built for their family, filled with all the hopes and dreams of two starry eyed lovers ready to take on the world together. Like her absence wasn’t slowly killing him. 
And it wasn’t like she was gone gone.  
Dead.  
She wasn’t dead.
No way in Hell.  
Whether it was because she worked with superpowered people, her experience as a medical professional, or if she was just more paranoid than most, his wife was a planner, and she was prepared for this. “In the event of my death...," like she just knew it would be necessary.
Truthfully, she had schemes and contingencies and all manner of reactionary plans prepared for if (and when) the worst happened; terrified to be blindsided or caught unaware, unable to help those she would have been able to, if only if she had the time to think. Unpreparedness costs lives in both of their careers, and she refused to leave anything up to chance if possible. And so, she’d plan, and he’d listen.  
All throughout their relationship, from before they’d even gotten serious enough to discuss marriage, to when they heard their unborn child’s heartbeat for the first time, and just on random weekday afternoons when they would take Missy for walks around the neighbourhood to show her the beauty in their lives, his wife would paint her theories and ideas like artwork. She’d tell him a story, full of action and mystery, humour and theatrics, tragic romance and harrowing adventure; she could spin a tale like she had a silver tongue, but she never lost herself in her own narratives. In the end, they were messages, lessons, for him to remember when everything was going wrong.    
“It’s all about momentum, babe. Bleeding off energy and taking a bad hit instead of a fatal hit. You can’t just full stop; you’d absorb all the kinetic energy, and the resulting trauma will turn all your squishy internals into, like, body soup, which is just super unpleasant. And of course, head is always number one priority. Bracing for impact works better at giving you fewer serious injuries, especially for your neck and head. Muscles should absorb as much of the energy as possible, instead of letting it fall to your ligaments, discs, and nerves to take the force. So, tense up and roll in the case of a low air evacuation.”
Low air evac... she was concerned he was going to have to jump from an aircraft without a parachute at some point in his life. Which was probably accurate he’d admit, but still, he wasn’t hoping to actually need that plan.
Thankfully, it wasn’t always fire and brimstone with her, and she had many strange and terrible schemes to keep the common, everyday superhero family on their toes. Always carry at least two lip balms... never tell someone you don’t have plans for the evening... don’t smile in your mugshot... no clowns. Ever.
She was so weird, a total nerd, and so completely the girl of his dreams.  
He loved teasing her about her unending train of thought, the brain that never sleeps, how she’d go on tangents while on tangents but always circle back around; even nicknamed her (quite cheekily, and because it made them both laugh) Doctor Batman, which was usually saved for when she was being particularly dramatic and gloomy. Turn the supercomputer off for a second, Bats, come see what Missy’s doing!  
He was her anchor, always ready to pull her back to earth when she started drifting off too far from them, but he never asked and never wanted her to change. He adored her, silly or serious, or when she woke him up in the middle of the night to make him promise that he’d never get their kid(s) a pet owl (because they’re “scary”, and “our kids would be too powerful, Marcus. Promise me!”), or that in the event of them inviting a third to their bed, it would “absolutely never, ever, ever be Miracle. No way!”  
He thought it was quite entertaining most of the time, listening to her plan for zombies and old gods and what to do if everyone just started hating cheese one day, but if it was all so important to her: having him remember this or agree to that, he’d accede to her requests in a heartbeat. Most of it was cute, harmless stuff he didn’t think would even happen, but sometimes she would hit him with serious stuff. Entirely out of left field, she’d go for his heart, and ask him for things that would hurt him, destroy him inside, if he ever had to follow through with it.
“Marcus, if it’s a choice between my safety- my life, and Missy’s? I’m always going to choose her. Kids come first, okay?”  
She wasn’t superpowered, didn’t have a shred of anything other than pure, normal human in her, but she was easily the strongest person he knew. Fearless and brave, kinder than this world deserved, she’d do anything for the people she cared about. And she’d promised him, maybe as a way to repay him for all the things he’d agreed to over the years, that she’d move heavens and the earth to return to their family. That nothing in this world, or beyond, could keep her away. “Eventually,” she’d stared into his eyes, glossy with tears from how forcefully she believed, “I will find my way back to you. I swear it, so keep a weather eye on the horizon.” See? A whole-ass nerd, and he couldn’t have loved her more.
So, she wasn’t dead. Pure and simple. She was somewhere, somehow, and he was going to find her again.  
---
“Marcus, the grieving process is different for everyone, but it is always unpredictable and painful. You will have days where you will feel like you haven’t made any progress, or even lost the progress you’ve previously made, but please know that this is natural; it's something everyone experiences, and that it doesn’t mean you’ve failed in your objective. Healing takes time, and a major part of recovery is learning to forgive yourself when you slip up. No one expects you to be back to normal tomorrow, or next week, or next month. Healing from grief is not a race, so we will go at your own pace, and we will work together to accomplish your recovery goals. You aren’t alone in this journey, and you don’t need to handle everything by yourself.”
The grief specialist he was seeing was someone he would describe as an “old soul”. She exuded the patience and peace of someone who had watched empires rise and fall, seen the turning of the wheel of time and drifted along with the current. Her voice was deep, rich in emotion and empathy for those who needed guidance, calming and intriguing with a soft lilt on her vowels. Timeless and ancient all in one, and even if he wasn’t actually mourning the death of his wife, he did find himself deeply grieving being without her. They were two halves of a whole, and though his soul was at a loss without its partner here, he still had their greatest creation, their pride and joy, their baby girl to raise.  
He would do whatever he had to do to be the best parent he could for Missy. And so, if meeting with a physiatrist every week was something that would help, then he would be here, every week. He'd learn to live with his grief, his sadness and loneliness, with just the memory of his Everything, and he’d help their kid with all hers too.  
It’s what he promised to do, after all.
“If anything ever happens to me, you’ll just have to love her enough for the both of us.”  
---
There was nothing they could recover of the people closest to centre of the explosion. No remains, no blood, nothing. Like they hadn’t been there at all.  
Suspicious.
Upper Management had brought in a team of private investigators to handle the case, people who would keep the details quiet and the public appeased with what little information they’d choose to release.  
Marcus was a superhero, and sure, his job was to hit things until they weren’t a problem anymore, but he couldn’t understand why all the highly trained professionals didn’t question the sheer amount of evidence that just wasn’t adding up.  
He tried to bring up the inconsistencies once with the lead investigator, but they had just given the distraught, widowed husband, so lost in his own denial and grasping at straws, a sad smile and told him they would do everything they could to find the truth for him and the rest of the victims’ families.
Typical.
After being brushed off without a second thought, he decided to keep his ideas quiet, and since they’d proven their unwillingness to listen, he’d just have to solve the mass disappearance himself.  
“Have you ever thought about how to commit the perfect murder, mi amor? I have. First: If there’s no body, they can’t prove the person is dead. No evidence of death? No murder. Simple. But of course, completely vanishing a full human would be a challenge. Short of having the superpowers necessary to, like, erase someone from reality in their entirety, there would be a lot of chances to leave evidence. Ordering suspicious chemicals leaves a trail, driving out to a pig farm in the middle of the night is shady as hell and all neighbors are professional narcs, and fires? Hah! Do you have any idea how hot the fire needs to be to cremate human remains, and how long they would need to grill for? Huh, maybe the perfect murder isn’t a murder at all...  
Hey babe...  
Always doubt a body, but always doubt no body, more.”
---
You tended to lose time when there was no one else in your room. It was hard to tell when your eyes were open because you started dreaming about the only things you could see since you first woke up: drop-ceiling tiles, white walls, and pale blue curtain dividers. And it was easier that way, in the end. Your heart didn’t hurt when you only dreamt of the room. You couldn’t mourn the things and people only your soul could remember if you thought of the room. Drifting in and out of consciousness was how you were coping.  
---
You had been here, left in this room alone, for ages. You had agreed to help the man who had saved you from the explosion that killed your family, but apparently you couldn’t help him until you had recovered enough. You’d read your charts, grilled your nurses and doctors more and more the longer you were kept here. What were they all waiting for? There was nothing wrong with you except the mild post traumatic amnesia, and the whole not-remembering-much-(or anything, really)-about-your-personal-life-and-family-of-the-recent-few-years thing you had going on. It was nothing compared to when you first awoke and could remember nothing. It killed you to be without the memories of your husband and child, to know only of them instead of actually knowing them, but there was nothing you or the doctors here could do. The brain was a tricky thing, and you had to accept that your memory loss might be permanent.  
That just meant that you had to put all that you could remember to good use. You could help people here, and work towards getting justice for your family. Years and years of school, practical experience and training, you had gained it all back; re-read textbooks and studies, wrote papers on your re-emerging knowledge and jogged your memory about long nights and early mornings, surgeries and follow ups... it was all still in your head. It had returned to you easily, like diving into a cool pool on a hot summer day. It was like coming home and taking off your shoes; it felt good, freeing, as-it-should-be.  
But still they weren’t letting you leave. So: what were they waiting for?  
“Ah, Doctor, it’s lovely to see you, as always. How are we feeling today?” Okay, so the guy who “saved” you (read: paid the people who actually saved your life)  gave you the heebie-jeebies. He looked like a classic pompous asshole bigwig, like, oil tycoon or something. And he definitely had some sort of thing for you. Gross.
“I’m doing as well as can be expected, trapped in a room with nothing to do, you know, brain rotting, et cetera. Thanks for asking.” The sass was a choice, probably not a great choice, but your choice none-the-less. You really hadn’t had many opportunities to choose anything for yourself in a while.  
Well...
You were bored, and that was going to be everyone else’s problem.  
“Ah, well, good news then! You have been cleared from observation and you’ll be able to be discharged soon. Isn’t that just delightful!” Mister Craig (“Please, just Greg is fine”), was some sort of horrible group hallucination, you were convinced. No one was that cheery, that animated, unless they were on something, or you were on something. “I’ll have someone bring you your personal effects shortly, and then I can show you to your new apartment. The complex isn’t in the best neighbourhood unfortunately, but it's got some real charm, very vintage! You’ll love it!”
“I’ll look forward to seeing it then; sounds like it’ll be a real interesting place to stay. You can also explain what it is I’m going to be doing with your organization. Because you haven’t specified yet. And I expect a proper contract and wage agreement. Legally binding preferably, for your sake, of course, Mr. Craig.” Even if you weren’t the most physically intimidating person around, you knew how, and more so, when, to assert your dominance in a conversation. Especially with men like him. He was the type of guy who would pinch a nurse’s ass and then accuse them of not being able to take a joke.  
“You wound me, Doctor, I am a man of integrity! I promised you an opportunity to make a difference! To get justice for the loved ones so cruelly torn from you! You have nothing to worry about!”  
Sounds legit. Totally above board. Can’t wait.
---
Taglist (omg!! thanks love): @killtherandomness​
Drop me a line if you want to be added <3
10 notes · View notes
gamersonthego · 4 years
Text
Matt Giguere’s Top 10 Handheld Games of 2019
Handheld gaming is in a weird spot. Beyond the plethora of mobile devices running iOS or Android and the app store fronts they offer; the handheld market has now been distilled down to one major device in 2019. Lo and behold, Nintendo, once again sits alone on the hill. While the Switch has seen great gains in maintaining a constant flow of software on its platform, the vast majority of their releases are either mobile ports or older games from generations past. It is amazing on how much has been released so far, but what makes a handheld game a “handheld game” now anyway? When your choice can be a small bite sized game like BOXBOY! + BOXGIRL! or a massive single player game like Tales of Vesperia, there really isn’t much of a difference what a handheld platform can offer compared to the home consoles for the types of games that can be played. As the Nintendo 3DS and Sony PlayStation Vita sunset into their legacy years, there seems to be a wider line on what can be considered a handheld game.
Nintendo did release a portable only version of the Switch this year, dubbed the SwitchLite. Considering that most of my playtime has been in handheld mode, I picked one up shortly after release. After a few months of playtesting, I think this will be my go-to system for the foreseeable future. I adore the form factor size. The original Switch still works great for quick pick up and play in my home, but I find the new model easier to hold in my hands and store away when I’m travelling. The dedicated directional pad, as opposed to separate buttons because of the nature of the detachable joy-cons, is a big selling point for the myriad of 2D platformers now on the system. I sometimes miss the “HD Rumble” feedback that had to be cut, but that is a small gripe. If you don’t care for playing games on the big screen in a higher resolution and varying framerate, I highly recommend picking this dedicated handheld up.
Admittedly, a lot on my best of 2019 list are games that can be enjoyed on the big screen, especially with the convenience of the Switch’s hardware. Of the games I played this year, I think this smattering represents a healthy dose of what managed to present a case that gaming on the go is still well alive and ever changing.
Top 10 of 2019 or the Hollow Knight Memorial List*
*Sometimes when making a top list our favorite thing came out in a different year or is so clearly ahead it is a lock of number 1 across every critic. This year Hollow Knight from Team Cherry captivated me like nothing else that released this year. Alas, this game came out in 2017. So instead of placing it on my official list for 2019, it takes the honor of being my list’s name. This Metroidvania style exploration platformer is full of surprises, sometimes subverting my expectations when I thought there wasn’t anything left to uncover. If you have a Switch, I highly recommend checking out one of my favorite games in the genre since Metroid: Fusion.
Tumblr media
10. My Friend Pedro (Switch, Xbox One, PC)
An action, score-based shooter that I’ve had my eye on for years since seeing the gif put out by publisher Devolver Digital and developer Dead Toast Entertainment. The nature of this very tricky to pull off and even harder to master game lies in its focus on style. Moving across short levels on a 2-D plane, you must, roll, spin, flip, kick, skate, and, of course, kill combo as many enemies to place a high score and a top rank. While there is a story to keep the drive of the game moving forward, I wouldn’t say that should be the guiding factor to check this out. Rather, I found the quick get up and quick play of a level or two perfect for on the go gaming. Once the controls click, this game really delivers on its promised “Bananas” style.
Tumblr media
9. Untitled Goose Game (Switch, Xbox One, PS4, PC)
“What if Hitman, but a Goose?” is probably the most quoted pitch heard for this small, but very charming game by developer House House. In it you play as, well, a goose who terrorizes a small town from every front. From untying shoes so people trip to locking helpless victims in garages, no one is safe from this feathered menace! Okay, so the Hitman comparison is apt, minus the extreme brutality, for this sandbox-lite adventure. The best I can compare it to is an interactive toy; one that is unique in how the player can approach a situation and explore the possibilities of what can and will happen within the rules of the program. It might not have the deep experimentation of a larger game of its kind, but I found its calm and lighthearted nature makes this a very stress-free experience, especially when you are the one dealing out all the harassment.
Tumblr media
8. SteamWorld Quest (Switch, PC)
I don’t normally go for card-based RPGs, but when Image & Form provide a new adventure in the SteamWorld universe, I had to check it out. This might be the one that changed my mind, because after several turns, I was hooked. The adventure itself keeps things relatively jovial with plenty of jokes and wit to keep the story moving forward. It can be easy to stick to one group of characters, a limit of three per battle, but I find more enjoyment in the battle system when different combinations are put into play. The battle system also provides linked combos that offer bonuses and stringing cards together in a row also adds more to the strategy. Building a potent strategy is where I found the most engagement in this RPG, and all the trappings around the edges made this one stand out in my mind. A good starting point in the genre for those curious.
Tumblr media
7. Baba Is You (Switch, PC)
A tough logic puzzler I think goes the extra mile with its charm and style. You play as Baba. Or, rather, Baba is you, or a wall, or section of water, or a skull, or... well you get the point. The goal in each stage is to reach the “Win.” What is the “Win?” Most of the time it is a flag, but really it can be anything. Using a simple push function mechanic that many top-down puzzlers have used before, the twist comes in that you can have these sentence blocks to push around and affect the game’s logic. For example, if the winning object is out of reach by a wall that forces you stop (“Wall is Stop”) you can push one of the sentence blocks away so you can pass through the wall. Even making a sentence to “You is Win” will also result in a victory. The difficulty can be a bit stiff, but I would often find myself just thinking about a stuck puzzle while out and about and think of the solution as a sort of epiphany. Even when getting stuck on a tricky brain teaser, the game offers multiple paths so you can keep progressing through. Certainly, Baba Is You has been on my mind since first playing it.
Tumblr media
6. What The Golf? (Apple Arcade, PC, Switch TBD)
If Desert Golf is the pinnacle zen of the golf sport genre, What The Golf? embodies its “party mindset.” Yes, it is golf, and yet, it becomes something more than just golf. Sometimes you will find yourself having to hop across a very familiar level. Other times you will have to coordinate trick shots while being an exploding barrel. And sometimes, there’s just good old-fashioned bowling. What The Golf? will keep you on your toes, especially if you are fond of video games released prior to this. I won’t spoil some of the surprises in store, but some of them had me in stitches from laughing so hard. It would be nice to fully outright buy this game on the iOS App Store, but for now, a subscription to Apple Arcade is the only way to play this on the go.
Tumblr media
5. Sayonara Wild Hearts (Switch, Apple Arcade, PS4, PC)
Another Apple Arcade exclusive for mobile (you can also buy it on the Switch at this time), this one showcasing music and style. If there is one thing that counts in making an impression on me, it’s presentation. Sayonara Wild Hearts is described as a pop album video game; one you experience as much as you listen to. The format seems simple at first. Guide your character along the track and collect different items for points to rank a high score while also dodging obstacles. Soon though, things start to mix up as fast as the soundtrack’s BPMs start to pump up. While the touch controls are adequate, I think for certain spots, a physical controller would have been nice. However, there are movements that are far easier to pull off using a touch interface, such as time hits reminiscent of music games like Elite Beat Agents. This gem of a game needs to be experienced at least once, not only for the wonderful soundtrack, composed by Daniel Olsen and Jonathan Eng and featuring Linnea Olsson on vocals, but also to see the twists and turns the game takes. This little game surprised the hell out of me, and I think it will be one that I will revisit again based on its production.
Tumblr media
4. Ape Out (Switch, PC)
Sometimes we all need to get out. Especially when you are an ape stuck in a cage. That’s the conceit of the top-down, twin stick, hyper violent, and super stylized game, Ape Out. There is one goal: Be the ape and get the hell out! The concept is very rudimentary which I feel allows the game to shine. You will have to run, dodge, grab and toss enemies to reach the exit while the only advantage is being able to take three hits before going down. Enemies have guns that the player can’t use in the typical way. Instead, grabbing a foe allows one immediate shot to be fired from the grappled target. Used strategically, it can get you out of a lot of close calls. Other enemies can have bombs or body armor to keep this from being too repetitive and thanks to the game’s art style, they all look distinct so there’s no confusion on who you are fighting. Levels are procedurally generated as well, so even thinking on memorizing enemy patterns doesn’t always work. The fluorescent color palette and very minimalist style, like that of a Saul Bass movie poster, highlights the chaos and violence without making it too gross or unappealing. Even the soundtrack is minimalistic, utilizing only jazz percussion that plays out dynamically as the action plays out in real time. A feast for the eyes and a challenge on the thumbs.
Tumblr media
3. Katana Zero (Switch, PC)
Taking a page from one hit kill action games like Hotline Miami, Katana Zero plays out at first like a typical note from the genre, right down to its ‘80s aesthetic. You clear room after room of enemies, slashing with your katana, wall jumping to high points, and focusing time to slow down and either dodge or reflect projectiles. A lot of this game is a throwback thanks to its choice of graphics, 2D platforming and story points from movies like Drive and Leon: The Professional. It is thanks to the presentation that makes this game shine for me. The story, music, graphics and gameplay presentation are what makes Katana Zero so high on my list. Clearing rooms is fast paced and quick, with messing up only taking several seconds to get back into the fray. While the loop of the game can get a bit repetitive, there are plenty of surprises that change up the standard formula of the game as you progress. The story does a nice job of not only driving things forward, but also tying in gameplay concepts into the narrative. The music is a healthy blend of synthwave and some very heavy and experimental electronic tunes (one that I’ve had on repeat most of the year). The overall games is fairly short and ends on a bit of a cliffhanger, but there are speedrunning modes and secrets to uncover from replaying. Katana Zero stands as one of the best independent games this year.
Tumblr media
2. Fire Emblem: Three Houses (Switch)
There was a time when Fire Emblem was on the ropes, becoming a lagging franchise that was not connecting with strategy enthusiasts on the home consoles. Then in 2013, things changed with the release of Fire Emblem: Awakening on the 3DS. Nintendo and Intelligent Systems had intended that game to be the last in the series. Instead, we got another 3 (and 1/2) games released on the 3DS this past decade. Now it’s time to pass the torch onto the Switch and boy did they deliver on a packed adventure! Instead of just following one or two paths like most FE campaigns, Three Houses offer up to four different story playthroughs that each roughly takes about 50 hours or more to complete. There is also a vast amount of customization thanks to the setting being centered around a military school and teaching classes. If you love watching meters and bars fill up, there are tons of those to be had in Three Houses. Even though not every aspect is well thought out (the amiibo gazebo comes to mind, even though it is the best named mechanic), the cast of characters and support conversations (all fully voice acted) provide some rich storytelling from a character development standpoint. Do check out this game as it is one of the best in the series.
Tumblr media
1. Tetris 99 (Switch)
“Where are we dropping, Blocks?” In a personal first for me, a multiplayer game has taken my number one spot. Tetris 99 is just that. Tetris. However, it’s you versus 98 other players in a battle royal style completion. Released as a free download to Nintendo Switch Online subscribers, it now has multiple versions that can be bought as well. Thanks to constant updates and weekend tournaments, the online community is still strong, so finding matches is quick and painless. Playing against such a wide number of challengers turns the typical Tetris strategy on its head. Racking up combos instead of quickly clearing lines, for example, is one way to secure victory, but leaving too many gaps and holes can prove disastrous if you suddenly become the target of a handful of players. Even though I have yet to secure a 1st place finish, the nature of Tetris keeps me coming back for more. Whether it’s facing against bots, friends, marathoning solo or playing the featured battle royal, this is a fun version of Tetris to be had.
2 notes · View notes
osakasshitpit · 5 years
Text
Dragon’s Dogma, the best game you probably never played
They are bringing it back boys and girls, Dragon's Dogma. The OG Motherfucker, resurrected a second time from its grave of 2013 in all its Dark Arisen, fuck Skyrim Glory.
Yes, they just announced that Dragons Dogma is coming to the Switch and I’m super mega excited for it and like 99.99% of the population probably don’t even know why or what this game even is. It's super close to my heart and I’d be damned if I didn’t disclose why this game is the best thing since sliced bread.
To understand that though, we kind of have to go back to 2012. Skyrim came out last year, as was Dark Souls. Dragon's Dogma hit the scene in the wake of these cultural blockbusters to no fanfare at all. I honestly only ever heard of it because a friend of mine insisted that I play it because it was the second coming of super mecha death christ. All I ever saw of the game at that point was my friend dicking around, throwing people off a cliff and I don’t know, maybe that sounds hella strange but I was kind of mystified by it. I couldn’t really until the DLC, Dark Arisen, dropped together with a re-release together with Dark Arisen. A friend gave me his copy for 360 for like a month and I was just blown the fuck away by it and instantly fell in love with the game. Thus, I joined the little circle of people that have actually played the game and loved the fuck out of it. Honestly, you rarely ever meet someone who has played the game and those who did love the fuck out of the game. …and honestly, this game fucking dunks on Skyrim in pretty much every area. Fuck people that say skyrim is hot shit and the best RPG and stuff. You know who you are. Y’all gotta play fucking dragons dogma and experience a real adventure.
Dragon's Dogma is a western RPG made my Japanese people, much like Dark Souls before it. Unlike Dark Souls, it inspires a completely different atmosphere. Its strange, if I had to describe the feeling and tone of the setting, it would probably be DnD mixed with Berserk. It has a nostalgic quality to its world and enemies, having many of the same things you’d find in a Dungeons and Dragons Campaign but everything has a rather darkness that underlines it. It's really hard to describe. You play the Arisen, a nobody that got their heart ripped out and eaten by a dragon. Somehow, this didn’t kill you and magically sets you on the path to slay that dragon and the entire game is spent going towards that goal. What can I say, its pretty standard fantasy and might sound a bit cliché, but it has a strange mystery to it. Why didn’t I die? Why did the dragon only take my heart and not everyone else's? Why did the dragon marrily marrily fuck off after taking my heart? Where did that bloody thing even come from? These are all questions I had when setting out on my quest to do what fantasy heroes do best, slay a motherfucking dragon.
The next thing of note is probably two-fold: The Combat and the Pawn System. Combat happens in real time and invokes the feeling of a faster, hack-and-slash version of Dark Souls Combat. Stamina Management, Fast Moves, Dodging, Blocking, Parrying, the Works. The combat often gets compared to Dark Souls and titled as “Dark Souls Lite '', but I feel like that does the game a disservice because it's way more than that. To me it felt more like Monster Hunter with Stamina Management and seeing as this is a Capcom Game, that probably has a reason. Another huge difference is that you are going to fight big ass monsters. Not all the time, but often enough. There are smaller enemies like goblins and bandits and harpies and that sort of stuff, but the show really belongs to the big motherfucking monsters. This is where the other major difference to combat comes into play: Everything has a weight to it and you can grab onto any enemy in your reach. That means that you can throw enemies smaller than you and you can be picked up and thrown by some creatures, but that also means you can climb onto enemies far bigger than you. This changes EVERYTHING. Enemies aren't just numbers and hitboxes that move around or big spectacular set pieces like in most games, they have a real physical presence. This makes combat more dynamic and allows for many different approaches, since Monsters also have weak spots that you can aim for and they have different attacks for foes stuck to their body. You can pick up and throw your pawns at them, you can vault off of your pawns or vault them onto the monster if you have the skills equipped for it. Combat is probably where Dragons Dogma shines most. That's another cool thing: You have 9 different classes you can play. 3 are your base classes, then each of them has an advanced class that further plays on the base classes strength and then you get mixed classes for each combination of base class. Each of these classes has their own unique little playstyle and has their own skills and perks you can unlock by leveling. The clue is that you start out with one of 3 classes but soon you can not just progress in that class but rather you can freely switch between all the classes at the capital city. Perks and some skills are carried over, so you can unlock some perks as a mage for example and use them as a warrior. There is a ton of stuff to unlock and the potential for different builds is enormous. On top of that, you can do pretty much the same thing with your pawn (though they can only use the basic and advanced classes). …which leads to the other big thing: pawns. Pawns are companions you get that help you on your quest. They are NPCs that you can either find or summon and you can have 4 at a time. You get a pawn near the start of the game, that is your own permanent pawn. You can customize them, equip them with gear and change their class to fit your playstyle. The clue is that you can not only recruit pawns premade by the developers, but also pawns from other players. Your pawn can collect treasure, experience and knowledge on how to fight certain monsters by traveling with other players. That makes the Pawn System unique and really fun to engage with and adds a multiplayer component in a traditionally single-player focused game.
The main story has intense story beats with cool boss fights and the ending surprised a lot of people. Throughout the game you have a nice difficulty curve that is challenging, but never awfully punishing. There is a lot of post-game content too, including a new game plus. There is just a ton of stuff in there and you can really lose yourself. On that note, the overworld is deceptively big. It might seem small at first sight but its dense and sprawling with different areas to explore. It really feels like a small country when you walk through it. Walking is another thing, because you might find yourself doing that a lot.There are fast travel options, but initially they were limited by consumables you needed to fast travel. Since Dark Arisen though, these restrictions were lifted and fast travel became essentially unlimited. Interestingly though, the game lets you actually make your own fast travel points. You find these crystals you can place anywhere on the overworld. You can fast travel to these points and if you wanna move the point, just pick up the crystal and haul it somewhere else. It's a neat and pretty unique system. Thanks to fast traveling being dedicated to an item, it's also very easy to ignore if you like walking as much as I do, cause when you are walking around is when you genuinely have an adventure. The world feels unpredictable and you can find yourself encountering different enemies in different places, but it's always something that makes sense. This especially shines when you encounter something big and scary. For example, on one trip from one town to the next I fought off goblins, was ambushed by bandits, encountered harpies, was attacked by a griffin by surprise and found a cyclops I could (and did) fight. Traveling always feels like an adventure. You can never be quite sure what you’ll encounter, even if you can make estimates of what's going to happen. Another fun little addition that makes it feel more adventurous is nightfall. Nightfall is when undeads come out and (naturally) it gets super dark. You get a lantern you can equip to light the dark a bit, but it will still leave your surroundings in darkness. Navigation is much more difficult and you could encounter something scary any moment. It fills you with a genuine dread and makes you plan out your ventures much more carefully. Inns suddenly have a huge importance since you can not only replenish yourself, but also stay till dawn or nightfall depending on what you want to do. It's exciting and intense and adds to the adventurous nature of the game.
If that wasn’t enough, there is still the DLC Area: Bitter Black Island. It's a big complex dungeon that spans the entire island, filled with the most deadly enemies in the game and tons of loot, new Boss Fights and scary as hell encounters. It's one of the toughest challenges the game has to offer and if you like dark souls, there you go. Eat your heart out. It's every bit as grim and dangerous as the name would imply and I love the sense of looming dread that contrasts with the lighter dark fantasy flair the rest of the game has.
Overall, it's a great game and sadly not many people have actually sat down to play it. An instant cult classic. I hope the switch release allows more people to experience this hidden gem and allows Dragon's Dogma to shine. Who knows, if it is successful, Capcom might finally consider giving us the sequel the game always deserved.
89 notes · View notes
stopcousin1 · 2 years
Text
SuperEasy Ways To Be taught All the pieces About Fun Minecraft Servers
You'll be able to play on net browser, Android or iOS. The app costs $3 to download on Android or iOS. Fans of Phrases with Pals and Scrabble (the app or the board recreation) may be drawn to Wordscapes, which permits youngsters to learn new phrases and observe logic skills. The app includes colorful activities like a mix-and-match block recreation, a drawing pad, and a Busy Board full of buttons, switches, bells and musical blobs. Have fun doing all sorts of actions. It may also be used to assist in making the very computer systems we play the game on extra clever, too.That's what Microsoft's Venture Malmo, formerly often called DNA Storage Challenge, is doing right now. We let you know all about it after the lower -- and, per standard, you are free to tell us what you are doing too. Editum get limitless tries to resolve crossword-model puzzles using solely a handful of letters (with few free hints). Earlier this month, PlayStation stated customers who already own the favored world-constructing game will get the patch without spending a dime. The levels get progressively more difficult, however there's no timer, ads or in-app purchases. What your kids will study: Historic occasions and necessary figures, critical pondering, foreign cultures, languages and customs, problem-fixing expertise and extra.
What your kids will study: Capitals of nations, the places of historic occasions and different geographical info. What your youngsters will learn: Logic, spatial orientation abilities, design and drawback fixing. Once I get house, I'll more than likely lose myself with World of Warcraft and League of Legends. World of Goo's chain reactions and rubbery constructions proceed from excess computing energy out there to 2D Computer video games -- and offer what I believe players are hungry for: a new kind of game to play. In the Computer model of Minecraft, the world is restricted only by the dimensions of your pc's memory, meaning in case you strap sufficient RAM into one Computer, you might reside eternally in your individual boxy world and never visit the same place twice. Minecraft on XBLA is not a "lite" version of the game, though it is smaller in scope. Minecraft on XBLA blends the most effective bits of its originator - the open world, huge sources and customizable terrain - with only a dash of the worst - the inescapable, lethal monsters - to power players to expertise Minecraft as a sport first and a playground second. Mojang Blocky world-building game Minecraft lets players explore, collect assets, craft tools and interact in some mild combat.
I would contort my fingers trying to look round and stay above water at the same time, telling myself that Mojang designed it that manner on goal to simulate getting a swimming cramp, and I'd prefer it. Players' first moments with Minecraft got here in May 2009 when the alpha model was made obtainable, over two years prior to its full release in November 2011. Mojang and creator Markus "Notch" Persson have celebrated many sales milestones since then, just lately noting that 15 million copies of the Laptop version have been sold as of April. But what fans of the novel could also be surprised to study is that the writer based mostly his fictional account on the true story of his own son Zac and his family’s outstanding battle with autism. The game's story takes a turn when one of the raccoons falls into the hole he's operating and has to answer for his actions. Donut County is taken over by raccoons who're stealing everyone's trash with distant-controlled holes. Apple Arcade In the Pinball Wizard, you play as a younger apprentice who must carry peace back to your homeland by restoring a misplaced treasure in a excessive tower. The game works like a pinball recreation: The upper you go, the more well being you lose if you happen to fall out of the ring.
Each stage of the game brings new challenges, objectives and quirky power-ups, like a pie launcher, a cactus go well with, a snake automotive or a sizzling dog stand. With GoDaddy, you possibly can get pleasure from thrilling drop-down menus that make your gaming experience as straightforward as pie. Xaero96's map mods make these first few scouting trips rather a lot less aggravating. I'm also studying a lot of previous fantasy stuff, and so I counsel you tell your raid group you can't raid as a result of a magical talking horse has chosen you to be a mystical guardian and it's important to go to mystical guardian school. Web sites have numerous tips that folks will be able to squeeze when gamers turn into caught. You have obtained a whole lot of time in your fingers. The primary Portal obtained a Teen score for the inclusion of some bloodstains, however Portal 2 is rated E. The games is perhaps a bit scary or troublesome for gamers underneath 9, Widespread Sense Media suggests. Moreover the video games as we speak are simply so actual that you start feeling as if you're the character inside the sport. The sport provides countless methods to create your Lego character in a fast-paced 4v4 multiplayer. Current updates to the game let you commerce, upgrade your wagon and purchase food and drugs to increase your group's possibilities of survival.
1 note · View note
solidandsound · 6 years
Text
My goal for 2017 was to beat 50 games. Unless I finish anything else over the next couple of days (doubtful), my actual number is 46, which I’m still quite happy with.
Some of these were games I’d already started before 2017 (e.g. Kingdom Hearts II Final Mix, which I played most of throughout 2016 and finished in January). Many were small indie games, some only a few minutes long (e.g. Secrets Agent, which is maybe ten minutes). Some were more middling offerings (e.g. Aerannis, which I clocked 8 hours in), and some were the big, exciting games that 2017 is coming to be known for. There are also many games I played significant amounts of this year that do not count towards the above number because I haven’t finished them (like World of Final Fantasy, which I got for Christmas last year but still haven’t finished despite returning to it every couple of months).
DLC also makes calculating that number a little more difficult, especially the way DLC is more frequently being handled. Final Fantasy XV was released towards the end of 2016, and I ‘finished’ it, at the latest, in early 2017. But that was only the main story. There are a few DLC episodes out now (I’ve played two of them) as well as story improvements and a bigger DLC campaign. I could finish those, but the developers have stated that there’s going to be even more DLC in 2018, which is bizarre for a game that’s a year old, but less bizarre now than it used to be. Breath of the Wild’s DLC took a while to be released (also not part of the above number for that reason), and Xenoblade Chronicles 2 looks to be releasing DLC until at least autumn 2018. For a person who likes his games to be one and done, this trend is frustrating. Companies want their games to last longer, to remain fresh in our minds so we can give them more money. This is largely antithetical to the pursuit of games as an art form, and it’s also annoying. I like finishing things. Not knowing when the DLC is gonna stop robs me of the satisfaction of saying a game is complete, of adding it to my end of year count.
The best game I played that came out this year is almost certainly Persona 5. For all its failings, it is a solid, polished RPG that at least tries to tackle social inequality. Most of the games I really loved that I played this year are actually from years prior, however. I’m glad I finished Shin Megami Tensei: Nocturne this year, because it made me appreciate Persona 5 even more.
I dove into two older series I’ve always loved this year. One is Breath of Fire. The only BoF game I’d completed before was IV, but I’d played a lot of III as well. I went through I, II, and III in 2017, finishing the entire main series (Dragon Quarter notwithstanding). IV remains my favourite in the series, but all the games are oozing with charm and personality. Very few games manage to feel as original as BoF, even though they are, at the series’ core, standard JRPGs.
The other series I dove into is Xenosaga. Last year I replayed Xenosaga Episode I. This year I replayed Episode II and then finally, finally finished Episode III. I’ve long considered I to be one of my favourite games of all time, but III is a masterpiece that manages to surpass it. Its only faults are in the spaces where you can tell the series was supposed to have more titles in it before it was cancelled prematurely, and maybe one annoying sidequest. And the fanservice. Otherwise it is nearly perfect, and ends the series beautifully. The KOS-MOS showdown near the end has got to be one of my favourite gaming moments ever.
On the indie side of things I loved Read Only Memories, the queer sci-fi I’ve always wanted; Curtain, an artful representation of abusive relationships; Even the Ocean, a mindful environmental fable with impeccable mechanics; We Know the Devil, one of the most poetically written visual novels I’ve ever played; Lieve Oma, a touching tribute to memory; and Strange Flesh, a bizarre gay sex beat-em-up. I also loved Longest Night and Longest Night: Lost Constellation, two free side games for Night in the Woods, which is definitely on my list of games to play for 2018. If you were curious but not sold on NitW, play those two games and they will sell you on it.
Which brings me to the games I’m looking forward to playing (and/or beating) in 2018. Night in the Woods is up there, and they just released a fancy new expanded edition, so it seems like the perfect time to finally jump in. The new Steven Universe game, Save the Light, is out now as well, and given how good Attack the Light is, I would be a fool not to play this one. Blue Reflection also has me curious, as a Persona-lite game with magical girls, even though it’s gotta be a fanservicey mess. And I can’t forget about Tacoma for more queer sci-fi.
I plan on doing a deeper dive into the Shin Megami Tensei series as well. I’m already playing Persona Q and Tokyo Mirage Sessions, and 2018 is the year I finish both of them. Once those are off my plate, I can jump into Digital Devil Saga, which was gifted to me this year, and then more of the core series, maybe starting with the first Shin Megami Tensei on iOS. Who knows when SMT V on the Switch will be out, but I want to burn through more of the series before it gets here.
I’m also playing and plan on finishing Atelier Sophie (might check out more Atelier after), Beat Sneak Bandit (and I still have Bumpy Road to play to finish my Simogo backlog before they announce their new game), Bravely Second (the devs keep hinting at a Bravely Third), Fire Emblem Fates (it’s just Revelations left, and I wanna beat it before getting to Echoes which was a Christmas gift), Valkyria Chronicles II (stoked for VC 4!), and as I’ve already mentioned, World of FF and Xenoblade Chronicles 2.
In my backlog to be hopefully played this year are Horizon Zero Dawn (I’ve been wanting to play this since it was announced!), I Am Setsuna, Kentucky Route Zero, Lost Dimension, Mass Effect 3, Muramasa, Nights of Azure, Owlboy, and lots, lots more.
Some games coming out in 2018 I’m looking forward to are Digimon Story Cyber Sleuth: Hacker’s Memory, Radiant Historia Perfect Chronology, Alliance Alive, 13 Sentinels: Aegis Rim, Ooblets, Heart Forth Alicia, The Last of Us 2, and Kingdom Hearts III (not sure about 2018 for those last two though).
Shout-out to Splatoon 2, the only multiplayer game to keep me playing even though it doesn’t satisfy my craving for endings because it never fucking ends. It’s just that good.
I hope 2018 is relatively slow for new game releases, so I can do some much needed catch-up. 2018 also looks like it could be a good year for my writing career, as long as I focus enough, so I’m only planning on beating a modest 40 games. If you’ve read this far, feel free to chat me up about what games you’ve played this year. As evidenced here, I can go on forever about video games.
2 notes · View notes
Text
Hockey Promotions Mid-Season Power Rankings
FAN SUBMISSION
Check out this mid season power rankings by one of our fans!
1. Tampa Bay Lightning (Preseason ranking: 2)  The Lightning are on pace for an astounding 130 points in the regular season, which would be the third-best mark of all time. They’re loaded up and down the board and boast the league’s top power play. We expected them to be good, but probably not this good. It really is hard to find a legitimate weakness with this group. Until the real test starts in the spring, it’s unlikely they’ll be bounced from this spot.  2. Pittsburgh Penguins (Preseason Ranking: 5)  The Penguins looked nothing like the cup contender they were labelled as for the first two months of the season, and then flipped the proverbial switch, going 15-4-1 since the start of December. Kris Letang is quietly putting together a Norris-Caliber season, Sidney Crosby is back to his old self, and the depth is pulling some weight finally. The scariest thing could be that they’ve made these drastic improvements without Justin Schultz and with Evgeni Malkin mired in a slump of poor play. Cutting down opponents’ shorthanded opportunities will be a priority going forward; they’re on pace to give up 18 this year.  3. Washington Capitals (Preseason Ranking: 1)  What Stanley Cup hangover? The Caps have picked up right where they left off last season and look hungry to repeat. There isn’t much to say about this team that we don’t already know. The league-worst faceoff percentage is a little concerning, but they make up for it in the other facets of their game; if it’s a huge issue, their play doesn’t show it. Todd MacLellan will be looking for this year’s Michael Kempny at the deadline.  4. Toronto Maple Leafs (Preseason ranking: 6) Toronto is just as good as everyone expected. JT and the kids are scoring at a torrid pace, Morgan Reilly is making himself known as a true no. 1 defenseman (if he wasn’t already) and Freddy Andersen has been playing at his usual high level. The perceived problems on the blue-line haven’t materialized and the Leafs are getting solid contributions from their depth forwards, as well. Everything’s in place for them to take the next step forward. Oh, and we’ve gone more than a month now without hearing about William Nylander!  5. Winnipeg Jets (Preseason Ranking: 3)  The Jets sit here despite a couple of concerns. Connor Hellebuyck has been more pedestrian this year after being the Vezina runner-up, but he hasn’t played poorly enough to sink the Jets. Patrik Laine’s inconsistency is a little alarming, but a goal is a goal and he’s got 24. It also helps having two of the league’s top-10 scorers to go with Laine. And a top-5 power play. Yeah, they’ll be just fine. 6. Nashville Predators (Preseason Ranking: 4)  I really struggled picking between Nashville and Winnipeg, but two things made it a little easier: special teams and discipline. Nashville’s power play only connects at a 15.1% clip, 26th in the league, and they’re penalized at the second-highest rate in the league. The good news is they still have half of the season to address those warts either internally or with a trade, and their defense-first style helps negate a lot of the bad stuff. Could Nashville-Winnipeg be the new Pittsburgh-Washington type playoff matchup that we look forward to every year?  7. Boston Bruins (Preseason ranking: 7) This just about does it for the “well what did you expect?” section of the rankings. Through a rash of injuries and some inconsistent play, the Bruins are still positioned to challenge for home-ice in the first round of the playoffs. Their “big line” of Bergeron, Pastrnak, and Marchand is finally reunited and back to wreaking havoc on opponents. I don’t see the Bruins as being as good of a team as those above (the top-6 is really a toss-up outside of Tampa), but they’re close.  8. Columbus Blue Jackets (Preseason Ranking: 9)  Panarin and Bobrovsky’s contract situations be damned, the Jackets look good. They seem to be in that purgatory of “always good enough to make the playoffs, but after that who knows?” Regardless of what transpires with their Russian stars, they look poised to make this an all-in season and make the answer to the “who knows” part of my question better than “eliminated in the first round”. A lot is riding on this year for Columbus, and they’re playing like it.  9. San Jose Sharks (Preseason Ranking: 13)  Just another season in sunny San Jose. The old guard is playing well. The young guys are stepping up. Erik Karlsson has found his stride (even if the puck isn’t going in for him). The Sharks might be the ultimate “call me when the playoffs start” team, and this year doesn’t look very different. The most curious aspect of this team may now be how things work out with a Karlsson extension, until April at least.  10. Calgary Flames (Preseason ranking: 24)  Some of these bits will have moments of silence built in for you to make fun of my preseason rankings, and this is the first. Good? Alright. Much like Winnipeg and Nashville, my ranking between Calgary and San Jose hinged on a couple factors, this time goaltending and, again, discipline. I expected Bill Peters approach to make the Flames more disciplined, and it has in some ways, but they take by far the most penalties in the league which doesn’t help anybody. Their goaltending duo of David Rittich and Mike Smith doesn’t inspire much hope, but they’ve been solid, albeit inconsistent. An upgrade in net and staying out of the box could work wonders for a team that has probably already exceeded expectations.  11. Vegas Golden Knights (Preseason Ranking: 11)  In a shocking turn of events, the Knights are what everyone expected them to be. They’re doing it without the fanfare from a year ago, but they’ve played solid hockey and have kept themselves in a good spot in an open Pacific division. Marc-Andre Fleury is putting together another great season and the forward group is getting it done with the “by committee” approach. It got them within a series of the Cup a year ago; it wasn’t broke so they didn’t fix it.  12. Buffalo Sabres (Preseason Ranking: 22) I think it’s fair to omit the moment of silence on this one. Most people expected the Sabres to be better, but not this much better. The youth movement is in full swing, being led by Jack Eichel and Casey Middlestadt. Jeff Skinner has found another gear, and Jason Botterill’s depth acquisitions are proving to be valuable. They’ve hit a skid over their last 10 or so games, but the early season boon has the Sabres positioned to make a run at a wild-card playoff spot, maybe even better. Does this finally mark the end of the rebuild?  13. Dallas Stars (Preseason Ranking: 21) Stars’ president Jim Lites’ expletive-laden tirade about his best players was perhaps the most entertaining thing to happen to the Stars this year, but it did have some truth to it: they are heavily reliant on their, ahem, stars. This team will go as far as they can carry it, and lately they’ve picked it up, helping Dallas to win 6 of their last 10 and breathe new life into their playoff push. Getting healthy will help them, but as the deadline gets closer, an addition to the forward group could prove essential, even if Lites’ press release for that isn’t as entertaining.  14. Colorado Avalanche (Preseason Ranking: 14)  Two weeks ago, the Avs may have been as many as 5-6 spots higher on this list, but a lot can change in that time. A lot has changed, with Colorado losing 8 of their last 10 and their seemingly-unstoppable top line cooling down dramatically. Make no mistake, this is still a good team, but a very top-heavy one that needs its stars to get back to (or start playing to) a very high level if they want to prove that last season – and the first half of this one – weren’t aberrations.  15. Montreal Canadiens (Preseason Ranking: 27)  The Habs have been another surprising turnaround this year, and they’ve only gotten better since Shea Weber returned to the lineup. Their young, fast lineup is challenging every opponent they face. Carey Price looks more like Carey Price lately. Jesperi Kotkaniemi looks like the center Marc Bergevin has been waiting for. They don’t look like a serious playoff threat, but they certainly could get there, which would be a win for a team that had such low expectations after last season. *Insert Bergevin cheering gif*  16. Minnesota Wild (Preseason Ranking: 15)  In the midst of a roller coaster of a season, the Wild find themselves in a competitive position at the halfway mark. They’re not lighting the scorecard up in any certain area, but they’re a solid team with good options at every level and some enviable depth. That’s been enough for 6 straight playoff appearances, and it could very well be 7 this season. The big question is when will new GM Paul Fenton make a move? And will it be the one that gets them out of the first round?  17. New York Islanders (Preseason Ranking: 28)  Barry Trotz is making his presence felt on the Island in a big way: without a stud goaltender or elite defense corps, the Islanders are leading the league in goals against and that has them within striking distance of a wild-card spot. Even with this, they could be sellers at the deadline with a couple attractive pieces on expiring contracts. They probably won’t make much noise the rest of the year, but they’ve done well to calm some of the post-Tavares anxiety.  18. Anaheim Ducks (Preseason Ranking: 18)  The bad news: The Ducks are the league’s most injured team, and they’ve lost 10 straight, the most recent being a heartbreaker where they squandered a 3-0 lead. The good news: the West is wide open in terms of Wild-Card spots and the Ducks could still get there. A 10-game skid would sink most teams, but Anaheim has the good fortune of still being in the hunt in spite of it. They have the star power to get out of this; their guys have been here and done this before, as bittersweet as that may sound.  19. Carolina Hurricanes (Preseason Ranking: 26) *Checks document title* No this isn’t the “most shots” power rankings, so the ‘Canes find themselves at 19th. They’ve made some strides in the right direction, but this is still a young team trying to find its way with a new coach, and it shows. At the very least, they look to be responding to Rod Brind’Amour’s message and having fun doing it. With that, the successful incorporation of Andrei Svechnikov into their lineup, and the young talent they have, they’re set up for a bright future, maybe starting in the second half if the puck goes in a little more for them.  20. Vancouver Canucks (Preseason Ranking: 31)  Another preseason ranking that was completely wrong, albeit pretty fair. Vancouver’s young players are showing the future is now for this team and that while they’re not going to make any noise this year, they could do so sooner than most expected. Elias Pettersson is electrifying to watch and gives this franchise its cornerstone and poster-boy. In the up-and-comer power rankings, Vancouver gets a much more favorable spot.  21. Edmonton Oilers (Preseason Ranking: 20)  After a decent start to the season, and another surge when Ken Hitchcock took over as head coach, the Oilers haven’t been able to gain any positive traction. Pete Chiarelli’s recent dearth of depth trades seemingly equates to rearranging deck chairs on the Titanic: you’re addressing the wrong issues on a sinking ship. Hitchcock looks to have them playing better under his tutelage, but they have yet to turn those efforts into consistent wins. They’re still within striking distance of a playoff spot, but the push has to start now if they don’t want to be on the outside looking in for the third time in four years.  22. Florida Panthers (Preseason Ranking: 17) From a pure talent standpoint, the Panthers may be hockey’s most disappointing team. Their lineup was already playoff-caliber before they added Mike Hoffman. He settled in quickly and the Panthers got off to a hot start, but they’ve played uninspiring hockey since then. They continue to struggle at even-strength and the goaltending has been mediocre. With the playoffs looking more and more like a fantasy with each passing loss, it’s do or die time for the Panthers. They came awfully close in a similar situation last year so it’s not out of the question, but the East is loaded and the top teams continue to separate themselves from the pack.  23. New York Rangers (Preseason Ranking: 25)  In the midst of a full-blown rebuild, no one expected much from the Rangers and they’re living up to it. But they’re doing the rebuild thing immaculately, and deserve credit for it. Sticking to your guns isn’t always easy, as evidenced by their spot in the standings, but it should pay dividends if they can make some savvy decisions along the way. This is a bridge year for them, nothing more, and nothing less.  24. Chicago Blackhawks (Preseason Ranking: 19)  The ‘Hawks fall from grace continues this season, and if it weren’t for the heroic pre-injury efforts of Corey Crawford, things may be worse. They’ve made tweaks around the edges of the roster and, more notably, to the coaching staff, but nothing has given them the spark they need. With playoff position slipping away, perhaps the most pressing issue for this team is now to pick a direction going forward. Here’s to hoping Crawford can return from his latest concussion in good health and give them something positive for the future.  25. New Jersey Devils (Preseason Ranking: 15)  After being one of the league’s pleasant surprises a year ago, the Devils have regressed in a major way. Taylor Hall is no longer playing at an MVP level, but he’s still better than a point-per-game, and Nico Hischier is set to eclipse his point total from last year while improving his two-way play. That’s all well and good, but when you lack any real forward depth – especially at center – and your young players regress, the results suffer. Last year they were a playoff team, this year they’re a basement dweller. Would the real New Jersey Devils please stand up?  26. Philadelphia Flyers (Preseason Ranking: 12) The moment of silence for this one is probably replaced with a mix of boos and expletive-laden chants; it is the Flyers, after all. A new GM and a new coach haven’t been the fixes this team had hoped for, and their promising young players have stagnated or regressed in big ways. Combine all this with the fact that they can’t find solid goaltending – outside of a few good starts from promising youngster Carter Hart – and they’ve floundered their way to 30th in the league. With the talent they have on board, that’s unacceptable. With the playoffs seemingly out of sight, the focus for them should be getting the youngsters ample playing time and getting them back on track. 27. St. Louis Blues (Preseason Ranking: 8) Take your moment of silence. I could write an entire novel on how disappointing the Blues have been and how many things are wrong with them. The most unsettling aspect of this depressing first-half of the season is how they just can’t carry any momentum from game to game. Jake Allen, the defense, and the forwards all seem to be on different pages except for one or two nights when they put it all together, and then lay an egg the next time out. The Blues are so good on paper you’ve probably been waiting for the time it all clicks and they turn it around, but it hasn’t happened and, now past the halfway point, it doesn’t look like it will any time soon.  28. Ottawa Senators (Preseason Ranking: 29)  There hasn’t been much to write about the Senators in the “good” column, on or off the ice. They continue to struggle and do so in vain this season, with their first-round pick belonging to Colorado. They play hard every night, but they don’t have the talent or depth to turn the effort into wins consistently. If any good comes from this season, it has to be that Brady Tkachuk looks promising and Tomas Chabot has stepped into Erik Karlsson’s role almost seamlessly. The Duchene/Stone negotiations will have great bearing on how this team moves forward.  29. Arizona Coyotes (Preseason Ranking: 23) The Coyotes again had a great offseason, and again have followed it up disappointingly. I didn’t expect them to compete for the West, but a wild-card berth didn’t seem out of the cards for a team that tore up the league in the second half of last season, made some good additions and found its starting goalie. Perhaps an even more disturbing trend: only 5 of the Coyotes last 12 Coyotes drafted in the first round are still with the team, and only 3 – OEL, Clayton Keller, and Jakob Chychrun – are contributing in the NHL this year. Rick Tocchet looks like the coach this young team needs, but the bad draft trends need to change if the Coyotes want out of the basement. Unfortunately nothing they can do this year helps that cause.  30. Los Angeles Kings (Preseason Ranking: 10)  Take your final moment of silence. Part of me can’t believe the Kings are this bad, and then the other part of me reminds that part that the Kings barely made the playoffs on the back of a herculean season from Anze Kopitar, and then their only major change was adding 35-year old Ilya Kovalchuk. So it makes some sense, but probably not to this degree. The Kings are old and slow, and the league’s new emphasis on speed literally has other teams passing by them with ease. A hasty retool seems to be in the cards as they still have some good pieces, but they’re just not built to compete in the new NHL as currently constructed.  31. Detroit Red Wings (Preseason Ranking: 30)  The final juncture of these power rankings is perhaps the most predictable. Like the Rangers, the Wings are in the midst of a roster rebuild and their play and record shows it. There isn’t much to say about them; they’re a bad team playing for the future. That future looks bright, with young talent playing at every level of the club. The Wings will look to be the next version of the Avalanche or Maple Leafs, and have the pieces to make it happen. Another could be on his way this summer, depending on how the lottery balls fall.
0 notes
techscopic · 6 years
Text
How to Build a Kubernetes Cluster with ARM Raspberry Pi then run .NET Core on OpenFaas
First, why would you do this? Why not. It’s awesome. It’s a learning experience. It’s cheaper to get 6 pis than six “real computers.” It’s somewhat portable. While you can certainly quickly and easily build a Kubernetes Cluster in the cloud within your browser using a Cloud Shell, there’s something more visceral about learning it this way, IMHO. Additionally, it’s a non-trivial little bit of power you’ve got here. This is also a great little development cluster for experimenting. I’m very happy with the result.
By the end of this blog post you’ll have not just Hello World but you’ll have Cloud Native Distributed Containerized RESTful microservice based on ARMv7 w/ k8s Hello World! as a service. (original Tweet).
Not familiar with why Kubernetes is cool? Check out Julia Evans’ blog and read her K8s posts and you’ll be convinced!
Hardware List (scroll down for Software)
Here’s your shopping list. You may have a bunch of this stuff already. I had the Raspberry Pis and SD Cards already.
6 – Raspberry Pi 3 – I picked 6, but you should have at least 3 or 4.
One Boss/Master and n workers. I did 6 because it’s perfect for the power supply, perfect for the 8-port hub, AND it’s a big but not unruly number.
6 – Samsung 32Gb Micro SDHC cards – Don’t be too cheap.
Faster SD cards are better.
2×6 – 1ft flat Ethernet cables – Flat is the key here.
They are WAY more flexible. If you try to do this with regular 1ft cables you’ll find them inflexible and frustrating. Get extras.
1 – Anker PowerPort 6 Port USB Charging Hub – Regardless of this entire blog post, this product is amazing.
It’s almost the same physical size as a Raspberry Pi, so it fits perfect at the bottom of your stack. It puts out 2.4a per port AND (wait for it) it includes SIX 1ft Micro USB cables…perfect for running 6 Raspberry Pis with a single power adapter.
1 – 7 layer Raspberry Pi Clear Case Enclosure – I only used 6 of these, which is cool.
I love this case, and it looks fantastic.
1 – Black Box USB-Powered 8-Port Switch – This is another amazing and AFAIK unique product.
An overarching goal for this little stack is that it be easy to move around and set up but also to power. We have power to spare, so I’d like to avoid a bunch of “wall warts” or power adapters. This is an 8 port switch that can be powered over a Raspberry Pi’s USB. Because I’m given up to 2.4A to each micro USB, I just plugged this hub into one of the Pis and it worked no problem. It’s also…wait for it…the size of a Pi. It also include magnets for mounting.
1 – Some Small Router – This one is a little tricky and somewhat optional.
You can just put these Pis on your own Wifi and access them that way, but you need to think about how they get their IP address. Who doles out IPs via DHCP? Static Leases? Static IPs completely?
The root question is – How portable do you want this stack to be? I propose you give them their own address space and their own router that you then use to bridge to other places. Easiest way is with another router (you likely have one lying around, as I did. Could be any router…and remember hub/switch != router.
Here is a bad network diagram that makes the point, I think. The idea is that I should be able to go to a hotel or another place and just plug the little router into whatever external internet is available and the cluster will just work. Again, not needed unless portability matters to you as it does to me.
You could ALSO possibly get this to work with a Travel Router but then the external internet it consumed would be just Wifi and your other clients would get on your network subnet via Wifi as well. I wanted the relative predictability of wired.
What I WISH existed was a small router – similar to that little 8 port hub – that was powered off USB and had an internal and external Ethernet port. This ZyXEL Travel Router is very close…hm…
Optional – Pelican Case if you want portability. I’ll see what airport security thinks. O_O
Optional – Tiny Keyboard and Mouse – Raspberry Pis can put out about 500mA per port for mice and keyboards. The number one problem I see with Pis is not giving them enough power and/or then having an external device take too much and then destabilize the system. This little keyboard is also a touchpad mouse and can be used to debug your Pi when you can’t get remote access to it. You’ll also want an HMDI cable occasionally.
You’re Rich – If you have money to burn, get the 7″ Touchscreen Display and a Case for it, just to show off htop in color on one of the Pis.
Dodgey Network Diagram
Disclaimer
OK, first things first, a few disclaimers.
The software in this space is moving fast. There’s a non-zero chance that some of this software will have a new version out before I finish this blog post. In fact, when I was setting up Kubernetes, I created a few nodes, went to bed for 6 hours, came back and made a few more nodes and a new version had come out. Try to keep track, keep notes, and be aware of what works with what.
Next, I’m just learning this stuff. I may get some of this wrong. While I’ve built (very) large distributed systems before, my experience with large orchestrators (primarily in banks) was with large proprietary ones in Java, C++, COM, and later in C#, .NET 1.x,2.0, and WCF. It’s been really fascinating to see how Kubernetes thinks about these things and comparing it to how we thought about these things in the 90s and very early 2000s. A lot of best practices that were HUGE challenges many years ago are now being codified and soon, I hope, will “just work” for a new generation of developer. At least another full page of my resume is being marked [Obsolete] and I’m here for it. Things change and they are getting better.
Software
Get your Raspberry PIs and SD cards together. Also bookmark and subscribe to Alex Ellis’ blog as you’re going to find yourself there a lot. He’s the author of OpenFaas, which I’ll be using today and he’s done a LOT of work making this experiment possible. So thank you Alex for being awesome! He has a great post on how Multi-stage Docker files make it possible to effectively use .NET Core on a Raspberry Pi while still building on your main machine. He and I spent a few late nights going around and around to make this easy.
Alex has put together a Gist we iterated on and I’ll summarize here. You’ll do these instructions n times for all machines.
You’ll do special stuff for the ONE master/boss node and different stuff for the some number of worker nodes.
ADVANCED TIP! If you know what you’re doing Linux-wise, you should save this excellent prep.sh shell script that Alex made, then SKIP to the node-specific instructions below. If you want to learn more, do it step by step.
ALL NODES
Burn Jessie to a SD Card
You’re going to want to get a copy of Raspbian Jesse Lite and burn it to your SD Cards with Etcher, which is the only SD Card Burner you need. It’s WAY better than the competition and it’s open source.
You can also try out Hypriot and their “optimized docker image for Raspberry Pi” but I personally tried to get it working reliably for a two days and went back to Jesse. No disrespect.
Creating an empty file called “ssh” before you put the card in the Raspberry Pi
SSH into the new Pi
I’m on Windows so I used WSL (Ubuntu) for Windows that lets me SSH and do run Linux natively.
ssh pi@raspberrypi
Login pi, password raspberry.
Change the Hostname
I ran
rasbpi-config
then immediately reboot with “sudo reboot”
Install Docker
curl -sSL get.docker.com | sh && \ sudo usermod pi -aG docker
Disable Swap. Important, you’ll get errors in Kuberenetes otherwise
sudo dphys-swapfile swapoff && \ sudo dphys-swapfile uninstall && \ sudo update-rc.d dphys-swapfile remove
Go edit /boot/cmdline.txt with your favorite editor, or use
sudo nano /boot/cmdline
and add this at the very end. Don’t press enter.
cgroup_enable=cpuset cgroup_enable=memory
Install Kubernetes
curl -s http://ift.tt/22fimui | sudo apt-key add - && \ echo "deb http://ift.tt/2f7PUy5 kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ sudo apt-get update -q && \ sudo apt-get install -qy kubeadm
MASTER/BOSS NODE
After ssh’ing into my main node, I used /ifconfig eth0 to figure out what the IP adresss was. Ideally you want this to be static (not changing) or at least a static lease. I logged into my router and set it as a static lease, so my main node ended up being 192.168.170.2, and .1 is the router itself.
Then I initialized this main node
sudo kubeadm init --apiserver-advertise-address=192.168.170.2
This took a WHILE. Like 10-15 min, so be patient.
Kubernetes uses this admin.conf for a ton of stuff, so you’re going to want a copy in your $HOME folder so you can call “kubectl” easily later, copy it and take ownership.
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
When this is done, you’ll get a nice print out with a ton of info and a token you have to save. Save it all. I took a screenshot.
WORKER NODES
Ssh into your worker nodes and join them each to the main node. This line is the line you needed to have saved above when you did a kubectl init.
kubeadm join --token d758dc.059e9693bfa5 192.168.170.2:6443 --discovery-token-ca-cert-hash sha256:c66cb9deebfc58800a4afbedf0e70b93c086d02426f6175a716ee2f4d
Did it work?
While ssh’ed into the main node – or from any networked machine that has the admin.conf on it – try a few commands.
Here I’m trying “kubectl get nodes” and “kubectl get pods.”
Note that I already have some stuff installed, so you’ll want try “kubectl get pods –namespace kube-system” to see stuff running. If everything is “Running” then you can finish setting up networking. Kubernetes has fifty-eleven choices for networking and I’m not qualified to pick one. I tried Flannel and gave up and then tried Weave and it just worked. YMMV. Again, double check Alex’s Gist if this changes.
kubectl apply -f http://ift.tt/2qJxB6N
At this point you should be ready to run some code!
Hello World…with Markdown
Back to Alex’s gist, I’ll try this “markdownrender” app. It will take some Markdown and return HTML.
Go get the function.yml from here and create the new app on your new cluster.
$ kubectl create -f function.yml $ curl -4 http://localhost:31118 -d "# test" <p><h1>test</h1></p>
This part can be tricky – it was for me. You need to understand what you’re doing here. How do we know the ports? A few ways. First, it’s listed as nodePort in the function.yml that represents the desired state of the application.
We can also run “kubectl get svc” and see the ports for various services.
pi@hanselboss1:~ $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager NodePort 10.103.43.130 <none> 9093:31113/TCP 1d dotnet-ping ClusterIP 10.100.153.185 <none> 8080/TCP 1d faas-netesd NodePort 10.103.9.25 <none> 8080:31111/TCP 2d gateway NodePort 10.111.130.61 <none> 8080:31112/TCP 2d http-ping ClusterIP 10.102.150.8 <none> 8080/TCP 1d kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d markdownrender NodePort 10.104.121.82 <none> 8080:31118/TCP 1d nodeinfo ClusterIP 10.106.2.233 <none> 8080/TCP 1d prometheus NodePort 10.98.110.232 <none> 9090:31119/TCP 2d
See those ports that are outside:insider? You can get to markdownrender directly from 31118 on an internal IP like localhost, or the main/master IP. Those 10.x.x.x are all software networking, you can not worry about them. See?
pi@hanselboss1:~ $ curl -4 http://ift.tt/2zWjCfR -d "# test" <h1>test</h1> pi@hanselboss1:~ $ curl -4 http://ift.tt/2xuMdHf -d "# test" curl: (7) Failed to connect to 10.104.121.82 port 31118: Network is unreachable
Can we access this cluster from another machine? My Windows laptop, perhaps?
Access your Raspberry Pi Kubernetes Cluster from your Windows Machine (or elsewhere)
I put KubeCtl on my local Windows machine put it in the PATH.
I copied the admin.conf over from my Raspberry Pi. You will likely use scp or WinSCP.
I made a little local batch file like this. I may end up with multiple clusters and I want it easy to switch between them.
SET KUBECONFIG=”C:\users\scott\desktop\k8s for pi\admin.conf
Once you have Kubectl on another machine that isn’t your Pi, try running “kubectl proxy” and see if you can hit your cluster like this. Remember you’ll get weird “Connection refused” if kubectl thinks you’re talking to a local cluster.
Here you can get to localhost:8001/api and move around, then you’ve successfully punched a hole over to your cluster (proxied) and you can treat localhost:8001 as your cluster. So “kubectl proxy” made that possible.
If you have WSL (Windows Subsystem for Linux) – and you should – then you could also do this and TUNNEL to the API. But I’m going to get cert errors and generally get frustrated. However, tunneling like this to other apps from Windows or elsewhere IS super useful. What about the Kubernetes Dashboard?
~ $ sudo ssh -L 8001:10.96.0.1:443 [email protected]
I’m going to install the Kubernetes Dashboard like this:
kubectl apply -f http://ift.tt/2xudwS6
Pay close attention to that URL! There are several sites out there that may point to older URLs, non ARM dashboard, or use shortened URLs. Make sure you’re applying the ARM dashboard. I looked here http://ift.tt/2zWjCMT.
Notice I’m using the “alternative” dashboard. That’s for development and I’m saying I don’t care at all about security when accessing it. Be aware.
I can see where my Dashboard is running, the port and the IP address.
pi@hanselboss1:~ $ kubectl get svc --namespace kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 2d kubernetes-dashboard ClusterIP 10.98.2.15 <none> 80/TCP 2d
NOW I can punch a hole with that nice ssh tunnel…
~ $ sudo ssh -L 8080:10.98.2.15:80 [email protected]
I can access the Kubernetes Dashboard now from my Windows machine at http://localhost:8080 and hit Skip to login.
Do note the Namespace dropdown and think about what you’re viewing. There’s the kube-system stuff that manages the cluster
Adding OpenFaas and calling a serverless function
Let’s go to the next level. We’ll install OpenFaas – think Azure Functions or Amazon Lambda, except for your own Docker and Kubernetes cluster. To be clear, OpenFaas is an Application that we will run on Kubernetes, and it will make it easier to run other apps. Then we’ll run other stuff on it…just some simple apps like Hello World in Python and .NET Core. OpenFaas is one of several open source “Serverless” solutions.
Do you need to use OpenFaas? No. But if your goal is to write a DoIt() function and put it on your little cluster easily and scale it out, it’s pretty fabulous.
Remember my definition of Serverless…there ARE servers, you just don’t think about them.
Serverless Computing is like this – Your code, a slider bar, and your credit card.
Let’s go.
.NET Core on OpenFaas on Kubernetes on Raspberry Pi
I ssh’ed into my main/master cluster Pi and set up OpenFaas:
git clone http://ift.tt/2eHgAFS && cd faas-netes kubectl apply -f faas.armhf.yml,rbac.yml,monitoring.armhf.yml
Once OpenFaas is installed on your cluster, here’s Alex’s great instructions on how to setup your first OpenFaas Python function, so give that a try first and test it. Once we’ve installed that Python function, we can also hit http://ift.tt/2zWjFIz (where that’s your main Boss/Master’s IP) and see it the OpenFaas UI.
OpenFaas and the “faas-netes” we setup above automates the build and deployment of our apps as Docker Images to Kuberetes. It makes the “Developer’s Inner Loop” simpler. I’m going to make my .NET app, build, deploy, then change, build, deploy and I want it to “just work” on my cluster. And later, and I want it to scale.
I’m doing .NET Core, and since there is a runtime for .NET Core for Raspberry Pi (and ARM system) but no SDK, I need to do the build on my Windows machine and deploy from there.
Quick Aside: There are docker images for ARM/Raspberry PI for running .NET Core. However, you can’t build .NET Core apps (yet?) directly ON the ARM machine. You have to build them on an x86/x64 machine and then get them over to the ARM machine. That can be SCP/FTPing them, or it can be making a docker container and then pushing that new docker image up to a container registry, then telling Kubernetes about that image. K8s (cool abbv) will then bring that ARM image down and run it. The technical trick that Alex and I noticed was of course that since you’re building the Docker image on your x86/x64 machine, you can’t RUN any stuff on it. You can build the image but you can’t run stuff within it. It’s an unfortunate limitation for now until there’s a .NET Core SDK on ARM.
What’s required on my development machine (not my Raspberry Pis?
I installed KubeCtl (see above) in the PATH
I installed OpenFaas’s  Faas-CLI command line and put it in the PATH
I installed Docker for Windows. You’ll want to make sure your machine has some flavor of Docker if you have a Mac or Linux machine.
I ran docker login at least once.
I installed .NET Core from http://dot.net/core
Here’s the gist we came up with, again thanks Alex! I’m going to do it from Windows.
I’ll use the faas-cli to make a new function with charp. I’m calling mine dotnet-ping.
faas-cli new --lang csharp dotnet-ping
I’ll edit the FunctionHandler.cs to add a little more. I’d like to know the machine name so I can see the scaling happen when it does.
using System; using System.Text; namespace Function { public class FunctionHandler { public void Handle(string input) { Console.WriteLine("Hi your input was: "+ input + " on " + System.Environment.MachineName); } } }
Check out the .yml file for your new OpenFaas function. Note the gateway IP should be your main Pi, and the port is 31112 which is OpenFaas.
I also changed the image to include “shanselman/” which is my Docker Hub. You could also use a local Container Registry if you like.
provider: name: faas gateway: http://ift.tt/2xtjend functions: dotnet-ping: lang: csharp handler: ./dotnet-ping image: shanselman/dotnet-ping
Head over to the ./template/csharp/Dockerfile and we’re going to change it. Ordinarily it’s fine if you are publishing from x64 to x64 but since we are doing a little dance, we are going to build and publish the .NET apps as linux-arm from our x64 machine, THEN push it, we’ll use a multi stage docker file. Change the default Docker file to this:
FROM microsoft/dotnet:2.0-sdk as builder ENV DOTNET_CLI_TELEMETRY_OPTOUT 1 # Optimize for Docker builder caching by adding projects first. RUN mkdir -p /root/src/function WORKDIR /root/src/function COPY ./function/Function.csproj . WORKDIR /root/src/ COPY ./root.csproj . RUN dotnet restore ./root.csproj COPY . . RUN dotnet publish -c release -o published -r linux-arm ADD http://ift.tt/2zVAP98 /usr/bin/fwatchdog RUN chmod +x /usr/bin/fwatchdog FROM microsoft/dotnet:2.0.0-runtime-stretch-arm32v7 WORKDIR /root/ COPY --from=builder /root/src/published . COPY --from=builder /usr/bin/fwatchdog / ENV fprocess="dotnet ./root.dll" EXPOSE 8080 CMD ["/fwatchdog"]
Notice a few things. All the RUN commands are above the second FROM where we take the results of the first container and use its output to build the second ARM-based one. We can’t RUN stuff because we aren’t on ARM, right?
We use the Faas-Cli to build the app, build the docker container, AND publish the result to Kubernetes.
faas-cli build -f dotnet-ping.yml --parallel=1 faas-cli push -f dotnet-ping.yml faas-cli deploy -f dotnet-ping.yml --gateway http://ift.tt/2xtjend
And here is the dotnet-ping command running on the pi, as seen within the Kubernetes Dashboard.
I can then scale them out like this:
kubectl scale deploy/dotnet-ping --replicas=6
And if I hit it multiple times – either via curl or via the dashboard, I see it’s hitting different pods:
If I want to get super fancy, I can install Grafana – a dashboard manager by running locally in my machine on port 3000
docker run -p 3000:3000 -d grafana/grafana
Then I can add OpenFaas a datasource by pointing Grafana to http://ift.tt/2zVaKqu which is where the Prometheus metrics app is already running, then import the OpenFaas dashboard from the grafana.json file that is in the I cloned it from.
Super cool. I’m going to keep using this little Raspberry Pi Kubernetes Cluster to learn as I get ready to do real K8s in Azure! Thanks to Alex Ellis for his kindness and patience and to Jessie Frazelle for making me love both Windows AND Linux!
* If you like this blog, please do use my Amazon links as they help pay for projects like this! They don’t make me rich, but a few dollars here and there can pay for Raspberry Pis!
Sponsor: Check out JetBrains Rider: a new cross-platform .NET IDE. Edit, refactor, test and debug ASP.NET, .NET Framework, .NET Core, Xamarin or Unity applications. Learn more and download a 30-day trial!
© 2017 Scott Hanselman. All rights reserved.
      How to Build a Kubernetes Cluster with ARM Raspberry Pi then run .NET Core on OpenFaas syndicated from http://ift.tt/2wBRU5Z
0 notes
Note
good morning cute and sort of mysterious lady. ALL THE QUESTIONS PLEASE AND THANK YOU.
Good afternoon enthused and sort of mysterious new friend! Here all the questions. 
1. Do youbite or lick ice cream? Neither. I use a spoon because ice cream is so damn messy. 
2. What ishome to you? Wherever my record player is. 
3. What wasthe last lie you told? That I definitely had a great time at someone’s birthday party. 
4. Doeseveryone deserve the truth? In the end, yes. 
5. What isthe creepiest toy ever made? Kewpie dolls. 
6. Describea moment in which you did something unacceptable in a bad situation.  Encouraged an officer to let me stay late and help with a holdover shift, even though explorers are supposed to get dumped off after twelve hours. 
7. List twothings that are more easily done than said. (No, I didn’t mix them up.) Opening the door to the backlot outbuilding garage and unlocking the Bearcat G3; Running an ID card over tac two on a felony stop with multiple subjects. 
8. When wasthe last time you worked really hard to achieve something? Getting to the place where I could graduate a semester early. 
9. How manyall nighters have you pulled? I’ve seen my share of Graves. 
10. Ifhumans didn’t evolve to laugh or smile, how would we express our happinessinstead?  Probably through other verbal indications and physical expressions. 
11. How manyromantic “things” or “flings” have you had? Enough to know what I’m not looking for.
12. What isyour paradise? unlimited access to media - e.g. music, movies, tv, books, etc. and a comfy place to listen/watch/read
13. What isyour favorite background noise? (Ex. Water dripping, people talking.) Fancy restaurants or reruns of television shows.
14. How manyhearts do you think you have broken? Probably quite a few. At least four in the past two years. 
15. What isthe most important thing about electronics? What does this say about you?  That they can handle multiple things at once. It says that I am a multitasker.
16. Why dopeople care about celebrities? Do you care about celebrities? Because sometimes it’s nice to escape to a world where the only real problems are botched nose jobs and whether or not someone should have worn something. I care in that I’ve got my favorite celeb crushes (Hi, Alexander Skarsgard!)
17. What isthe most annoying thing someone can do to you? Act like they know what they’re doing when they obviously don’t. Also act like I can’t do something because I’m a girl. 
18. Do youoverexaggerate? What are the pros and cons of this? not really. I tend to encounter so much weirdness that I don’t have to. Pros: I’m a good story teller. Cons: people sometimes think I am exaggerating. 
19. Have youplayed any instruments before? Which instruments? I can play three elvis songs on the piano.
20. Do youlike taking selfies? Why or why not? Yup! Because I’m self centered as hell. 
21. List 3things you like about yourself? 1. Great hair; 2. Smart; 3. Loud.
22. What isthe best advice someone has ever given you? “If the worst thing that happens today is that you mess up on the radio, it’s been a good day.”
23. Do youhave what it takes to raise a child? Why or why not? Yeah not  a big fan of small children. 
24. How doyou cheer yourself up after a bad day? Television. 
25. When wasthe last time you felt awkward? Truly awkward? I somehow ended up sitting in on a male officers yearly physical exam results last year, because no one thought to leave the female explorer in the waiting room or make her wait in the hall. Homeboy was in prime health though.  
26. Are youintroverted or extroverted? Or a mixture of both? definitely an extrovert.
27. Whatconstitutes a good friend? Being invested, but not clingy.
28. Wouldyou rather have a lot of friends to hang out with or just one best friend? Depends. I have a super ultra best friend, but I also will talk to anything that moves, so I generally need to be around people.
29. In aregular day, what do you not want to hear? “How will the detectives/officers/males in general be able to get any work done with you looking so cute?” 
30. What isyour dream job? FBI SWAT Medic or Television critic
31. Is itbetter to be lazy but smart or hardworking but unintelligent? The former.
32. What isa truth about yourself that others find hard to believe? I graduated high school at sixteen and I’ll have my bachelor’s at twenty.
33. Whathave you always wondered about the other gender? Does the penis bounce around when you run/go up stairs/move in general like breasts do? 
34. Whichfantasy world would you like to visit the most? Does Bludhaven count? Because I’m totally down to be a cop with Dick Grayson. 
35. Describethe worst friend you have ever befriended. I tend to inadvertently pick up cling-ons, so I spend a lot of time trying to look like I really have to be somewhere on campus whenever I see someone who thinks we’re besties. 
36. Imaginethat you have switched bodies with someone you don’t know. You can’t switchback. What do you do? Are you sure I can’t switch back? Because I think I might be hunting down shadowman and making him change me back. 
37. If youfound the recipe for immortality, would you sell it or would you burn it? Is keep it for my own personal gain an option? Can I develop it into a serum of sorts to deal with life-threatening illnesses and injuries?
38. What isthe most important, applicable class you have ever taken? Statistics in high school and First Responder. I am so good at calling 911. 
39. Name thelast book you read. One Bullet Away by Nathaniel Fick. 
40. Imaginethat you are unable to express emotion. How would this affect your world? Ha! Jokes on you I’m already an ice queen with no feelings!
41. When wasthe last time you made the first move? Last spring, on the hot Marine in my advanced nonfiction class. Got his number and everything. 
42. What isyour opinion on electronic music such as dubstep or trap? I like Deee-Lite, does that count? 
43. What wasthe last movie you watched? Blue Ridge Fall. Chris Isaak is great. 
44. Do youlike and appreciate your life? I do.
45. Do youlike and appreciate yourself? I do. 
46. When wasthe last time you cried? ???? Good question. 
47. What areyou scared of? Not a huge fan of fire.
48. What isthe most embarrassing, cringe-worthy thing you have ever done? same story as last time. 
49. What aresome of your hobbies? I knit! I’m working on a shawl right now.
50. What isa superficial yet annoying mistake you constantly make? Confusing the boxes on J4 (paperwork) because I’m not paying attention. 
51. Are youa good friend? What makes you a good friend? If not, what makes you a badfriend? I think I’m a good friend. I’m pretty loyal once I think you’ve earned it. 
52. Do youhonestly learn from your mistakes? Yes. At least I try. 
53. Whathave you learned the hard way? The running boards/ any protruding edge on SWAT trucks are not fun to collide with. 
54. What isthe most important thing to have in order to attain happiness? A Happy outlook.
55. Whichmedium do you use for expressing your artistic emotions? (Singing, writing,etc.) I write, and I like to sing in my car, and I knit. 
56. Are youa creative or a logical thinker? I’m logically creative.
57. What isthe smartest thing you have ever done? Bought a unique antenna ball. I always know which white four door sedan is mine. 
58. What isyour ideal meal? Sushi. or any meal shared with people who make me laugh.
59. What isthe worst thing someone could do on a date? Say “I hate cops” and/or hold me vaguely hostage for ten hours. 
60. Do youlike animals? Which kind is your favorite? Can I say Porgs? Does that count? I also like doggos.
61. If youcould turn one legal thing illegal, what would it be? Riding your bike on the sidewalks around campus.
62. Do youhave any guilty pleasures? Bad television. 
63. What isthe best thing that the internet has ever created? Dog videos. And the ability to look things up in seconds. 
64. Do youlike playing video games? Which video games? Uhhhh I still play the nintendo ds lego games. I like the batman one. 
65. What isyour opinion on beauty in today’s society? It’s so unique! Like there are so many ways to be beautiful even on just a superficial level. 
66. Are youa morning person? When do you usually wake up? Yes! I try to be up and moving by 8am. 
67. Do youhave a favorite Disney movie? Character? either Sleeping Beauty or The Princess and the Frog. I love love love Judy Hopps from Zootopia and I’m quite partial to Prince Phillip. 
68. Wouldyou rather live in the city or in the countryside? 110% City Girl.
69. Wouldyou rather live near the ocean or in the mountains? Ocean.
70. What arethe best things about winter? Sweaters and cocoa and fluffy things. 
71. Whatscares you most about the future? That I don’t know who will be there with me. 
72. Whatmakes you feel old? Being around fourteen-year-old explorers. 
73. How manyhours do you spend on the computer or phone on average? five? more if I have a lot of homework?
74. What aresome of your New Year’s resolutions? I don’t resolutions so much as goals. I’ve met most of them.
75. What isyour life story in 6 words? Why is this happening to me?
76. Describeyourself in one word. Loud
77. What badhabits do you do? Obsessive gum chewer.
78. Whatgenre of music do you listen to? A wide range of stuff. I’m really into Opera and Choral right now, but I’ve also listened to “Southern Nights” and “American Girl” on repeat today. 
79. Mostprominent childhood memory? Sunday Dinners with my family.
80. Imagineif you had an older brother. If you already have one, what is it like? If youdon’t, how would this change your life? I wouldn’t be the oldest, which means I couldn’t pull the oldest child card. 
81. Spiritanimal? Grizzly Bear
82. Do youbelieve in horoscopes? Sometimes. 
83. What isthe worst advice you’ve ever been given? any variation on “let things come to you”
84. List the3 most important people in your life right now. Sister, Mom, BFFL.
85. Favoritememory of your family. The last time my uncle came and visited.
86. What doyou look for in a relationship? Being treated with respect. Also a uniform (especially a USMC one) doesn’t hurt, but it’s not a deal breaker. 
87. Do youhave a role model? Why or why not? Yeah! But it’s more like I like the way people act or do things and I adopt those traits and things. 
88. What isyour opinion on social media? A good way to fuel the mild narcissism I try to keep quiet. Also good for amateur detective work. 
89. Are youa pessimist or an optimist? Aggressively optimistic.  
90. Listsome things that you think are overpriced? FEMALE TACTICAL ANYTHING.
91. What isyour worst memory or creepiest experience? Sixteenth Birthday.
92. Whatsuperpower would ruin the world? Invisibility. 
93. What issomething you swore you would never do when you grew up, but you did anyway? Go to college in my hometown. 
94. Whatlessons have you learned from movies and which movies were they? You can be both a princess and a total badass (Star Wars); It doesn’t matter where you came from, you can be a hero/achieve your dreams/make things better (Pretty much all of the Disney movies). Ohana isn’t necessarily the people you’re related to (Lilo and Stitch). 
95. If youcould travel anywhere, where would you go? Right now? Disneyland Paris.
96. How doyou approach people? Confidently. 
97. What isyour opinion on first impressions? Usually pretty accurate, barring some wild exigent circumstances. 
98. What aresome things you did as a child that you no longer do? Wear frosted lip gloss. 
99. Whatlanguages can you speak? English, Spanish, Regional Law Enforcement, and I’ve got a basic understanding of Old English.
100. What doyou think society will be like in 30 years? Better. 
101. What doyou do on your lazy days? Watch TV. 
102. Whatended your last relationship? A move to Colorado. 
103.Favorite food? Sushi. and Pizza.
104. What isthe most terrifying dream you’ve ever had? I dreamed I was living on a house boat and I was pregnant. I woke up terrified and thinking ‘How am I going to be a cop if I’m pregnant?!’
105. Whenwas the last time you got seriously angry? Anytime my co-lieutenant does anything. 
106. Whatwas the last friendship you broke? I’m not really sure. I try not to burn bridges. 
107. Do youhave any pet peeves? Wrinkled clothes and mismatched socks. 
108. Who wasthe last person you gave a hug to? My sister? 
109. Whenwas the last time you got seriously stressed? Trying to finish a profile for my nonfiction class last month.
110. Whatpart of your personality do you want to change? I can be a little cold. 
111. Who isthe most positively influential person in your life right now? One of the detectives I work with.
112. What isyour biggest motivation? Fear of failure.
113. Whatdid you want to be when you were little? A Triple Threat.
114. Whatare some things that you are good at? Knitting, being the cutest explorer, making breakfast foods, basic makeup. 
115. What isone thing you want to be good at? winged eyeliner. 
116. Whatdistracts you the most, especially when you’re trying to work? My sister. In the best way, though, She’s always sending me silly memes or dog pics. 
117. Howimportant is privacy to you? Really important. 
118. If youcould create one social norm, what would it be? Disney music being acceptable on the radio. 
119. What’sthe craziest lie you’ve ever told? I once convinced a boy scout troop that I was British. 
120. Whatstory do you like to tell about yourself at parties? I like telling the story about the time a guy shoved meth up his butt in the back of the squad car I was riding in on a ride along. It’s a crowd pleaser for sure. 
121. What isthe lamest thing that you have seen someone do? Tell a class that he enjoyed going to the gym as his icebreaker fun fact. 
122. What isthe stupidest thing you’ve done to impress someone? Gave him a bunch of Junior Officer stickers. (it worked, though)
123. What isyour morning routine? Tumble out of bed, stumble to the kitchen, pour myself a cup of ambition. 
124. What’sthe last thing you did that is worth remembering? I bought some professional clothes beyond just a white button up and black pencil skirt. 
125. Ifkarma was coming back to you, would it help or hurt you? I think it would help.
126. What isyour opinion on playing “hard to get?” You should probably just be straight with people.
127. Whatare the pros and cons of straightforward? Pros: no bullshit! Cons: People think you are “scary” or “brash.”
128. What doyou consider “leading” someone on? Lying about your intentions.
129. Are youthe friendzoner or the friendzoned? I’ve been both. 
130. What doyou admire most about your friends? They are so kind. 
131. What doyou admire most about your family? We are a resourceful and resilient bunch.
132. What isyour opinion on “going with the flow?” Something I have to work on.
133. Do youenjoy talking or listening? Both.
134. When isit time to end a friendship? When it’s unhealthy for either party. 
135. What isthe worst excuse you’ve ever come up with? “My mom won’t let me give my phone number out” I was fifteen.
136. If GPAdidn’t matter, what courses would you have taken? More science and physics classes. And theatre. And art. And writing classes. 
137. Whatare your favorite baby names? my current favorite baby is named Finley…
138. Whenwas the last time you had a deep conversation with someone? I talked with a detective about some of my ambitions.
139. Whatinstantly ruins a conversation? Felony Tones (ha) and ignorance. 
140. Biggestturn ons and turn on offs. On - Nice smiles; Off - “You’re too pretty to be a cop”
141. Biggestdisappointment - Not making Captain. 
142. Do youhave any self-restraint? Yes, unless it is with puppies and then no. 
143. Whendid you last do something outside of your comfort zone? I did something with the permission of one advisor and his supervisor that was in direct opposition to what my main advisor wanted. It worked out in my favor though. 
144. Prizedpossession(s)? Four gold medals from competing in SkillsUSA in high school, some photo boxes, my record collection, my playing card collection. 
145. What isyour opinion on second chances? Okay when they are truly deserved.
146. Text orcall? Text. Or call. Whatever. I’ll likely ignore you either way.
147. What doyou like about the 21st century? I am not socially obligated to wear a skirt if I don’t want to. 
148. Whatadvice would you give to yourself 5 years ago? It’s okay to change your mind. Do what’s going to make you happy. Kiss that boy. 
149. Howorganized are you? Pretty organized, when I have time to sit and organize. 
150.Favorite mode of transportation. Bearcat G3. 
 Thanks for being nosy!
0 notes
techscopic · 6 years
Text
How to Build a Kubernetes Cluster with ARM Raspberry Pi then run .NET Core on OpenFaas
First, why would you do this? Why not. It’s awesome. It’s a learning experience. It’s cheaper to get 6 pis than six “real computers.” It’s somewhat portable. While you can certainly quickly and easily build a Kubernetes Cluster in the cloud within your browser using a Cloud Shell, there’s something more visceral about learning it this way, IMHO. Additionally, it’s a non-trivial little bit of power you’ve got here. This is also a great little development cluster for experimenting. I’m very happy with the result.
By the end of this blog post you’ll have not just Hello World but you’ll have Cloud Native Distributed Containerized RESTful microservice based on ARMv7 w/ k8s Hello World! as a service. (original Tweet).
Not familiar with why Kubernetes is cool? Check out Julia Evans’ blog and read her K8s posts and you’ll be convinced!
Hardware List (scroll down for Software)
Here’s your shopping list. You may have a bunch of this stuff already. I had the Raspberry Pis and SD Cards already.
6 – Raspberry Pi 3 – I picked 6, but you should have at least 3 or 4.
One Boss/Master and n workers. I did 6 because it’s perfect for the power supply, perfect for the 8-port hub, AND it’s a big but not unruly number.
6 – Samsung 32Gb Micro SDHC cards – Don’t be too cheap.
Faster SD cards are better.
2×6 – 1ft flat Ethernet cables – Flat is the key here.
They are WAY more flexible. If you try to do this with regular 1ft cables you’ll find them inflexible and frustrating. Get extras.
1 – Anker PowerPort 6 Port USB Charging Hub – Regardless of this entire blog post, this product is amazing.
It’s almost the same physical size as a Raspberry Pi, so it fits perfect at the bottom of your stack. It puts out 2.4a per port AND (wait for it) it includes SIX 1ft Micro USB cables…perfect for running 6 Raspberry Pis with a single power adapter.
1 – 7 layer Raspberry Pi Clear Case Enclosure – I only used 6 of these, which is cool.
I love this case, and it looks fantastic.
1 – Black Box USB-Powered 8-Port Switch – This is another amazing and AFAIK unique product.
An overarching goal for this little stack is that it be easy to move around and set up but also to power. We have power to spare, so I’d like to avoid a bunch of “wall warts” or power adapters. This is an 8 port switch that can be powered over a Raspberry Pi’s USB. Because I’m given up to 2.4A to each micro USB, I just plugged this hub into one of the Pis and it worked no problem. It’s also…wait for it…the size of a Pi. It also include magnets for mounting.
1 – Some Small Router – This one is a little tricky and somewhat optional.
You can just put these Pis on your own Wifi and access them that way, but you need to think about how they get their IP address. Who doles out IPs via DHCP? Static Leases? Static IPs completely?
The root question is – How portable do you want this stack to be? I propose you give them their own address space and their own router that you then use to bridge to other places. Easiest way is with another router (you likely have one lying around, as I did. Could be any router…and remember hub/switch != router.
Here is a bad network diagram that makes the point, I think. The idea is that I should be able to go to a hotel or another place and just plug the little router into whatever external internet is available and the cluster will just work. Again, not needed unless portability matters to you as it does to me.
You could ALSO possibly get this to work with a Travel Router but then the external internet it consumed would be just Wifi and your other clients would get on your network subnet via Wifi as well. I wanted the relative predictability of wired.
What I WISH existed was a small router – similar to that little 8 port hub – that was powered off USB and had an internal and external Ethernet port. This ZyXEL Travel Router is very close…hm…
Optional – Pelican Case if you want portability. I’ll see what airport security thinks. O_O
Optional – Tiny Keyboard and Mouse – Raspberry Pis can put out about 500mA per port for mice and keyboards. The number one problem I see with Pis is not giving them enough power and/or then having an external device take too much and then destabilize the system. This little keyboard is also a touchpad mouse and can be used to debug your Pi when you can’t get remote access to it. You’ll also want an HMDI cable occasionally.
You’re Rich – If you have money to burn, get the 7″ Touchscreen Display and a Case for it, just to show off htop in color on one of the Pis.
Dodgey Network Diagram
Disclaimer
OK, first things first, a few disclaimers.
The software in this space is moving fast. There’s a non-zero chance that some of this software will have a new version out before I finish this blog post. In fact, when I was setting up Kubernetes, I created a few nodes, went to bed for 6 hours, came back and made a few more nodes and a new version had come out. Try to keep track, keep notes, and be aware of what works with what.
Next, I’m just learning this stuff. I may get some of this wrong. While I’ve built (very) large distributed systems before, my experience with large orchestrators (primarily in banks) was with large proprietary ones in Java, C++, COM, and later in C#, .NET 1.x,2.0, and WCF. It’s been really fascinating to see how Kubernetes thinks about these things and comparing it to how we thought about these things in the 90s and very early 2000s. A lot of best practices that were HUGE challenges many years ago are now being codified and soon, I hope, will “just work” for a new generation of developer. At least another full page of my resume is being marked [Obsolete] and I’m here for it. Things change and they are getting better.
Software
Get your Raspberry PIs and SD cards together. Also bookmark and subscribe to Alex Ellis’ blog as you’re going to find yourself there a lot. He’s the author of OpenFaas, which I’ll be using today and he’s done a LOT of work making this experiment possible. So thank you Alex for being awesome! He has a great post on how Multi-stage Docker files make it possible to effectively use .NET Core on a Raspberry Pi while still building on your main machine. He and I spent a few late nights going around and around to make this easy.
Alex has put together a Gist we iterated on and I’ll summarize here. You’ll do these instructions n times for all machines.
You’ll do special stuff for the ONE master/boss node and different stuff for the some number of worker nodes.
ADVANCED TIP! If you know what you’re doing Linux-wise, you should save this excellent prep.sh shell script that Alex made, then SKIP to the node-specific instructions below. If you want to learn more, do it step by step.
ALL NODES
Burn Jessie to a SD Card
You’re going to want to get a copy of Raspbian Jesse Lite and burn it to your SD Cards with Etcher, which is the only SD Card Burner you need. It’s WAY better than the competition and it’s open source.
You can also try out Hypriot and their “optimized docker image for Raspberry Pi” but I personally tried to get it working reliably for a two days and went back to Jesse. No disrespect.
Creating an empty file called “ssh” before you put the card in the Raspberry Pi
SSH into the new Pi
I’m on Windows so I used WSL (Ubuntu) for Windows that lets me SSH and do run Linux natively.
ssh pi@raspberrypi
Login pi, password raspberry.
Change the Hostname
I ran
rasbpi-config
then immediately reboot with “sudo reboot”
Install Docker
curl -sSL get.docker.com | sh && \ sudo usermod pi -aG docker
Disable Swap. Important, you’ll get errors in Kuberenetes otherwise
sudo dphys-swapfile swapoff && \ sudo dphys-swapfile uninstall && \ sudo update-rc.d dphys-swapfile remove
Go edit /boot/cmdline.txt with your favorite editor, or use
sudo nano /boot/cmdline
and add this at the very end. Don’t press enter.
cgroup_enable=cpuset cgroup_enable=memory
Install Kubernetes
curl -s http://ift.tt/22fimui | sudo apt-key add - && \ echo "deb http://ift.tt/2f7PUy5 kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \ sudo apt-get update -q && \ sudo apt-get install -qy kubeadm
MASTER/BOSS NODE
After ssh’ing into my main node, I used /ifconfig eth0 to figure out what the IP adresss was. Ideally you want this to be static (not changing) or at least a static lease. I logged into my router and set it as a static lease, so my main node ended up being 192.168.170.2, and .1 is the router itself.
Then I initialized this main node
sudo kubeadm init --apiserver-advertise-address=192.168.170.2
This took a WHILE. Like 10-15 min, so be patient.
Kubernetes uses this admin.conf for a ton of stuff, so you’re going to want a copy in your $HOME folder so you can call “kubectl” easily later, copy it and take ownership.
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
When this is done, you’ll get a nice print out with a ton of info and a token you have to save. Save it all. I took a screenshot.
WORKER NODES
Ssh into your worker nodes and join them each to the main node. This line is the line you needed to have saved above when you did a kubectl init.
kubeadm join --token d758dc.059e9693bfa5 192.168.170.2:6443 --discovery-token-ca-cert-hash sha256:c66cb9deebfc58800a4afbedf0e70b93c086d02426f6175a716ee2f4d
Did it work?
While ssh’ed into the main node – or from any networked machine that has the admin.conf on it – try a few commands.
Here I’m trying “kubectl get nodes” and “kubectl get pods.”
Note that I already have some stuff installed, so you’ll want try “kubectl get pods –namespace kube-system” to see stuff running. If everything is “Running” then you can finish setting up networking. Kubernetes has fifty-eleven choices for networking and I’m not qualified to pick one. I tried Flannel and gave up and then tried Weave and it just worked. YMMV. Again, double check Alex’s Gist if this changes.
kubectl apply -f http://ift.tt/2qJxB6N
At this point you should be ready to run some code!
Hello World…with Markdown
Back to Alex’s gist, I’ll try this “markdownrender” app. It will take some Markdown and return HTML.
Go get the function.yml from here and create the new app on your new cluster.
$ kubectl create -f function.yml $ curl -4 http://localhost:31118 -d "# test" <p><h1>test</h1></p>
This part can be tricky – it was for me. You need to understand what you’re doing here. How do we know the ports? A few ways. First, it’s listed as nodePort in the function.yml that represents the desired state of the application.
We can also run “kubectl get svc” and see the ports for various services.
pi@hanselboss1:~ $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE alertmanager NodePort 10.103.43.130 <none> 9093:31113/TCP 1d dotnet-ping ClusterIP 10.100.153.185 <none> 8080/TCP 1d faas-netesd NodePort 10.103.9.25 <none> 8080:31111/TCP 2d gateway NodePort 10.111.130.61 <none> 8080:31112/TCP 2d http-ping ClusterIP 10.102.150.8 <none> 8080/TCP 1d kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d markdownrender NodePort 10.104.121.82 <none> 8080:31118/TCP 1d nodeinfo ClusterIP 10.106.2.233 <none> 8080/TCP 1d prometheus NodePort 10.98.110.232 <none> 9090:31119/TCP 2d
See those ports that are outside:insider? You can get to markdownrender directly from 31118 on an internal IP like localhost, or the main/master IP. Those 10.x.x.x are all software networking, you can not worry about them. See?
pi@hanselboss1:~ $ curl -4 http://ift.tt/2zWjCfR -d "# test" <h1>test</h1> pi@hanselboss1:~ $ curl -4 http://ift.tt/2xuMdHf -d "# test" curl: (7) Failed to connect to 10.104.121.82 port 31118: Network is unreachable
Can we access this cluster from another machine? My Windows laptop, perhaps?
Access your Raspberry Pi Kubernetes Cluster from your Windows Machine (or elsewhere)
I put KubeCtl on my local Windows machine put it in the PATH.
I copied the admin.conf over from my Raspberry Pi. You will likely use scp or WinSCP.
I made a little local batch file like this. I may end up with multiple clusters and I want it easy to switch between them.
SET KUBECONFIG=”C:\users\scott\desktop\k8s for pi\admin.conf
Once you have Kubectl on another machine that isn’t your Pi, try running “kubectl proxy” and see if you can hit your cluster like this. Remember you’ll get weird “Connection refused” if kubectl thinks you’re talking to a local cluster.
Here you can get to localhost:8001/api and move around, then you’ve successfully punched a hole over to your cluster (proxied) and you can treat localhost:8001 as your cluster. So “kubectl proxy” made that possible.
If you have WSL (Windows Subsystem for Linux) – and you should – then you could also do this and TUNNEL to the API. But I’m going to get cert errors and generally get frustrated. However, tunneling like this to other apps from Windows or elsewhere IS super useful. What about the Kubernetes Dashboard?
~ $ sudo ssh -L 8001:10.96.0.1:443 [email protected]
I’m going to install the Kubernetes Dashboard like this:
kubectl apply -f http://ift.tt/2xudwS6
Pay close attention to that URL! There are several sites out there that may point to older URLs, non ARM dashboard, or use shortened URLs. Make sure you’re applying the ARM dashboard. I looked here http://ift.tt/2zWjCMT.
Notice I’m using the “alternative” dashboard. That’s for development and I’m saying I don’t care at all about security when accessing it. Be aware.
I can see where my Dashboard is running, the port and the IP address.
pi@hanselboss1:~ $ kubectl get svc --namespace kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 2d kubernetes-dashboard ClusterIP 10.98.2.15 <none> 80/TCP 2d
NOW I can punch a hole with that nice ssh tunnel…
~ $ sudo ssh -L 8080:10.98.2.15:80 [email protected]
I can access the Kubernetes Dashboard now from my Windows machine at http://localhost:8080 and hit Skip to login.
Do note the Namespace dropdown and think about what you’re viewing. There’s the kube-system stuff that manages the cluster
Adding OpenFaas and calling a serverless function
Let’s go to the next level. We’ll install OpenFaas – think Azure Functions or Amazon Lambda, except for your own Docker and Kubernetes cluster. To be clear, OpenFaas is an Application that we will run on Kubernetes, and it will make it easier to run other apps. Then we’ll run other stuff on it…just some simple apps like Hello World in Python and .NET Core. OpenFaas is one of several open source “Serverless” solutions.
Do you need to use OpenFaas? No. But if your goal is to write a DoIt() function and put it on your little cluster easily and scale it out, it’s pretty fabulous.
Remember my definition of Serverless…there ARE servers, you just don’t think about them.
Serverless Computing is like this – Your code, a slider bar, and your credit card.
Let’s go.
.NET Core on OpenFaas on Kubernetes on Raspberry Pi
I ssh’ed into my main/master cluster Pi and set up OpenFaas:
git clone http://ift.tt/2eHgAFS && cd faas-netes kubectl apply -f faas.armhf.yml,rbac.yml,monitoring.armhf.yml
Once OpenFaas is installed on your cluster, here’s Alex’s great instructions on how to setup your first OpenFaas Python function, so give that a try first and test it. Once we’ve installed that Python function, we can also hit http://ift.tt/2zWjFIz (where that’s your main Boss/Master’s IP) and see it the OpenFaas UI.
OpenFaas and the “faas-netes” we setup above automates the build and deployment of our apps as Docker Images to Kuberetes. It makes the “Developer’s Inner Loop” simpler. I’m going to make my .NET app, build, deploy, then change, build, deploy and I want it to “just work” on my cluster. And later, and I want it to scale.
I’m doing .NET Core, and since there is a runtime for .NET Core for Raspberry Pi (and ARM system) but no SDK, I need to do the build on my Windows machine and deploy from there.
Quick Aside: There are docker images for ARM/Raspberry PI for running .NET Core. However, you can’t build .NET Core apps (yet?) directly ON the ARM machine. You have to build them on an x86/x64 machine and then get them over to the ARM machine. That can be SCP/FTPing them, or it can be making a docker container and then pushing that new docker image up to a container registry, then telling Kubernetes about that image. K8s (cool abbv) will then bring that ARM image down and run it. The technical trick that Alex and I noticed was of course that since you’re building the Docker image on your x86/x64 machine, you can’t RUN any stuff on it. You can build the image but you can’t run stuff within it. It’s an unfortunate limitation for now until there’s a .NET Core SDK on ARM.
What’s required on my development machine (not my Raspberry Pis?
I installed KubeCtl (see above) in the PATH
I installed OpenFaas’s  Faas-CLI command line and put it in the PATH
I installed Docker for Windows. You’ll want to make sure your machine has some flavor of Docker if you have a Mac or Linux machine.
I ran docker login at least once.
I installed .NET Core from http://dot.net/core
Here’s the gist we came up with, again thanks Alex! I’m going to do it from Windows.
I’ll use the faas-cli to make a new function with charp. I’m calling mine dotnet-ping.
faas-cli new --lang csharp dotnet-ping
I’ll edit the FunctionHandler.cs to add a little more. I’d like to know the machine name so I can see the scaling happen when it does.
using System; using System.Text; namespace Function { public class FunctionHandler { public void Handle(string input) { Console.WriteLine("Hi your input was: "+ input + " on " + System.Environment.MachineName); } } }
Check out the .yml file for your new OpenFaas function. Note the gateway IP should be your main Pi, and the port is 31112 which is OpenFaas.
I also changed the image to include “shanselman/” which is my Docker Hub. You could also use a local Container Registry if you like.
provider: name: faas gateway: http://ift.tt/2xtjend functions: dotnet-ping: lang: csharp handler: ./dotnet-ping image: shanselman/dotnet-ping
Head over to the ./template/csharp/Dockerfile and we’re going to change it. Ordinarily it’s fine if you are publishing from x64 to x64 but since we are doing a little dance, we are going to build and publish the .NET apps as linux-arm from our x64 machine, THEN push it, we’ll use a multi stage docker file. Change the default Docker file to this:
FROM microsoft/dotnet:2.0-sdk as builder ENV DOTNET_CLI_TELEMETRY_OPTOUT 1 # Optimize for Docker builder caching by adding projects first. RUN mkdir -p /root/src/function WORKDIR /root/src/function COPY ./function/Function.csproj . WORKDIR /root/src/ COPY ./root.csproj . RUN dotnet restore ./root.csproj COPY . . RUN dotnet publish -c release -o published -r linux-arm ADD http://ift.tt/2zVAP98 /usr/bin/fwatchdog RUN chmod +x /usr/bin/fwatchdog FROM microsoft/dotnet:2.0.0-runtime-stretch-arm32v7 WORKDIR /root/ COPY --from=builder /root/src/published . COPY --from=builder /usr/bin/fwatchdog / ENV fprocess="dotnet ./root.dll" EXPOSE 8080 CMD ["/fwatchdog"]
Notice a few things. All the RUN commands are above the second FROM where we take the results of the first container and use its output to build the second ARM-based one. We can’t RUN stuff because we aren’t on ARM, right?
We use the Faas-Cli to build the app, build the docker container, AND publish the result to Kubernetes.
faas-cli build -f dotnet-ping.yml --parallel=1 faas-cli push -f dotnet-ping.yml faas-cli deploy -f dotnet-ping.yml --gateway http://ift.tt/2xtjend
And here is the dotnet-ping command running on the pi, as seen within the Kubernetes Dashboard.
I can then scale them out like this:
kubectl scale deploy/dotnet-ping --replicas=6
And if I hit it multiple times – either via curl or via the dashboard, I see it’s hitting different pods:
If I want to get super fancy, I can install Grafana – a dashboard manager by running locally in my machine on port 3000
docker run -p 3000:3000 -d grafana/grafana
Then I can add OpenFaas a datasource by pointing Grafana to http://ift.tt/2zVaKqu which is where the Prometheus metrics app is already running, then import the OpenFaas dashboard from the grafana.json file that is in the I cloned it from.
Super cool. I’m going to keep using this little Raspberry Pi Kubernetes Cluster to learn as I get ready to do real K8s in Azure! Thanks to Alex Ellis for his kindness and patience and to Jessie Frazelle for making me love both Windows AND Linux!
* If you like this blog, please do use my Amazon links as they help pay for projects like this! They don’t make me rich, but a few dollars here and there can pay for Raspberry Pis!
Sponsor: Check out JetBrains Rider: a new cross-platform .NET IDE. Edit, refactor, test and debug ASP.NET, .NET Framework, .NET Core, Xamarin or Unity applications. Learn more and download a 30-day trial!
© 2017 Scott Hanselman. All rights reserved.
      How to Build a Kubernetes Cluster with ARM Raspberry Pi then run .NET Core on OpenFaas syndicated from http://ift.tt/2wBRU5Z
0 notes