Ubuntu下K8S的学习记录-安装

字号
字体
版心
外观
天空

Ubuntu下K8S的学习记录-安装

I

Incohua

••1 分钟阅读

1. 环境#

环境统一配置:Ubuntu 24.01 LTS Server

节点统一命名:

  • Master: K8S-M-01
  • Pod: K8S-N-01
  • Pod: K8s-N-02

镜像安装后,进行的配置

1. 常用软件包安装#

bash
sudo apt update
sudo apt upgrade
sudo apt install curl wget vim nano

2. SSH 设置#

bash
sudo nano /etc/ssh/sshd_config
# 注释修改登录设置
PermitRootLogin yes

# 上传密钥
# 不存在时创建
mkdir -p ~/.ssh
chmod 700 ~/.ssh

echo "your_public_key_contents" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3. 设置主机名#

bash
sudo hostnamectl set-hostname new-hostname

2. 安装#

MicroK8s - Zero-ops Kubernetes for developers, edge and IoT | MicroK8sHigh availability Kubernetes with autonomous clusters. MicroK8s is the simplest production-grade conformant K8s for edge and IoT, on Linux, Windows, and macOS.microk8s.io

1. 在 Ubuntu 上安装 MicroK8s#

那么 snap 如何安装呢?

bash
snap install microk8s --classic

2. 配置用户权限#

bash
sudo usermod -aG microk8s $USER
sudo chown -f -R $USER ~/.kube

3. 集群初始化和节点配置#

1. 启用必要的插件#

bash
microk8s enable dns dashboard ingress

2. 在使用的控制节点上,添加其他节点#

bash
microk8s add-node

3. 在 node 上输入生成的命令以加入节点#

bash
microk8s join 192.168.124.151:25000/5059cfe99a1d46222e5f9bead2286f58/2d7f1f0c7e01

⚠️ 注意

每一个节点都要重新生成加入指令

4. 验证集群的状态#

1. 确保 MicroK 8 S 正在运行中#

bash
microk8s status --wait-ready

2. 检查节点和Pod状态:#

bash
microk8s kubectl get nodes
microk8s kubectl get pods --all-namespaces

3. 踩坑#

⚠️ 注意

安装 K8S 的时候,最好处于有代理的环境,否则可能导致部分组件安装失败

卸载 MicroK8s#

  1. 停止MicroK8s服务:

    bash
    microk8s stop
  2. 卸载MicroK8s: 使用Snap命令卸载MicroK8s,并清除所有相关数据。请注意,这将删除所有集群配置和数据。

    bash
    sudo snap remove microk8s --purge

重新安装 MicroK8s#

  1. 更新Snap包管理器(可选): 这可以确保您获得的是最新版本的MicroK8s。

    bash
    sudo snap refresh
  2. 安装MicroK8s: 使用Snap命令重新安装MicroK8s。

    bash
    sudo snap install microk8s --classic
  3. 添加用户到microk8s用户组: 为了避免每次运行microk8s命令时都使用sudo,将您的用户添加到microk8s组。

    bash
    sudo usermod -aG microk8s $USER
  4. 为用户启用访问权限: 为了访问.kube配置文件,使kubectl命令能正常运行:

    bash
    sudo chown -f -R $USER ~/.kube
  5. 启用MicroK8s服务: 启动MicroK8s并启用所需的插件,比如DNS和Dashboard。

    bash
    microk8s start
    microk8s enable dns dashboard
  6. 验证MicroK8s安装: 确保MicroK8s和所需服务正常运行。

    bash
    microk8s status --wait-ready

4. 设置#

1. 启用 Dashboard#

启用dashboard插件

bash
microk8s enable dashboard

获取访问 token 可选

bash
token=$(microk8s kubectl -n kube-system get secret | grep dashboard-token | awk '{print $1}')microk8s kubectl -n kube-system describe secret $token | grep token: | awk '{print $2}'
  1. 启动代理
bash
microk8s dashboard-proxy

2. 导出 Kubeconfig#

bash
microk8s config view --raw > $HOME/.kube/config  # 或其他位置

5. 创建你的第一个应用#

yaml
apiVersion: apps/v1 # API版本,apps/v1 表示用于Deployment
kind: Deployment # 资源类型,Deployment用于管理Pod的部署
metadata: # 元数据,包含Deployment的名称、标签等信息
  name: my-web-app # Deployment的名称
  labels: # Deployment的标签,用于识别和选择Deployment
    app: my-web-app # app标签,值为my-web-app
    tier: frontend # tier标签,值为frontend
spec: # Deployment的规格,定义Deployment的行为
  replicas: 3 # 副本数量,表示要运行的Pod数量
  selector: # 选择器,用于选择要管理的Pod
    matchLabels: # 匹配标签
      app: my-web-app # 匹配app标签为my-web-app的Pod
  template: # Pod模板,定义要创建的Pod的规格
    metadata: # Pod的元数据
      labels: # Pod的标签,必须与selector中的matchLabels匹配
        app: my-web-app # app标签,值为my-web-app
        tier: frontend # tier标签,值为frontend
    spec: # Pod的规格
      containers: # 容器列表
      - name: my-web-container # 容器名称
        image: nginx:latest # 容器镜像,使用最新的nginx镜像
        ports: # 容器端口列表
        - containerPort: 80 # 容器端口,nginx的默认端口
          name: http # 端口名称
        resources: # 资源限制和请求
          requests: # 资源请求,保证Pod能够获得的最小资源量
            cpu: 100m # 请求100毫核CPU
            memory: 256Mi # 请求256MiB内存
          limits: # 资源限制,Pod能够使用的最大资源量
            cpu: 200m # 限制为200毫核CPU
            memory: 512Mi # 限制为512MiB内存
        livenessProbe: # 存活探针,用于检查容器是否正常运行
          httpGet: # 通过HTTP GET请求进行探测
            path: / # 请求路径
            port: http # 端口名称,与上面定义的端口名称对应
          initialDelaySeconds: 5 # 初始延迟时间,启动后5秒开始探测
          periodSeconds: 10 # 探测周期,每10秒探测一次
        readinessProbe: # 就绪探针,用于检查容器是否准备好接收流量
          httpGet: # 通过HTTP GET请求进行探测
            path: / # 请求路径
            port: http # 端口名称,与上面定义的端口名称对应
          initialDelaySeconds: 5 # 初始延迟时间,启动后5秒开始探测
          periodSeconds: 10 # 探测周期,每10秒探测一次

---
apiVersion: v1 # API版本,v1表示核心API组
kind: Service # 资源类型,Service用于暴露Deployment
metadata: # 元数据
  name: my-web-service # Service的名称
spec: # Service的规格
  selector: # 选择器,用于选择要暴露的Pod
    app: my-web-app # 匹配app标签为my-web-app的Pod
  ports: # 端口列表
  - protocol: TCP # 协议
    port: 80 # Service端口
    targetPort: http # Pod端口名称,与Deployment中定义的端口名称对应
  type: LoadBalancer # Service类型,LoadBalancer会在云平台上创建一个负载均衡器

评论 0

按时间排序
评论还没开通
  1. 还没有评论。