k8s操作笔记

实操遇到问题好多,记录下。

image拉取失败,replicas被弃用

问题

# 执行run,显示replicas has been deprecated,因此不生效,只部署了1个实例 
kubectl run httpd-app --image=httpd --replicas=2
# 检查pods运行情况,READY列显示未就绪
kubectl get pods -n wide
# 检查运行细节,一直显示pulling
kubectl describe pods httpd-app

解决

  1. 删除之前的部署:
kubectl delete pods httpd-app
  1. 创建部署文件:
cd ~/k8s
nano nginx.yaml
  1. 粘贴下面内容进nginx.yaml:
# API 版本号
apiVersion: apps/v1
# 类型,如:Pod/ReplicationController/Deployment/Service/Ingress
kind: Deployment
metadata:
  # Kind 的名称
  name: nginx-app
spec:
  selector:
    matchLabels:
      # 容器标签的名字,发布 Service 时,selector 需要和这里对应
      app: nginx
  # 部署的实例数量
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # 配置容器,数组类型,说明可以配置多个容器
      containers:
      # 容器名称
      - name: nginx
        # 容器镜像
        image: nginx:1.17
        # 只有镜像不存在时,才会进行镜像拉取
        imagePullPolicy: IfNotPresent
        ports:
        # Pod 端口
        - containerPort: 80
  1. 创建:
kubectl apply -f nginx.yaml
  1. 检查:
kubectl get deployments
kubectl describe deployment nginx-app
kubectl get replicaset
kubectl describe rs nginx-app-5d85b5fb59
kubectl get pods -o wide
kubectl describe pods nginx-app-5d85b5fb59-2ct5p
  1. 暴露服务:
kubectl expose deployment nginx-app --port=80 --type=LoadBalancer
  1. 查看服务状态(查看对外的端口)
kubectl get services

nginx-app一直处于pending状态,应该是type设置为LoadBalancer,但没有云服务商和本地服务提供该功能。


参考链接:
https://blog.csdn.net/qq_43279371/article/details/107768713
https://blog.csdn.net/kenkao/article/details/86764788