text: Title: API-server repair considers ports with same port number but different protocols as same
  Body: <!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!
  
  If the matter is security related, please disclose it privately via https://kubernetes.io/security/
  -->
  
  
  **What happened**:
  I created several Workloads which require up to ten ports for both UDP and TCP protocol. Now my logs get spammed with `the node port [PORT] for service [SERVER] was assigned to multiple services; please recreate`.
  
  **What you expected to happen**:
  [repair.go::collectServiceNodePorts](https://github.com/kubernetes/kubernetes/blob/master/pkg/registry/core/service/portallocator/controller/repair.go#L203) should consider `PORT-PROTO`-combination instead of only `PORT`.
  
  **How to reproduce it (as minimally and precisely as possible)**:
  Deploy any service with a node-port with both protocols, e.g.:
  ```
  apiVersion: v1
  kind: Service
  metadata:
    name: test
  spec:
    ports:
    - port: 30080
      targetPort: 80
      protocol: UDP
      name: dummy
    - port: 30080
      targetPort: 80
      protocol: TCP
      name: http
  ```
  
  **Anything else we need to know?**:
  This was already acknowledged by @thockin here: https://github.com/kubernetes/kubernetes/issues/59119#issuecomment-490760644
  However, as this thread addresses a different bug and seems kind of stuck, i'd like to suggest that this might be addressed in a new context.
  
  **Environment**:
  - Kubernetes version (use `kubectl version`): `v1.17.5`
  - Cloud provider or hardware configuration: `Hetzner Cloud`
  - OS (e.g: `cat /etc/os-release`): `Debian GNU/Linux 10 (buster)`
  - Kernel (e.g. `uname -a`): `Linux server 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1+deb10u1 (2020-04-27) x86_64 GNU/Linux`
  - Install tools: Deployed via Rancher v2.4.3