实操遇到问题好多,记录下。
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
解决
- 删除之前的部署:
kubectl delete pods httpd-app
- 创建部署文件:
cd ~/k8s
nano nginx.yaml
- 粘贴下面内容进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
- 创建:
kubectl apply -f nginx.yaml
- 检查:
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
- 暴露服务:
kubectl expose deployment nginx-app --port=80 --type=LoadBalancer
- 查看服务状态(查看对外的端口)
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