使用containerd作为容器运行k8s部署后端服务deployment样例

使用containerd作为容器运行k8s部署后端服务deployment样例

我把service和deployment都写在同一个yaml文件里面了。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: restfulweb # 部署的名称
  namespace: api # 部署到哪个命名空间
spec:
  replicas: 2  # 设置副本数量为2
  selector:
    matchLabels:
      app: restfulweb1 # 用于选择匹配的Pod标签
  template:
    metadata:
      labels:
        app: restfulweb1 # Pod的标签
    spec:
      containers:
      - name: restfulwebc # 容器名称
        image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import images
        # image: restfulapi:latest  # For image in docker
        imagePullPolicy: IfNotPresent # 镜像拉取策略,如果本地没有就拉取
        ports:
        - containerPort: 80 # 容器内部监听的端口
---
apiVersion: v1
kind: Service
metadata:
  name: restfulweb-service # 服务的名称
spec:
  externalTrafficPolicy: Cluster # 外部流量策略设置为集群
  selector:
    app: restfulweb1 # 用于选择匹配的Pod标签
  ports:
  - protocol: TCP # 使用TCP协议
    port: 5000 # 服务暴露的端口
    targetPort: 5000 # Pod中容器的端口
    nodePort: 30500 # 在每个Node上分配的端口,用于外部访问
  type: NodePort # 服务类型,使用NodePort

我的集群的CRI是containerd,所以我一开始很担心是否可以从docker仓库中拉取相对应镜像来起容器,所以先尝试从containerd仓库拉。

从containerd获取镜像

对应的配置如下:

image: docker.io/library/restfulapi:latest # For image in container, use ctr -n k8s.io images import restfulapi.tar to import images

但是需要提前从docker那里导出镜像然后再用下面ctr命令放进去containerd的仓库,需要注意的是一定要放在k8s.io的命令空间下面,不然是识别不到的。

ctr -n k8s.io images import restfulapi.tar

更多ctr命令的介绍,也可以看看我的这篇文章。
https://blog.csdn.net/HELLOWORLD2424/article/details/140834427

从docker仓库获取镜像

然后我再尝试直接从docker仓库去拉,docker没有命令空间的概念,这里会更简单,但是pod起的会比第一种方法慢,可能是因为镜像需要转换。

image: restfulapi:latest  # For image in docker
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 确认环境: - 操作系统:CentOS 7.6.1810 - Kubernetes版本:v1.26.0 2. 安装containerd: ``` yum -y install yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io systemctl start docker systemctl enable docker ``` 3. 配置containerd: 编辑文件`/etc/containerd/config.toml`,添加以下内容: ``` [plugins.cri.containerd] snapshotter = "overlayfs" [plugins.cri.containerd.default_runtime] runtime_type = "io.containerd.runtime.v1.linux" runtime_engine = "/usr/bin/runc" runtime_root = "" [plugins.cri.containerd.untrusted_workload_runtime] runtime_type = "io.containerd.runtime.v1.linux" runtime_engine = "/usr/bin/runsc" runtime_root = "/run/containerd/untrusted" ``` 4. 配置Kubernetes: 编辑文件`/etc/kubernetes/kubelet`,添加以下内容: ``` KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock ``` 5. 重启服务: ``` systemctl daemon-reload systemctl restart containerd kubelet ``` 6. 部署Kubernetes集群: 使用kubeadm工具部署Kubernetes集群,使用`--runtime-config=api/all=true`参数启用所有运行时配置: ``` kubeadm init --pod-network-cidr=10.244.0.0/16 --runtime-config=api/all=true ``` 7. 配置网络插件: 使用Flannel网络插件: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 8. 部署测试应用: ``` kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort ``` 9. 验证应用: 使用浏览器访问节点的IP地址和NodePort端口,应该可以看到nginx欢迎页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值