6-6 kubectl apply -f ingress-nginx-mandatory.yaml 后续

来源:6-6 部署ingress-nginx(下)

yl_testimooc3804939

2021-12-28

接上一个"6-6 kubectl apply -f mandatory.yaml"问题"https://coding.imooc.com/learn/questiondetail/GzLgV6kW8xw6kWxb.html"

第一个问题:
下面我使用这个文件操作了一下:

[root@node-1 ingress-nginx]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@node-1 ingress-nginx]# uname -r
3.10.0-1160.el7.x86_64

[root@node-1 ingress-nginx]# pwd
/root/ingress-nginx

[root@node-1 ingress-nginx]# grep image ingress-nginx-mandatory.yaml 
          image: k8s.gcr.io/ingress-nginx/controller:v1.1.0@sha256:f766669fdcf3dc26347ed273a55e754b427eb4411ee075a53f30718b4499076a
          imagePullPolicy: IfNotPresent
          image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
          imagePullPolicy: IfNotPresent
          image: k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
          imagePullPolicy: IfNotPresent


[root@node-1 ingress-nginx]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.0
[root@node-1 ingress-nginx]# docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1


[root@node-1 ingress-nginx]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.0  k8s.gcr.io/ingress-nginx/controller:v1.1.0
[root@node-1 ingress-nginx]# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1  k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1

[root@node-1 ingress-nginx]# kubectl apply -f ingress-nginx-mandatory.yaml 
namespace/ingress-nginx unchanged
serviceaccount/ingress-nginx unchanged
configmap/ingress-nginx-controller unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
role.rbac.authorization.k8s.io/ingress-nginx unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
service/ingress-nginx-controller-admission unchanged
service/ingress-nginx-controller configured
deployment.apps/ingress-nginx-controller configured
ingressclass.networking.k8s.io/nginx unchanged
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured
serviceaccount/ingress-nginx-admission unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
role.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
job.batch/ingress-nginx-admission-create unchanged
job.batch/ingress-nginx-admission-patch unchanged

#这里不再报错,也无警告。
#下面执行了多次,也重启过docker,硬件资源也够,可是下述一直处于pending和其他状态,而且缺少您视频中的default-http-backend服务。

[root@node-1 ingress-nginx]# kubectl get all -n ingress-nginx
NAME                                            READY   STATUS              RESTARTS   AGE
pod/ingress-nginx-admission-create-qp5d6        0/1     ImagePullBackOff    0          5h20m
pod/ingress-nginx-admission-patch-4rpdd         0/1     ErrImagePull        0          5h20m
pod/ingress-nginx-controller-69db7f75b4-ctz8s   0/1     ContainerCreating   0          5h20m

NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/ingress-nginx-controller             LoadBalancer   10.233.171.180   <pending>     80:30018/TCP,443:31726/TCP   5h20m
service/ingress-nginx-controller-admission   ClusterIP      10.233.214.123   <none>        443/TCP                      5h20m

NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-controller   0/1     1            0           5h20m

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-controller-69db7f75b4   1         1         0       5h20m

NAME                                       COMPLETIONS   DURATION   AGE
job.batch/ingress-nginx-admission-create   0/1           5h20m      5h20m
job.batch/ingress-nginx-admission-patch    0/1           5h20m      5h20m

我发现这里没有您在视频中教的"default-http-backend"服务,这里的运行对吗?
如果不对,那么是否缺少配置?
如果对,那么这里为啥还一直处于pending和其他状态?我刚开始已经把配置文件中的image过滤出来,并且把镜像下载好了。

-----------------------------------------第二个问题:
继上一个提问中,在https://github.com/kubernetes/ingress-nginx中已经找不到这个文件mandatory.yaml了,您问我mandatory.yaml是从哪里获取的呢?我的回答是"我查询了您当初回答其他学员的问题,找到了这个https://git.imooc.com/coding-335/course-docs/src/master/5/mandatory.yaml。"我想问的是:您新加的ingress-nginx-mandatory.yaml这个文件是对应的https://github.com/kubernetes/ingress-nginx/tree/main/deploy/static/provider/baremetal/deploy.yaml这个文件吧。如果不是的话,那从哪儿下的呢,因为通过视频中您点开的页面,发现官网现在已经改版了。所以我找到了deploy.yaml这个,不确定对不对。"我想知道

--------------------------------------------第三个问题:
您在原mandatory.yaml中加入
" hostNetwork: true
nodeSelector:
app: ingress
"的这个配置,我配置到ingress-nginx-mandatory.yaml的403行"serviceAccountName: ingress-nginx"下是否正确呢。

修改完再次报错如下:

