github.phpd.cn/cilium/cilium@v1.6.12/pkg/aws/eni/limits.go (about) 1 // Copyright 2019 Authors of Cilium 2 // Copyright 2017 Lyft, Inc. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 package eni 17 18 // Limits specifies the ENI relevant instance limits 19 type Limits struct { 20 // Adapters specifies the maximum number of ENIs that can be attached 21 // to the instance 22 Adapters int 23 24 // IPv4 is the maximum number of IPv4 addresses per ENI 25 IPv4 int 26 27 // IPv6 is the maximum number of IPv6 addresses per ENI 28 IPv6 int 29 } 30 31 // limit contains limits for adapter count and addresses 32 // 33 // Source: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html?shortFooter=true#AvailableIpPerENI 34 var limits = map[string]Limits{ 35 "a1.medium": {2, 4, 4}, 36 "a1.large": {3, 10, 10}, 37 "a1.xlarge": {4, 15, 15}, 38 "a1.2xlarge": {4, 15, 15}, 39 "a1.4xlarge": {8, 30, 30}, 40 "c1.medium": {2, 6, 0}, 41 "c1.xlarge": {4, 15, 0}, 42 "c3.large": {3, 10, 10}, 43 "c3.xlarge": {4, 15, 15}, 44 "c3.2xlarge": {4, 15, 15}, 45 "c3.4xlarge": {8, 30, 30}, 46 "c3.8xlarge": {8, 30, 30}, 47 "c4.large": {3, 10, 10}, 48 "c4.xlarge": {4, 15, 15}, 49 "c4.2xlarge": {4, 15, 15}, 50 "c4.4xlarge": {8, 30, 30}, 51 "c4.8xlarge": {8, 30, 30}, 52 "c5.large": {3, 10, 10}, 53 "c5.xlarge": {4, 15, 15}, 54 "c5.2xlarge": {4, 15, 15}, 55 "c5.4xlarge": {8, 30, 30}, 56 "c5.9xlarge": {8, 30, 30}, 57 "c5.12xlarge": {8, 30, 30}, 58 "c5.18xlarge": {15, 50, 50}, 59 "c5.24xlarge": {15, 50, 50}, 60 "c5.metal": {15, 50, 50}, 61 "c5d.large": {3, 10, 10}, 62 "c5d.xlarge": {4, 15, 15}, 63 "c5d.2xlarge": {4, 15, 15}, 64 "c5d.4xlarge": {8, 30, 30}, 65 "c5d.9xlarge": {8, 30, 30}, 66 "c5d.18xlarge": {15, 50, 50}, 67 "c5n.large": {3, 10, 10}, 68 "c5n.xlarge": {4, 15, 15}, 69 "c5n.2xlarge": {4, 15, 15}, 70 "c5n.4xlarge": {8, 30, 30}, 71 "c5n.9xlarge": {8, 30, 30}, 72 "c5n.18xlarge": {15, 50, 50}, 73 "c5n.metal": {15, 50, 50}, 74 "cc2.8xlarge": {8, 30, 0}, 75 "cr1.8xlarge": {8, 30, 0}, 76 "d2.xlarge": {4, 15, 15}, 77 "d2.2xlarge": {4, 15, 15}, 78 "d2.4xlarge": {8, 30, 30}, 79 "d2.8xlarge": {8, 30, 30}, 80 "f1.2xlarge": {4, 15, 15}, 81 "f1.4xlarge": {8, 30, 30}, 82 "f1.16xlarge": {8, 50, 50}, 83 "g2.2xlarge": {4, 15, 0}, 84 "g2.8xlarge": {8, 30, 0}, 85 "g3s.xlarge": {4, 15, 15}, 86 "g3.4xlarge": {8, 30, 30}, 87 "g3.8xlarge": {8, 30, 30}, 88 "g3.16xlarge": {15, 50, 50}, 89 "h1.2xlarge": {4, 15, 15}, 90 "h1.4xlarge": {8, 30, 30}, 91 "h1.8xlarge": {8, 30, 30}, 92 "h1.16xlarge": {15, 50, 50}, 93 "hs1.8xlarge": {8, 30, 0}, 94 "i2.xlarge": {4, 15, 15}, 95 "i2.2xlarge": {4, 15, 15}, 96 "i2.4xlarge": {8, 30, 30}, 97 "i2.8xlarge": {8, 30, 30}, 98 "i3.large": {3, 10, 10}, 99 "i3.xlarge": {4, 15, 15}, 100 "i3.2xlarge": {4, 15, 15}, 101 "i3.4xlarge": {8, 30, 30}, 102 "i3.8xlarge": {8, 30, 30}, 103 "i3.16xlarge": {15, 50, 50}, 104 "i3.metal": {15, 50, 50}, 105 "i3en.large": {3, 10, 10}, 106 "i3en.xlarge": {4, 15, 15}, 107 "i3en.2xlarge": {4, 15, 15}, 108 "i3en.3xlarge": {4, 15, 15}, 109 "i3en.6xlarge": {8, 30, 30}, 110 "i3en.12xlarge": {8, 30, 30}, 111 "i3en.24xlarge": {15, 50, 50}, 112 "i3en.metal": {15, 50, 50}, 113 "m1.small": {2, 4, 0}, 114 "m1.medium": {2, 6, 0}, 115 "m1.large": {3, 10, 0}, 116 "m1.xlarge": {4, 15, 0}, 117 "m2.xlarge": {4, 15, 0}, 118 "m2.2xlarge": {4, 30, 0}, 119 "m2.4xlarge": {8, 30, 0}, 120 "m3.medium": {2, 6, 0}, 121 "m3.large": {3, 10, 0}, 122 "m3.xlarge": {4, 15, 0}, 123 "m3.2xlarge": {4, 30, 0}, 124 "m4.large": {2, 10, 10}, 125 "m4.xlarge": {4, 15, 15}, 126 "m4.2xlarge": {4, 15, 15}, 127 "m4.4xlarge": {8, 30, 30}, 128 "m4.10xlarge": {8, 30, 30}, 129 "m4.16xlarge": {8, 30, 30}, 130 "m5.large": {3, 10, 10}, 131 "m5.xlarge": {4, 15, 15}, 132 "m5.2xlarge": {4, 15, 15}, 133 "m5.4xlarge": {8, 30, 30}, 134 "m5.8xlarge": {8, 30, 30}, 135 "m5.12xlarge": {8, 30, 30}, 136 "m5.16xlarge": {15, 50, 50}, 137 "m5.24xlarge": {15, 50, 50}, 138 "m5.metal": {15, 50, 50}, 139 "m5a.large": {3, 10, 10}, 140 "m5a.xlarge": {4, 15, 15}, 141 "m5a.2xlarge": {4, 15, 15}, 142 "m5a.4xlarge": {8, 30, 30}, 143 "m5a.8xlarge": {8, 30, 30}, 144 "m5a.12xlarge": {8, 30, 30}, 145 "m5a.16xlarge": {15, 50, 50}, 146 "m5a.24xlarge": {15, 50, 50}, 147 "m5ad.large": {3, 10, 10}, 148 "m5ad.xlarge": {4, 15, 15}, 149 "m5ad.2xlarge": {4, 15, 15}, 150 "m5ad.4xlarge": {8, 30, 30}, 151 "m5ad.12xlarge": {8, 30, 30}, 152 "m5ad.24xlarge": {15, 50, 50}, 153 "m5d.large": {3, 10, 10}, 154 "m5d.xlarge": {4, 15, 15}, 155 "m5d.2xlarge": {4, 15, 15}, 156 "m5d.4xlarge": {8, 30, 30}, 157 "m5d.8xlarge": {8, 30, 30}, 158 "m5d.12xlarge": {8, 30, 30}, 159 "m5d.16xlarge": {15, 50, 50}, 160 "m5d.24xlarge": {15, 50, 50}, 161 "m5d.metal": {15, 50, 50}, 162 "p2.xlarge": {4, 15, 15}, 163 "p2.8xlarge": {8, 30, 30}, 164 "p2.16xlarge": {8, 30, 30}, 165 "p3.2xlarge": {4, 15, 15}, 166 "p3.8xlarge": {8, 30, 30}, 167 "p3.16xlarge": {8, 30, 30}, 168 "p3dn.24xlarge": {15, 50, 50}, 169 "r3.large": {3, 10, 10}, 170 "r3.xlarge": {4, 15, 15}, 171 "r3.2xlarge": {4, 15, 15}, 172 "r3.4xlarge": {8, 30, 30}, 173 "r3.8xlarge": {8, 30, 30}, 174 "r4.large": {3, 10, 10}, 175 "r4.xlarge": {4, 15, 15}, 176 "r4.2xlarge": {4, 15, 15}, 177 "r4.4xlarge": {8, 30, 30}, 178 "r4.8xlarge": {8, 30, 30}, 179 "r4.16xlarge": {15, 50, 50}, 180 "r5.large": {3, 10, 10}, 181 "r5.xlarge": {4, 15, 15}, 182 "r5.2xlarge": {4, 15, 15}, 183 "r5.4xlarge": {8, 30, 30}, 184 "r5.8xlarge": {8, 30, 30}, 185 "r5.12xlarge": {8, 30, 30}, 186 "r5.16xlarge": {15, 50, 50}, 187 "r5.24xlarge": {15, 50, 50}, 188 "r5.metal": {15, 50, 50}, 189 "r5a.large": {3, 10, 10}, 190 "r5a.xlarge": {4, 15, 15}, 191 "r5a.2xlarge": {4, 15, 15}, 192 "r5a.4xlarge": {8, 30, 30}, 193 "r5a.8xlarge": {8, 30, 30}, 194 "r5a.12xlarge": {8, 30, 30}, 195 "r5a.16xlarge": {15, 50, 50}, 196 "r5a.24xlarge": {15, 50, 50}, 197 "r5ad.large": {3, 10, 10}, 198 "r5ad.xlarge": {4, 15, 15}, 199 "r5ad.2xlarge": {4, 15, 15}, 200 "r5ad.4xlarge": {8, 30, 30}, 201 "r5ad.12xlarge": {8, 30, 30}, 202 "r5ad.24xlarge": {15, 50, 50}, 203 "r5d.large": {3, 10, 10}, 204 "r5d.xlarge": {4, 15, 15}, 205 "r5d.2xlarge": {4, 15, 15}, 206 "r5d.4xlarge": {8, 30, 30}, 207 "r5d.8xlarge": {8, 30, 30}, 208 "r5d.12xlarge": {8, 30, 30}, 209 "r5d.16xlarge": {15, 50, 50}, 210 "r5d.24xlarge": {15, 50, 50}, 211 "r5d.metal": {15, 50, 50}, 212 "t1.micro": {2, 2, 0}, 213 "t2.nano": {2, 2, 2}, 214 "t2.micro": {2, 2, 2}, 215 "t2.small": {3, 4, 4}, 216 "t2.medium": {3, 6, 6}, 217 "t2.large": {3, 12, 12}, 218 "t2.xlarge": {3, 15, 15}, 219 "t2.2xlarge": {3, 15, 15}, 220 "t3.nano": {2, 2, 2}, 221 "t3.micro": {2, 2, 2}, 222 "t3.small": {3, 4, 4}, 223 "t3.medium": {3, 6, 6}, 224 "t3.large": {3, 12, 12}, 225 "t3.xlarge": {4, 15, 15}, 226 "t3.2xlarge": {4, 15, 15}, 227 "t3a.nano": {2, 2, 2}, 228 "t3a.micro": {2, 2, 2}, 229 "t3a.small": {2, 4, 4}, 230 "t3a.medium": {3, 6, 6}, 231 "t3a.large": {3, 12, 12}, 232 "t3a.xlarge": {4, 15, 15}, 233 "t3a.2xlarge": {4, 15, 15}, 234 "u-6tb1.metal": {5, 30, 30}, 235 "u-9tb1.metal": {5, 30, 30}, 236 "u-12tb1.metal": {5, 30, 30}, 237 "x1.16xlarge": {8, 30, 30}, 238 "x1.32xlarge": {8, 30, 30}, 239 "x1e.xlarge": {3, 10, 10}, 240 "x1e.2xlarge": {4, 15, 15}, 241 "x1e.4xlarge": {4, 15, 15}, 242 "x1e.8xlarge": {4, 15, 15}, 243 "x1e.16xlarge": {8, 30, 30}, 244 "x1e.32xlarge": {8, 30, 30}, 245 "z1d.large": {3, 10, 10}, 246 "z1d.xlarge": {4, 15, 15}, 247 "z1d.2xlarge": {4, 15, 15}, 248 "z1d.3xlarge": {8, 30, 30}, 249 "z1d.6xlarge": {8, 30, 30}, 250 "z1d.12xlarge": {15, 50, 50}, 251 "z1d.metal": {15, 50, 50}, 252 } 253 254 // GetLimits returns the instance limits of a particular instance type 255 func GetLimits(instanceType string) (limit Limits, ok bool) { 256 limit, ok = limits[instanceType] 257 return 258 }