利用 Helm部署 Ingress

本文详细记录了在Kubernetes集群中安装ingress-nginx控制器的过程,包括配置更改、镜像拉取问题及解决方案,确保负载均衡服务正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[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,则部署完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值