wsl Ubuntu环境 创建 k8s集群

简介: wsl Ubuntu环境 创建 k8s集群

1.关闭swap

swapoff  -a

wsl这个命令没法关闭swap,需要用如下方法

#先cd到c盘,并创建.wslconfig文件
root@timer:/mnt/c/Users/xiaoqi# cat .wslconfig 
[wsl2]
swap=0 # 关闭swap
 
[network]
generateResolvConf = false # 解决域名解析失败的问题

cmd进入命令行

wsl --shutdown  关闭所有的虚拟机

再bash进入 wsl,swap已关闭

2.service更换成systemd

Ubuntu默认是service启动服务,需要改成systemd方式

首先安装 Systemd 相关的依赖

apt install -yqq fontconfig daemonize

创建一个如下所示的脚本文件

# Create the starting script for SystemD
vi /etc/profile.d/00-wsl2-systemd.sh
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
 
if [ -z "$SYSTEMD_PID" ]; then
   sudo /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
   SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi
 
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
    exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi

上面的脚本放置在 /etc/profile.d 目录下面,所以要让脚本生效,我们需要退出当前 session,重新进入即可,再次登录session,我们会发现系统PID为1的进程已经变成systemd。

这样就成功了

3.安装docker

apt-get install docker.io

如果需要配置为开机启动,可执行以下命令

systemcd enable docker
 
systemcd start docker
 
root@timer:~# docker --version
Docker version 20.10.14, build a224086

这样子的docker就成功了

注意:如果没有源,记得更换国内的源,然后运行下面的命令

apt-get update

apt-get upgrade

4.安装kubelet组件

使得 apt 支持 ssl 传输

apt-get update && apt-get install -y apt-transport-https

下载 gpg 密钥

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

添加 k8s 镜像源

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

更新源列表

apt-get update

安装 kubectl,kubeadm以及 kubelet

apt-get install -y kubelet kubeadm kubectl  --allow-unauthenticated

注意:这时候运行k8s 会运行不起来,如下状态说明已经安装成功了

5.使用kind安装k8s集群

下载kind二进制文件

?
curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/download/v0.8.1/kind-$(uname)-amd64
# 标记为可执行文件
chmod +x ./kind
# 移动到 PATH 目录下去
mv ./kind /usr/bin/

创建单节点集群

root@timer:~# kind create cluster --name wsl2-k8s
Creating cluster "wsl2-k8s" ...
 ? Ensuring node image (kindest/node:v1.18.2) ? 
 ? Preparing nodes ?  
 ? Writing configuration ? 
 ? Starting control-plane ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
 ? Installing CNI ? 
 ? Installing StorageClass ? 
Set kubectl context to "kind-wsl2-k8s"
You can now use your cluster with:
 
kubectl cluster-info --context kind-wsl2-k8s
 
Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community ?
root@timer:~# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                       NAMES
29aa95a61d87   kindest/node:v1.18.2   "/usr/local/bin/entr…"   3 minutes ago   Up 3 minutes   127.0.0.1:44671->6443/tcp   wsl2-k8s-control-plane
root@timer:~# docker ps |grep "kindest\/node"|awk '{print $1}'
29aa95a61d87
root@timer:~# docker cp 29aa95a61d87:/kind/bin/kubectl /usr/bin/
root@timer:~# kubectl get node
NAME                     STATUS   ROLES    AGE     VERSION
wsl2-k8s-control-plane   Ready    master   4m46s   v1.18.2

kube-apiserver的6443端口暴露到docker宿主机的44671端口

进入到node节点的容器内

如上所示,一个单节点的kubernetes集群就创建好了,那如何创建多节点kubernetes集群呢

创建多节点kubernetes集群

删除现有集群

# 获取创建的集群名字

kind get clusters

# 删除集群

kind delete cluster --name wsl2-k8s

创建一个3节点集群的配置文件

root@timer:~# cat kind-3nodes.yaml 
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

创建集群

