初始化wsl
wsl --install
通過幫助指令了解wsl用法
wsl.exe --help
wsl常用命令
安裝系統Ubuntu,先用wsl --list --online查看有哪些可用的系統
wsl.exe --install -d Ubuntu
wsl安裝centos7
在這個地址下載centos7: https://github.com/mishamosher/CentOS-WSL/releases
解壓了下載安裝包
在powershell里進入解壓后的centos7目錄
運行./Centos7.exe
就安裝了
報錯
WSL的CentOS7使用systemctl和service命令時報錯Failed to get D-Bus connection: Operation not permitted,
解決辦法是更換systemctl文件
mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
chmod +x /usr/bin/systemctl
查看已安裝的Linux子系統
wsl.exe -l -v
進入Linux子系統Ubuntu, 需要進入哪個,先用wsl.exe -l -v查看之后選擇
#只有一個默認子系統
wsl
#多個子系統 ,-d 指定某個
wsl -d Ubuntu
刪除 某個 wsl 子系統,例如 Ubuntu-20.04
wsl --unregister Ubuntu-20.04
powershell執行Linux命令
#只有一個默認子系統
wsl -e df -h
#執行某個子系統的命令
wsl -e
讓某個子系統關機
wsl -t Ubuntu #或者 wsl --terminate Ubuntu
顯示可以安裝的子系統
wsl --list --online
設置默認子系統
PS C:\Users\Administrator> wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 1
CentOS7 Running 1
PS C:\Users\Administrator> wsl -s CentOS7
PS C:\Users\Administrator> wsl -l -v
NAME STATE VERSION
* CentOS7 Running 1
Ubuntu Stopped 1
PS C:\Users\Administrator>
windows server 2022 安裝 windows terminal
參考https://www.thomasmaurer.ch/2021/05/install-windows-terminal-on-windows-server-2022/
命令
Invoke-WebRequest -Uri https://github.com/microsoft/terminal/releases/download/v1.7.1091.0/Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle -outfile Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle
#這種方式安裝,版本無法自動升級,需要手動升級
Add-AppxPackage -Path .\Microsoft.WindowsTerminal_1.7.1091.0_8wekyb3d8bbwe.msixbundle
PVE 安裝 wsl 2 子系統 報錯
修改 /etc/pve/qemu-server/101.conf (101還是102要看虛擬機的編號)
添加args 例如
args: -cpu 'host,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vpindex,+kvm_pv_eoi,+kvm_pv_unhalt,-kvm,-hypervisor'
參考https://forum.proxmox.com/threads/hyper-v-in-windows-guest-not-working-for-wsl2.87791/
wsl2 啟動docker支持
安裝docker Windows
https://www.docker.com/products/docker-desktop
下載安裝
關閉Windows自動更新
- run services.msc ,禁用windows update
- 調低這個
vs code 安裝插件搜索 Remote Development extension pack
安裝插件
vs code 調試 shell script
安裝插件bash debug
https://zbttl-github-io.vercel.app/vscode-diao-shi-bash-shell-jiao-ben/
安裝python 3.9
官網下載安裝
vs code插件安裝ansible
wsl2 通過KinD (kubernetes in docker) 安裝k8s集群
請參考: https://www.qikqiak.com/post/deploy-k8s-on-win-use-wsl2/
# 下載 KinD 二進制文件
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
# 標記為可執行文件
chmod +x ./kind
# 移動到 PATH 目錄下去
mv ./kind /usr/local/bin/
# TODO,記得提前下載安裝 kubectl 二進制文件
# 檢查是否設置了 KUBECONFIG 環境變量
echo $KUBECONFIG
# 檢查是否存在 .kube 目錄,不需要手動創建
ls $HOME/.kube
# 使用 kind 命令創建一個名為 wslk8s 的集群
kind create cluster --name wslk8s
# 創建后檢查 .kube 目錄
ls $HOME/.kube
# 創建一個3節點集群的配置文件 **注意以下配置只是看看而已,請參考下方帶ingress 轉發(映射到宿主機的80,443)的配置**
cat << EOF > kind-3nodes.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
#注意,該配置只是看看和參考,不帶端口映射和ingress
nodes:
- role: control-plane
- role: worker
- role: worker
EOF
# 使用配置文件創建新的集群
kind create cluster --name wslkindmultinodes --config ./kind-3nodes.yaml
# 獲取集群節點
kubectl get nodes
# 刪除現在的集群
kind delete cluster --name wslkindmultinodes
kind安裝k8s( 帶ingress 轉發(映射到宿主機的80,443))
#第一步,建立集群
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
#注意該配置拿來生產都沒問題,😄
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
EOF
#第二步 添加 ingress-nginx 控制器
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
#第三步,添加服務和ingress,驗證ingress是否工作正常
kubectl apply -f https://kind.sigs.k8s.io/examples/ingress/usage.yaml
#打開 http://宿主機IP/foo
#打開 http://宿主機IP/bar