[root@node-1 ingress-nginx]# kubectl apply -f ingress-nginx-mandatory.yaml 
namespace/ingress-nginx unchanged
serviceaccount/ingress-nginx unchanged
configmap/ingress-nginx-controller unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
role.rbac.authorization.k8s.io/ingress-nginx unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx unchanged
service/ingress-nginx-controller-admission unchanged
service/ingress-nginx-controller configured
deployment.apps/ingress-nginx-controller configured
ingressclass.networking.k8s.io/nginx unchanged
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission configured
serviceaccount/ingress-nginx-admission unchanged
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
role.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission unchanged
job.batch/ingress-nginx-admission-create unchanged
The Job "ingress-nginx-admission-patch" is invalid: spec.template: Invalid value: core.PodTemplateSpec{ObjectMeta:v1.ObjectMeta{Name:"ingress-nginx-admission-patch", GenerateName:"", Namespace:"", SelfLink:"", UID:"", ResourceVersion:"", Generation:0, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string{"app.kubernetes.io/component":"admission-webhook", "app.kubernetes.io/instance":"ingress-nginx", "app.kubernetes.io/managed-by":"Helm", "app.kubernetes.io/name":"ingress-nginx", "app.kubernetes.io/version":"1.1.0", "controller-uid":"8ff05f81-2ad2-43ac-a8b7-5fa359acc1a2", "helm.sh/chart":"ingress-nginx-4.0.10", "job-name":"ingress-nginx-admission-patch"}, Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, Spec:core.PodSpec{Volumes:[]core.Volume(nil), InitContainers:[]core.Container(nil), Containers:[]core.Container{core.Container{Name:"patch", Image:"k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660", Command:[]string(nil), Args:[]string{"patch", "--webhook-name=ingress-nginx-admission", "--namespace=$(POD_NAMESPACE)", "--patch-mutating=false", "--secret-name=ingress-nginx-admission", "--patch-failure-policy=Fail"}, WorkingDir:"", Ports:[]core.ContainerPort(nil), EnvFrom:[]core.EnvFromSource(nil), Env:[]core.EnvVar{core.EnvVar{Name:"POD_NAMESPACE", Value:"", ValueFrom:(*core.EnvVarSource)(0xc007c3f6e0)}}, Resources:core.ResourceRequirements{Limits:core.ResourceList(nil), Requests:core.ResourceList(nil)}, VolumeMounts:[]core.VolumeMount(nil), VolumeDevices:[]core.VolumeDevice(nil), LivenessProbe:(*core.Probe)(nil), ReadinessProbe:(*core.Probe)(nil), StartupProbe:(*core.Probe)(nil), Lifecycle:(*core.Lifecycle)(nil), TerminationMessagePath:"/dev/termination-log", TerminationMessagePolicy:"File", ImagePullPolicy:"IfNotPresent", SecurityContext:(*core.SecurityContext)(0xc00fba6de0), Stdin:false, StdinOnce:false, TTY:false}}, EphemeralContainers:[]core.EphemeralContainer(nil), RestartPolicy:"OnFailure", TerminationGracePeriodSeconds:(*int64)(0xc009ad0d60), ActiveDeadlineSeconds:(*int64)(nil), DNSPolicy:"ClusterFirst", NodeSelector:map[string]string{"kubernetes.io/os":"linux"}, ServiceAccountName:"ingress-nginx-admission", AutomountServiceAccountToken:(*bool)(nil), NodeName:"", SecurityContext:(*core.PodSecurityContext)(0xc008df0c80), ImagePullSecrets:[]core.LocalObjectReference(nil), Hostname:"", Subdomain:"", SetHostnameAsFQDN:(*bool)(nil), Affinity:(*core.Affinity)(nil), SchedulerName:"default-scheduler", Tolerations:[]core.Toleration(nil), HostAliases:[]core.HostAlias(nil), PriorityClassName:"", Priority:(*int32)(nil), PreemptionPolicy:(*core.PreemptionPolicy)(nil), DNSConfig:(*core.PodDNSConfig)(nil), ReadinessGates:[]core.PodReadinessGate(nil), RuntimeClassName:(*string)(nil), Overhead:core.ResourceList(nil), EnableServiceLinks:(*bool)(nil), TopologySpreadConstraints:[]core.TopologySpreadConstraint(nil)}}: field is immutable
写回答

1回答

刘果国

2021-12-29

1、新版本ingress-nginx改版很大,不缺配置,那个就是完整的,不过肯定跟视频不一样了(最新版本的可以尝试,可能会遇到一些坑)

2、原来的文件其实问题不大,只要修改一些版本就可以使用,我已经改了(https://git.imooc.com/coding-335/course-docs/src/master/5/mandatory.yaml)

最新的我也是从官方刚下载回来放上去的,但确实没趟过坑,不排除有问题。

3、先用原生的试一下(没有修改过的),排除修改的问题

0
0

Kubernetes生产落地全程实践

一个互联网公司落地Kubernetes全过程点点滴滴

2293 学习 · 2211 问题

查看课程