root@timer:~# kind create cluster --name wsl2-3nodes --config ./kind-3nodes.yaml
Creating cluster "wsl2-3nodes" ...
 ? Ensuring node image (kindest/node:v1.18.2) ?
 ? Preparing nodes ? ? ?  
 ? Writing configuration ? 
 ? Starting control-plane ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
 ? Installing CNI ? 
 ? Installing StorageClass ? 
 ? Joining worker nodes ? 
Set kubectl context to "kind-wsl2-3nodes"
You can now use your cluster with:
 
kubectl cluster-info --context kind-wsl2-3nodes
 
Have a nice day! ?
 
root@timer:~# kubectl get nodes
NAME                        STATUS   ROLES    AGE   VERSION
wsl2-3nodes-control-plane   Ready    master   93s   v1.18.2
wsl2-3nodes-worker          Ready    <none>   51s   v1.18.2
wsl2-3nodes-worker2         Ready    <none>   51s   v1.18.2
 
root@timer:~# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                       NAMES
67bcbe67747d   kindest/node:v1.18.2   "/usr/local/bin/entr…"   2 minutes ago   Up 2 minutes                               wsl2-3nodes-worker
b5d9f5a30a98   kindest/node:v1.18.2   "/usr/local/bin/entr…"   2 minutes ago   Up 2 minutes                               wsl2-3nodes-worker2
74c504c4a04b   kindest/node:v1.18.2   "/usr/local/bin/entr…"   2 minutes ago   Up 2 minutes   127.0.0.1:39877->6443/tcp   wsl2-3nodes-control-plane

以上。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
4天前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
2天前
|
资源调度 Kubernetes 监控
Kubernetes 集群性能优化实践
【5月更文挑战第17天】在容器化和微服务架构日益普及的当下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随着集群规模的增长和业务复杂度的提升,性能优化成为确保系统稳定性与高效运行的关键。本文将深入探讨 Kubernetes 集群性能优化的策略与实践,覆盖从节点资源配置到网络通信优化,再到高效的资源调度机制,旨在为运维人员提供系统的优化路径和具体的操作建议。
|
3天前
|
存储 Java Serverless
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
|
4天前
|
并行计算 Ubuntu Docker
Docker环境Ubuntu20.04安装Python3.10版本
Docker环境Ubuntu20.04安装Python3.10版本
28 0
|
4天前
|
Kubernetes Ubuntu Docker
初始化k8s多结点集群
在Ubuntu22.04.3 LTS上设置k8s多节点集群,采用Docker v24.0.6、kubeadm v1.28和cir-dockerd v0.3.4。首先安装docker和cri-dockerd,更新k8s三件套至v1.28。然后,参照官方文档进行`kubeadm init`初始化集群,配置包括自定义镜像仓库、控制面端点等。成功初始化后,显示了相关证书和配置信息。最后,提供了一些额外的kubectl命令以管理节点。
14 1
|
4天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化策略
【5月更文挑战第14天】 在动态且不断扩展的云计算环境中,保持 Kubernetes 集群的高性能运行是一个挑战。本文将探讨一系列实用的性能优化措施,旨在帮助运维专家确保其容器化应用能在资源受限的情况下仍保持高效与稳定。通过分析 Kubernetes 的资源调度机制、存储和网络配置,我们提出了一套综合的性能调优框架,并结合实际案例,展示如何实施这些策略以提升集群的整体性能。
|
4天前
|
运维 Prometheus 监控
Kubernetes 集群监控与性能优化实践
【5月更文挑战第14天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的增加,监控系统的性能及稳定性变得至关重要。本文将深入探讨 Kubernetes 集群监控的重要性,介绍常用监控工具,并分享一系列针对集群性能优化的实践策略,帮助运维工程师确保服务的高可用性和优越性能。
|
4天前
|
Kubernetes 安全 API
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
Kubernetes学习-集群搭建篇(三) Node配置完善和API概述
|
4天前
|
存储 运维 Kubernetes
Kubernetes学习-集群搭建篇(一) 搭建Master结点
Kubernetes学习-集群搭建篇(一) 搭建Master结点
http://www.vxiaotou.com