https://github.com/IntrovertedFL/K3Sup-Windows10
WIP: Multi-master HA Kubernetes using K3Sup on Windows10/Server 2019
https://github.com/IntrovertedFL/K3Sup-Windows10
Last synced: 3 months ago
JSON representation
WIP: Multi-master HA Kubernetes using K3Sup on Windows10/Server 2019
- Host: GitHub
- URL: https://github.com/IntrovertedFL/K3Sup-Windows10
- Owner: IntrovertedFL
- Created: 2020-05-25T07:55:46.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-05-26T11:01:11.000Z (over 4 years ago)
- Last Synced: 2024-08-04T08:05:59.633Z (7 months ago)
- Homepage:
- Size: 279 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# Multi-master HA Kubernetes using K3Sup on Windows10/Server 2019 (video tutorial in the works)
### Software used:
* #### [Visual Studio Code](https://code.visualstudio.com/download)
* #### [openssh for windows ](https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse)
* #### [k3sup.exe](https://github.com/alexellis/k3sup/releases)
* #### [Chocolatey](https://chocolatey.org/install) (Windows Package Manager)
* #### [kubectl for windows](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows)
* #### 3 Virtual Machines# 1. Install K3Sup.exe
```
In this tutorial I created a folder K3sup @ C:\Users\username\k3sup\With Powershell (change username to you & take notice of version of k3sup 0.9.2)
Invoke-WebRequest https://github.com/alexellis/k3sup/releases/download/0.9.2/k3sup.exe -OutFile C:\Users\username\k3sup\K3sup.exe
``````
Open the Search, type in “env”, Click on "Edit Enviroment Variables for **Your Account**"At Top in "User Varibles" Click on the "Path" Variable line and select Edit.
On right Select "Browse" and select the folder we created that you added K3Sup.exe too.
```
```
PS C:\Users\username> k3sup
_ _____
| | _|___ / ___ _ _ _ __
| |/ / |_ \/ __| | | | '_ \
| < ___) \__ \ |_| | |_) |
|_|\_\____/|___/\__,_| .__/
|_|
Usage:
k3sup [flags]
k3sup [command]Available Commands:
app Install Kubernetes apps from helm charts or YAML files
help Help about any command
install Install k3s on a server via SSH
join Install the k3s agent on a remote host and join it to an existing server
update Print update instructions
version Print the versionFlags:
-h, --help help for k3sup
```# 2. Install/Configure 3 VM's (I have created 3 Ubuntu 18.04 Machines)
* #### Configure hosts
```
nano /etc/hostsSample
127.0.0.1 localhost
192.168.254.88 master.tribestudios.io master# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes ff02::2 ip6-allrouters
192.168.254.89 - node01.tribestudios.io node01
192.168.254.91 - node02.tribestudios.io node02
```* #### Enable Passwordless Sudo
```
sudo nano /etc/sudoers
Find the line which contains #includedir /etc/sudoers.d
Below that line add: username ALL=(ALL) NOPASSWD: ALL
```* #### Disable Swap
```
swapoff -a
nano /etc/fstab
Comment out line "#/dev/mapper/master--vg-swap_1 none swap sw 0 0"
reboot and make sure it's off.
do "free -h" and make sure swap says "0"
```# 3. Install/Configure OpenSSH on Windows Server 2019/Windows 10 1809
### A. Install OpenSSH
* #### Via Windows GUI
> https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse
* #### Via Powershell
> https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse#installing-openssh-with-powershell
### B. Install Git, vscode & Kubectl - (install choco here - https://chocolatey.org/install)
```
Make sure to run powershell as administratorchoco install git -y
choco install kubernetes-cli -y
choco install vscode -y
```
**Might need to reboot after all that.**### C. Generate SSH Key
* #### Open Visual Studio Code/Set default shell GitBash
```
username@Shed-Lappy MINGW64 ~
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/username/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/username/.ssh/id_rsa
Your public key has been saved in /c/Users/username/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:J3cCEe+05wZ5c0LF+BWCZ2NSnV7NI+2dMNvyzH9q4EY username@Shed-Lappy
The key's randomart image is:
+---[RSA 3072]----+
| o. o=+o+|
| o o.Xo==|
| . o *.X.=|
| + + o.=.|
| S O * * |
| + BE+ + |
| oo. .|
| .o . o|
| . ....|
+----[SHA256]-----+
```### C. Copy key to all 3 Machines/Also in GitBash
```
ssh-copy-id [email protected]
```
**Example Output**```
username@Shed-Lappy MINGW64 ~
$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/username/.ssh/id_rsa.pub"
The authenticity of host '192.168.254.88 (192.168.254.88)' can't be established.
ECDSA key fingerprint is SHA256:GE2bt679dcjb0X+Qo0Z33I54QDE8BVf8crSkhefcRTQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? Yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
```
### D. Disable Password Authentication on your Server (Optional)```
sudo nano /etc/ssh/sshd_configChange line #PasswordAuthentication Yes to
PasswordAuthentication no
sudo service ssh restart
```
# 4. Now all the fun we worked so hard for.* #### Create bootstrap.sh
**Again I created a folder for k3sup for simplicity**
```
username@Shed-Lappy MINGW64 ~
$ cd k3supusername@Shed-Lappy MINGW64 ~/k3sup
$ touch bootstrap.sh
```
**Paste into bootstrap.sh** (make sure to change ip's)```
#!/bin/bash
set -eexport NODE_1="192.168.254.88"
export NODE_2="192.168.254.89"
export NODE_3="192.168.254.91"
export USER=root# The first server starts the cluster
k3sup install \
--cluster \
--user $USER \
--ip $NODE_1# The second node joins
k3sup join \
--server \
--ip $NODE_2 \
--user $USER \
--server-user $USER \
--server-ip $NODE_1# The third node joins
k3sup join \
--server \
--ip $NODE_3 \
--user $USER \
--server-user $USER \
--server-ip $NODE_1
```
**Make sure we are remaining in gitbash**
```
username@Shed-Lappy MINGW64 ~/k3sup
$ ./bootstrap.sh
```
Once that is complete.
```
username@Shed-Lappy MINGW64 ~/k3sup
$ export KUBECONFIG=`pwd`/kubeconfigusername@Shed-Lappy MINGW64 ~/k3sup
$ kubectl get node
NAME STATUS ROLES AGE VERSION
node01 Ready master 54s v1.17.2+k3s1
master Ready master 81s v1.17.2+k3s1
node02 Ready master 35s v1.17.2+k3s1
```**Have Fun :)**