[root@node1 bin]# helm search nginx-ingress
NAME CHART VERSION APP VERSION DESCRIPTION
stable/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap to store ...
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
当使用阿里云镜像时
[root@node1 bin]# helm install stable/nginx-ingress -n nginx-ingress --namespace ingress-nginx -f ingress-nginx.yaml
Error: validation failed: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
修改为mirror.azure.cn
[root@node1 bin]# helm repo add stable http://mirror.azure.cn/kubernetes/charts
"stable" has been added to your repositories
[root@node1 bin]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
[root@node1 bin]# helm repo list
NAME URL
local http://127.0.0.1:8879/charts
stable http://mirror.azure.cn/kubernetes/charts
[root@node1 bin]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
[root@node1 bin]# helm install stable/nginx-ingress -n nginx-ingress --namespace ingress-nginx -f ingress-nginx.yaml
NAME: nginx-ingress
LAST DEPLOYED: Thu Jan 9 14:17:23 2020
NAMESPACE: ingress-nginx
STATUS: DEPLOYED
RESOURCES:
==> v1/ClusterRole
NAME AGE
nginx-ingress 0s
==> v1/ClusterRoleBinding
NAME AGE
nginx-ingress 0s
==> v1/Deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-ingress-controller 0/1 1 0 0s
nginx-ingress-default-backend 0/1 1 0 0s
==> v1/Pod(related)
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-9c9ddc498-mkbsl 0/1 ContainerCreating 0 0s
nginx-ingress-default-backend-865b8fbcc7-54gc8 0/1 ContainerCreating 0 0s
==> v1/Role
NAME AGE
nginx-ingress 0s
==> v1/RoleBinding
NAME AGE
nginx-ingress 0s
==> v1/Service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer 10.96.1.50 <pending> 80:32207/TCP,443:31031/TCP 0s
nginx-ingress-default-backend ClusterIP 10.96.220.186 <none> 80/TCP 0s
==> v1/ServiceAccount
NAME SECRETS AGE
nginx-ingress 1 0s
nginx-ingress-backend 1 0s
NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w nginx-ingress-controller'
An example Ingress that makes use of the controller:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: example
namespace: foo
spec:
rules:
- host: www.example.com
http:
paths:
- backend:
serviceName: exampleService
servicePort: 80
path: /
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: example-tls
If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:
apiVersion: v1
kind: Secret
metadata:
name: example-tls
namespace: foo
data:
tls.crt: <base64 encoded cert>
tls.key: <base64 encoded key>
type: kubernetes.io/tls
[root@node1 bin]# kubectl get pod -n ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-9c9ddc498-mkbsl 0/1 ContainerCreating 0 19s 192.168.254.152 node1 <none> <none>
nginx-ingress-default-backend-865b8fbcc7-54gc8 0/1 ContainerCreating 0 19s <none> node1 <none> <none>
此处一直ContainerCreating
[root@node1 bin]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default curl-69c656fd45-9mtg4 1/1 Running 0 18h
ingress-nginx nginx-ingress-controller-9c9ddc498-mkbsl 1/1 Running 0 7m37s
ingress-nginx nginx-ingress-default-backend-865b8fbcc7-54gc8 0/1 ImagePullBackOff 0 7m37s
kube-system coredns-6955765f44-mcb47 1/1 Running 1 18h
kube-system coredns-6955765f44-tr5xs 1/1 Running 1 18h
kube-system etcd-node1 1/1 Running 1 18h
kube-system kube-apiserver-node1 1/1 Running 1 18h
kube-system kube-controller-manager-node1 1/1 Running 1 18h
kube-system kube-flannel-ds-amd64-5mplr 1/1 Running 1 18h
kube-system kube-flannel-ds-amd64-p9fm5 1/1 Running 4 115m
kube-system kube-proxy-ksm99 1/1 Running 0 110m
kube-system kube-proxy-lvg78 1/1 Running 0 110m
kube-system kube-scheduler-node1 1/1 Running 1 18h
kube-system tiller-deploy-7c7b67c9fd-j4rhq 1/1 Running 1 32m
[root@node1 bin]# kubectl describe pod nginx-ingress-default-backend-865b8fbcc7-54gc8 --namespace=ingress-nginx
Name: nginx-ingress-default-backend-865b8fbcc7-54gc8
Namespace: ingress-nginx
Priority: 0
Node: node1/192.168.254.152
Start Time: Thu, 09 Jan 2020 14:17:24 +0800
Labels: app=nginx-ingress
component=default-backend
pod-template-hash=865b8fbcc7
release=nginx-ingress
Annotations: <none>
Status: Pending
IP: 10.244.0.6
IPs:
IP: 10.244.0.6
Controlled By: ReplicaSet/nginx-ingress-default-backend-865b8fbcc7
Containers:
nginx-ingress-default-backend:
Container ID:
Image: k8s.gcr.io/defaultbackend-amd64:1.5
Image ID:
Port: 8080/TCP
Host Port: 0/TCP
State: Waiting
Reason: ErrImagePull
Ready: False
Restart Count: 0
Liveness: http-get http://:8080/healthz delay=30s timeout=5s period=10s #success=1 #failure=3
Readiness: http-get http://:8080/healthz delay=0s timeout=5s period=5s #success=1 #failure=6
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from nginx-ingress-backend-token-4r5bk (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
nginx-ingress-backend-token-4r5bk:
Type: Secret (a volume populated by a Secret)
SecretName: nginx-ingress-backend-token-4r5bk
Optional: false
QoS Class: BestEffort
Node-Selectors: node-role.kubernetes.io/edge=
Tolerations: node-role.kubernetes.io/master:NoSchedule
node-role.kubernetes.io/master:PreferNoSchedule
node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 7m58s default-scheduler Successfully assigned ingress-nginx/nginx-ingress-default-backend-865b8fbcc7-54gc8 to node1
Normal Pulling 42s (x4 over 7m57s) kubelet, node1 Pulling image "k8s.gcr.io/defaultbackend-amd64:1.5"
Warning Failed 22s (x4 over 2m38s) kubelet, node1 Failed to pull image "k8s.gcr.io/defaultbackend-amd64:1.5": rpc error: code = Unknown desc = Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Warning Failed 22s (x4 over 2m38s) kubelet, node1 Error: ErrImagePull
Normal BackOff 8s (x5 over 2m37s) kubelet, node1 Back-off pulling image "k8s.gcr.io/defaultbackend-amd64:1.5"
Warning Failed 8s (x5 over 2m37s) kubelet, node1 Error: ImagePullBackOff
[root@node1 bin]# docker search defaultbackend-amd64:1.5
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
fungitive/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5 0 [OK]
hb562100/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5 0 [OK]
runcc/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5 0
huqian123/nginx-ingress-default-backend 同步的k8s.gcr.io/defaultbackend-amd64:1.5 0
song3304/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5 0
cl0411/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5 0
sahilrkalra/defaultbackend-amd64 Docker Image of k8s.gcr.io/defaultbackend-am… 0
thinktbu/kubernetes google docker images of k8s.gcr.io/defaultba… 0
[root@node1 bin]# docker pull fungitive/defaultbackend-amd64
Using default tag: latest
latest: Pulling from fungitive/defaultbackend-amd64
65f4220de95d: Pull complete
Digest: sha256:4dc5e07c8ca4e23bddb3153737d7b8c556e5fb2f29c4558b7cd6e6df99c512c7
Status: Downloaded newer image for fungitive/defaultbackend-amd64:latest
docker.io/fungitive/defaultbackend-amd64:latest
[root@node1 bin]# docker tag fungitive/defaultbackend-amd64 k8s.gcr.io/defaultbackend-amd64:1.5
// 查看节点是否正确
[root@node1 bin]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default curl-69c656fd45-9mtg4 1/1 Running 0 18h
ingress-nginx nginx-ingress-controller-9c9ddc498-mkbsl 1/1 Running 0 20m
ingress-nginx nginx-ingress-default-backend-865b8fbcc7-54gc8 1/1 Running 0 20m
kube-system coredns-6955765f44-mcb47 1/1 Running 1 18h
kube-system coredns-6955765f44-tr5xs 1/1 Running 1 18h
kube-system etcd-node1 1/1 Running 1 18h
kube-system kube-apiserver-node1 1/1 Running 1 18h
kube-system kube-controller-manager-node1 1/1 Running 1 18h
kube-system kube-flannel-ds-amd64-5mplr 1/1 Running 1 18h
kube-system kube-flannel-ds-amd64-p9fm5 1/1 Running 4 128m
kube-system kube-proxy-ksm99 1/1 Running 0 123m
kube-system kube-proxy-lvg78 1/1 Running 0 123m
kube-system kube-scheduler-node1 1/1 Running 1 18h
kube-system tiller-deploy-7c7b67c9fd-j4rhq 1/1 Running 1 45m
[root@node1 bin]# kubectl get pod -n ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ingress-controller-9c9ddc498-mkbsl 1/1 Running 0 23m 192.168.254.152 node1 <none> <none>
nginx-ingress-default-backend-865b8fbcc7-54gc8 1/1 Running 0 23m 10.244.0.6 node1 <none> <none>
如果访问http://node1IP返回default backend,则部署完成。