k3d

  1. 使用k3d创建集群

centos-cluster 集群名称

1
2
3
4
5
6
7
k3d cluster create centos-cluster \
--servers 1 \
--agents 0 \
--k3s-arg "--kube-proxy-arg=conntrack-max-per-core=0@server:*" \
--image rancher/k3s:v1.21.1-k3s1 \
--wait \
--timeout 15m
1
2
3
4
[root@i-698afbd7cee176e6ce8a84dd yum]# k3d cluster list
NAME SERVERS AGENTS LOADBALANCER
centos-cluster 1/1 0/0 true
mycluster 1/1 0/0 true
  1. 创建yaml文件

vim deployment.yaml
``
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: centos:centos7 # 这里写你的镜像名
ports:
- containerPort: 81
command: [“/bin/bash”]
args: [“-itd”] # 另一种让容器保持运行的方法


apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
type: NodePort
ports:
- port: 81
targetPort: 81
selector:
app: my-app

``

  1. 执行部署
    kubectl apply -f deployment.yaml

成功输出
[root@i-698afbd7cee176e6ce8a84dd ~]# kubectl apply -f deployment.yaml deployment.apps/my-app created service/my-app created

清除命令

1. 删除旧的 Deployment 和 Service

kubectl delete deployment my-app
kubectl delete svc my-app

docker打包镜像

  1. 创建dockerfile文件
    ``

    使用最小的基础镜像

    FROM alpine:latest

安装必要的运行时库(如果需要)

RUN apk add –no-cache libc6-compat

复制你的 Linux 程序

COPY myapp /usr/local/bin/myapp

添加执行权限

RUN chmod +x /usr/local/bin/myapp

暴露端口(如果程序是网络服务)

EXPOSE 8080

直接运行程序(必须是前台进程)

CMD [“myapp”]
``

  1. 打包镜像
    docker build -t myapp:v1 .

docker ps 查看生成的镜像版本

  1. 添加本地镜像到cluster
    ``

    1. 先构建镜像

    docker build -t my-app:v1 .

2. 导入到 k3d 集群

k3d image import my-app:v1 -c centos-cluster # -c 指定你的集群名

查看导入的镜像是否在集群中

k3d image list -c centos-cluster

或直接查看 server 节点

docker exec k3d-centos-cluster-server-0 crictl images | grep my-app

3. 删除失败的 Pod 让其重新创建

kubectl delete pod my-app-7bf6575c9b-8674l

Deployment 会自动创建新的 Pod

``

  1. 查看日志信息
    ``

    查看 Pod 的日志

    kubectl logs my-app-7bf6575c9b-8674l

查看最后100行

kubectl logs –tail=100 my-app-7bf6575c9b-8674l

实时查看日志(类似 tail -f)

kubectl logs -f my-app-7bf6575c9b-8674l

查看带时间戳的日志

kubectl logs –timestamps my-app-7bf6575c9b-8674l
``

  1. 扩容操作
    ``

    将 nginx 从1个副本扩容到3个

    kubectl scale deployment nginx –replicas=3
    ``

6.🔄 滚动更新(同时更新所有副本)
当你修改镜像版本时,Kubernetes 会逐个更新 Pod:

bash

更新镜像版本,同时保持3个副本

kubectl set image deployment/nginx nginx=nginx:1.25

观察滚动更新过程

kubectl rollout status deployment/nginx

  1. 切换集群
    `` k3d cluster list

[root@i-698afbd7cee176e6ce8a84dd ~]# k3d cluster list
NAME SERVERS AGENTS LOADBALANCER
centos-cluster 1/1 0/0 true
mycluster 1/1 0/0 true

kubectl config use-context k3d-centos-cluster

centos-cluster 集群名称
``