{"id":334,"date":"2020-05-22T16:07:40","date_gmt":"2020-05-22T08:07:40","guid":{"rendered":"https:\/\/www.funnymuddy.com\/?p=334"},"modified":"2020-09-02T18:11:22","modified_gmt":"2020-09-02T10:11:22","slug":"kubernetes","status":"publish","type":"post","link":"https:\/\/www.funnymuddy.com\/?p=334","title":{"rendered":"Kubernetes"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u521d\u6b65\u4e86\u89e3<\/h2>\n\n\n\n<p>\u5565\u4e5f\u4e0d\u8bf4\u4e86\uff0c\u770b<a rel=\"noreferrer noopener\" href=\"https:\/\/youtu.be\/aSrqRSk43lY\" target=\"_blank\">\u8fd9\u4e2a\u89c6\u9891<\/a>\uff0c\u8fc4\u4eca\u4e3a\u6b62\u770b\u5230\u7684\u5bf9Kubernetes\u6700\u7b80\u5355\u6e05\u6670\u7684\u89e3\u91ca\u3002<br><br>Kubenetes\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/components\/\" target=\"_blank\">components<\/a>\u548c<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/\" target=\"_blank\">concepts<\/a>\u9700\u8981\u770b\u4e00\u4e0b\uff0c\u4e86\u89e3Kubernetes\u7684\u57fa\u672c\u6982\u5ff5\u548c\u6574\u4f53\u67b6\u6784\u3002<br><br>Pods and <a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod-overview\/#pods-and-controllers\" target=\"_blank\">Controllers<\/a>. Pod\u662fKubernetes\u5185\u6700\u57fa\u7840\u7684\u5de5\u4f5c\u5355\u5143\uff0c\u62e5\u6709\u552f\u4e00\u7684IP\/Port\u6216\u8005volumes\u3002\u901a\u5e38\u4e00\u4e2aPod\u8fd0\u884c\u4e00\u4e2aapp container\uff0c\u6709\u7684\u9700\u8981\u8fd0\u884c\u591a\u4e2acontainer\uff0c\u6216\u8005\u5148\u8fd0\u884c<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/init-containers\/\" target=\"_blank\">init container<\/a>\u8fd0\u884c\u542f\u52a8app container\u524d\u7684\u5148\u884c\u8f85\u52a9\u5de5\u4f5c\u3002\u5982\u679c\u662f\u9700\u8981Pod\u534f\u4f5c\u6bd4\u5982rollout\uff0c\u90a3\u5c31\u9700\u8981controller\u3002\u5e38\u89c1\u7684controller\u4e3a<a href=\"https:\/\/www.jianshu.com\/p\/71c1556b64db\" target=\"_blank\" rel=\"noreferrer noopener\">StatefulSet<\/a>, DaemonSet, Deployment, ReplicaSet\u7b49\u3002<br><br>Kubenetes\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/setup\/production-environment\/container-runtimes\" target=\"_blank\">container runtimes<\/a>\uff0c\u4e0d\u53ea\u662fDocker\uff0c\u8fd8\u6709<a rel=\"noreferrer noopener\" href=\"https:\/\/cri-o.io\" target=\"_blank\">CRI-O<\/a>\uff08lightweight container runtime for Kubernetes\uff09\uff0ccontainerd\u7b49\u3002<a rel=\"noreferrer noopener\" href=\"https:\/\/cri-o.io\" target=\"_blank\">\u8fd9\u91cc<\/a>\u8c08\u5230\u4e86CRI-O\/Kubernetes\u7684\u67b6\u6784\uff0c\u6d89\u53ca\u5230\u4e86\u51e0\u4e2a\u6982\u5ff5CNCF(<a href=\"https:\/\/cncf.io\/\">Cloud Native Computing Foundation<\/a>), CRI(<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/containernetworking\/cni\" target=\"_blank\">Container Runtime Interface<\/a>), CNI(<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/containernetworking\/cni\" target=\"_blank\">Container Network Interface<\/a>), OCI(<a rel=\"noreferrer noopener\" href=\"https:\/\/www.opencontainers.org\/\" target=\"_blank\">Open Container Initiative<\/a>)\u3002runc\u4e3aOCI-compliant\u00a0runtime\uff0c\u9664\u4e86runc\u8fd8\u6709Kata Containers\u3002Minikube uses CRI-O as the container runtime\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u642d\u5efa<\/h2>\n\n\n\n<p>\u5982\u679c\u60f3\u5feb\u901f\u4f53\u9a8ckubernetes\uff0c\u53ef\u4ee5\u7528minikube\uff0c\u770b<a rel=\"noreferrer noopener\" href=\"https:\/\/www.funnymuddy.com\/?p=281\" target=\"_blank\">\u8fd9\u91cc<\/a>\u3002\u5982\u679c\u662f\u751f\u4ea7\u73af\u5883\uff0c\u53c2\u8003\u5b98\u65b9\u6587\u6863<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/admin\/high-availability\/\" target=\"_blank\">Building High-Availability Clusters<\/a>\uff0c<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/setup\/best-practices\/cluster-large\/\" target=\"_blank\">build large clusters<\/a> <\/p>\n\n\n\n<p>Kubernetes v1.18 supports clusters with up to 5000 nodes, 150000 pods, 300000 containers, 100 pods per node\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Etcd<\/h2>\n\n\n\n<p>\u8bf4\u5230Kubernetes\u4e0d\u5f97\u4e0d\u8bf4etcd\uff0c\u4e00\u4e2a\u7531CoreOS\u56e2\u961f\u53d1\u8d77\u7684\u5206\u5e03\u5f0fK\/V\u6570\u636e\u5e93\uff0ckubernetes\u7684configuration data, state data, and metadata\u90fd\u662f\u7531etcd\u6765\u5b58\u50a8\uff0cetcd\u4e00\u822c\u653e\u5728master\uff0c\u6216\u8005\u5355\u72ec\u7684\u8282\u70b9\u3002\u79fb\u6b65<a href=\"https:\/\/www.ibm.com\/cloud\/learn\/etcd\">\u8fd9\u91cc<\/a>\u4e86\u89e3\u66f4\u591aetcd\uff0c\u5305\u62ecetcd vs redis, etcd vs zookeeper\u7b49<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Route<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/dns-pod-service\/\" target=\"_blank\">DNS server<\/a> + <a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/service\/#virtual-ips-and-service-proxies\" target=\"_blank\">kube-proxy<\/a>: Pod1 + Pod2 &#8230; &#8211;&gt; service, a service has virtual IP (cluster IP of the service), port and internal domain name (my-svc.my-namespace.svc.cluster-domain.example, dns looking up my-svc.my-namespace works). <br><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/service\/#publishing-services-service-types\" target=\"_blank\">ServiceTypes<\/a>: service &#8212; http\/https routes, ClusterIP (internal IP, by default), NodePort (requesting NodeIP:NodePort from outside cluster), LoadBalancer (using a cloud provider\u2019s load balancer), ExternalName (CNAME)<br><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress\/\" target=\"_blank\">Ingress<\/a>: service &#8212; http\/https routes, ingress exposes http\/https routes from outside the cluster to services within the cluster. <\/p>\n\n\n\n<p>\u53e6\u4e00\u7bc7\u6587\u7ae0<a rel=\"noreferrer noopener\" href=\"https:\/\/www.funnymuddy.com\/?p=379\" target=\"_blank\">Kubernetes Network<\/a>\u8fdb\u4e00\u6b65\u4ecb\u7ecd\u4e86Kubernetes\u7684\u7f51\u7edc\u6a21\u578b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Storage<\/h2>\n\n\n\n<p>PV\/PVC\u662fKubernetes storage\u7684\u6838\u5fc3\u6982\u5ff5\u3002PV\u662fvolume\u8d44\u6e90\uff0c\u7531admin\u6765provision\uff0cPVC\u662f\u5229\u7528PV\u7684\u58f0\u660e\uff0c\u8868\u793a\u9700\u8981\u591a\u5c11volume\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-13.png\" alt=\"\" class=\"wp-image-432\" width=\"363\" height=\"292\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-13.png 726w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-13-300x241.png 300w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-14.png\" alt=\"\" class=\"wp-image-433\" width=\"363\" height=\"237\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-14.png 726w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-14-300x196.png 300w\" sizes=\"auto, (max-width: 363px) 100vw, 363px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-15.png\" alt=\"\" class=\"wp-image-434\" width=\"486\" height=\"367\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-15.png 972w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-15-300x227.png 300w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-15-768x580.png 768w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><\/figure>\n\n\n\n<p>PV\u53ef\u4ee5\u624b\u52a8\u5206\u914d\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7<a rel=\"noreferrer noopener\" href=\"https:\/\/v1-14.docs.kubernetes.io\/docs\/concepts\/storage\/storage-classes\/\" target=\"_blank\">StorageClass<\/a>\u81ea\u52a8\u5206\u914d\u3002Kubernetes<a href=\"https:\/\/v1-14.docs.kubernetes.io\/docs\/concepts\/storage\/storage-classes\/#provisioner\" target=\"_blank\" rel=\"noreferrer noopener\">\u5185\u7f6e\u4e86\u5f88\u591aStorageClass<\/a>\uff0c\u4e5f\u53ef\u4ee5\u7528<a href=\"https:\/\/github.com\/kubernetes-incubator\/external-storage\" target=\"_blank\" rel=\"noreferrer noopener\">\u7b2c\u4e09\u65b9\u7684StorageClass<\/a>\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-16.png\" alt=\"\" class=\"wp-image-435\" width=\"356\" height=\"137\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-16.png 712w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-16-300x115.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-17.png\" alt=\"\" class=\"wp-image-436\" width=\"356\" height=\"218\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-17.png 712w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-17-300x184.png 300w\" sizes=\"auto, (max-width: 356px) 100vw, 356px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration<\/h2>\n\n\n\n<p>Kubernetes\u63a8\u8350\u7528YAML\u5199\u914d\u7f6e\uff0c\u5c3d\u91cf\u8003\u8651\u5199\u5728\u4e00\u4e2a\u6587\u4ef6\uff0c\u53c2\u8003<strong><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/kubernetes\/examples\/blob\/master\/guestbook\/all-in-one\/guestbook-all-in-one.yaml\" target=\"_blank\">guestbook-all-in-one.yaml<\/a><\/strong>\u3002\u7528Deployment ReplicaSets Service\uff0c\u4e0d\u8981\u7528naked nodes\u3002<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/configmap\/\" target=\"_blank\" rel=\"noreferrer noopener\">ConfigMap<\/a>\u548c<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/\" target=\"_blank\" rel=\"noreferrer noopener\">Secret<\/a>\u662f\u4e24\u4e2a\u534f\u52a9\u914d\u7f6e\u7684API Object\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">ConfigMap<\/h4>\n\n\n\n<p>ConfigMap\u53ef\u4ee5\u914d\u7f6e\u6210\u73af\u5883\u53d8\u91cf\uff0cCLI\u7684\u53c2\u6570\u53d8\u91cf\uff0c\u4ee5\u53caVolume\u4e2d\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-18.png\" alt=\"\" class=\"wp-image-441\" width=\"494\" height=\"335\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-18.png 988w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-18-300x203.png 300w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-18-768x521.png 768w\" sizes=\"auto, (max-width: 494px) 100vw, 494px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-19-1024x795.png\" alt=\"\" class=\"wp-image-443\" width=\"512\" height=\"398\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-19-1024x795.png 1024w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-19-300x233.png 300w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-19-768x597.png 768w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-19.png 1532w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<p>container\u7684\/config\/\u8def\u5f84\u4e0b\u4f1a\u67094\u4e2a\u6587\u4ef6\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-21.png\" alt=\"\" class=\"wp-image-445\" width=\"328\" height=\"190\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-21.png 656w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-21-300x174.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Secret<\/h4>\n\n\n\n<p>Kubernetes Secret\u7528\u6765\u4fdd\u5b58\u7ba1\u7406\u654f\u611f\u4fe1\u606f\u5982\u5bc6\u7801\uff0ctoken\uff0cssh key\u7b49\u3002Pod\u662f\u600e\u4e48\u4f7f\u7528secrets\u7684\u5462\uff0c\u4e24\u79cd\u9014\u5f84\uff1a\u4e00\u662f\u4ee5\u6587\u4ef6\u5f62\u5f0f\u5b58\u5728\u4e8eVolume\uff0c\u4f7f\u7528\u65f6\u88abmount\u5230container\u7684\u67d0\u4e2a\u8def\u5f84\uff0c\u53e6\u4e00\u79cd\u662fkubelet pull image\u65f6\u4f7f\u7528\u3002\u5b98\u65b9\u6709\u6bd4\u8f83\u597d\u7684<a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/#use-cases\">\u4f7f\u7528\u4f8b\u5b50<\/a>\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f\u7684\u662f\uff0c\u5982\u679c\u7528yaml\u6587\u4ef6\u521b\u5efasecret\uff0c\u53ef\u4ee5\u6307\u5b9adata\u6216\u8005stringData\u4e24\u79cdmap\u65b9\u5f0f\u3002\u5982\u679c\u662f\u7528data\u7c7b\u578b\uff0c\u90a3\u4e48\u5b57\u7b26\u4e32\u9700\u8981\u7528base64\u52a0\u5bc6\u3002\u52a0\u5bc6\u89e3\u5bc6\u53ef\u4ee5\u7528\u5982\u4e0b\u547d\u4ee4\u884c\uff1a<\/p>\n\n\n\n<p>$echo -n &#8216;admin&#8217; | base64<br>$echo &#8216;YWRtaW4=&#8217; | base64 &#8211;decode<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resources<\/h2>\n\n\n\n<p>\u8ba1\u7b97\u8d44\u6e90\u7684\u8bf7\u6c42\u548c\u9650\u5b9a\uff0c\u53ef\u4ee5\u8fd9\u6837\u5b9a\u4e49<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>spec.containers[].resources.limits.cpu<\/code><\/li><li><code>spec.containers[].resources.limits.memory<\/code><\/li><li><code>spec.containers[].resources.limits.hugepages-&lt;size&gt;<\/code><\/li><li><code>spec.containers[].resources.requests.cpu<\/code><\/li><li><code>spec.containers[].resources.requests.memory<\/code><\/li><li><code>spec.containers[].resources.requests.hugepages-&lt;size&gt;<\/code><\/li><\/ul>\n\n\n\n<p>kubernetes\u4e5f\u5b9a\u4e49\u4e86CPU\u548cMemory\u7684<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#resource-units-in-kubernetes\" target=\"_blank\">\u5355\u4f4d<\/a>\u3002One cpu, in Kubernetes, is equivalent to&nbsp;<strong>1 vCPU\/Core<\/strong>&nbsp;for cloud providers and&nbsp;<strong>1 hyperthread<\/strong>&nbsp;on bare-metal Intel processors\u3002vCPU\u5373Virtual CPU\uff0c\u662fCPU\u8d44\u6e90\u7684\u5206\u5272\u5355\u5143\uff0c\u4e0d\u540c\u7684\u4e91\u5382\u5546\u4f1a\u6709\u4e0d\u540c\u7684\u5206\u5272\u89c4\u5219\uff0c\u4e00\u822c\u662f\u5c0f\u4e8e1Core\u3002hyperthread\u5373\u4e3a\u8d85\u7ebf\u7a0b\uff0cIntel\u63d0\u51fa\u7684\u6280\u672f\uff0c\u76f8\u5f53\u4e8e\u865a\u62df\u51fa\u6765\u7684cpu\u8d44\u6e90\uff0c\u6bd4\u5982\u7269\u7406CPU\u67094Core\uff0c\u4f7f\u7528HT\u6280\u672f\u53ef\u4ee5\u865a\u62df\u51fa8Core\u3002cpu: 0.1 \u548c cpu: 100m\u662f\u7b49\u540c\u7684\u3002\u63a5\u4e0b\u6765\u7684\u4f8b\u5b50\u662f\uff0c\u4e3a\u8fd9\u4e2apod\u7533\u8bf70.25cpu\uff0c64Mib\u5185\u5b58\uff0c\u6700\u5927\u9650\u5236\u662f0.5cpu\uff0c128Mib\u5185\u5b58\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-22-648x1024.png\" alt=\"\" class=\"wp-image-454\" width=\"324\" height=\"512\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-22-648x1024.png 648w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-22-190x300.png 190w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-22.png 656w\" sizes=\"auto, (max-width: 324px) 100vw, 324px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">LimitRange<\/h4>\n\n\n\n<p>\u7ba1\u7406\u5458\u53ef\u4ee5\u4e3a\u67d0\u4e2anamespace\u4e2d\u7684Pod\/container\u8d44\u6e90\u5360\u7528\u8fdb\u884c\u9650\u5236\uff0c\u6216\u8005\u8bbe\u7f6e\u9ed8\u8ba4\u7684\u8d44\u6e90\u5206\u914d\uff08\u9002\u7528\u4e8ePod\u7684\u5b9a\u4e49\u6ca1\u6709\u6307\u5b9a\u8d44\u6e90\uff09\u3002<a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/limit-range\/#whats-next\" target=\"_blank\">\u8fd9\u91cc<\/a>\u6709\u5f88\u591a\u4f8b\u5b50\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-23.png\" alt=\"\" class=\"wp-image-459\" width=\"328\" height=\"226\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-23.png 656w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-23-300x207.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-24.png\" alt=\"\" class=\"wp-image-460\" width=\"328\" height=\"223\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-24.png 656w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-24-300x204.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">ResourceQuota<\/h4>\n\n\n\n<p>ResourceQuota\u662f\u7ed9namespace\u9650\u5b9a\u7684\u8d44\u6e90\u4e0a\u9650\uff0c\u8d85\u51fa\u4e0a\u9650\u4f1a\u62a5403\u9519\u8bef\u3002\u8fd9\u91cc\u7684\u8d44\u6e90\u53ef\u4ee5\u662fcpu, memory\uff0c\u4e5f\u53ef\u4ee5\u662fstorage\uff0c\u751a\u81f3Object\u7684\u4e2a\u6570\uff0c\u6bd4\u5982service, ConfigMap\u7b49\u3002\u5982\u679c\u6307\u5b9a\u4e86requests.cpu\/requests.memory\uff0c\u90a3\u4e48\u9700\u8981\u8fd9\u4e2anamespace\u7684Pod\u7b49Object\u6709\u660e\u786e\u7684request\u5b9a\u4e49\uff0climits.cpu\/limits.memory\u76f8\u540c\u7684\u8981\u6c42\u3002\u4e86\u89e3\u66f4\u591aResourceQuota\uff0c\u770b<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/quota-api-object\/\" target=\"_blank\" rel=\"noreferrer noopener\">\u8fd9\u91cc<\/a>\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-25.png\" alt=\"\" class=\"wp-image-464\" width=\"328\" height=\"299\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-25.png 656w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-25-300x273.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-26.png\" alt=\"\" class=\"wp-image-465\" width=\"328\" height=\"299\" srcset=\"https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-26.png 656w, https:\/\/www.funnymuddy.com\/wp-content\/uploads\/2020\/05\/image-26-300x273.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Security<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/controlling-access\/\" target=\"_blank\">Controlling access to the Kubernetes API<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/security\/overview\/\" target=\"_blank\">Overview of cloud native security<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/policy\/pod-security-policy\/\" target=\"_blank\">Pod security policy<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/admission-controllers\/#podsecuritypolicy\" target=\"_blank\">Admission controllers<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/configure-pod-container\/configure-service-account\/\" target=\"_blank\">ServiceAccount<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Logging<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Metrics<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Service Catalog<\/h2>\n\n\n\n<p>Kubernetes\u652f\u6301\u5b89\u88c5<a href=\"https:\/\/kubernetes.io\/docs\/tasks\/service-catalog\/install-service-catalog-using-helm\/\" target=\"_blank\" rel=\"noreferrer noopener\">Service Catalog<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kubernetes API<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/reference\/generated\/kubernetes-api\/v1.18\/#-strong-api-overview-strong-\" target=\"_blank\">Kubernetes API Doc<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/kubernetes\/community\/blob\/master\/contributors\/devel\/sig-architecture\/api-conventions.md#spec-and-status\" target=\"_blank\">Kubernetes API Conventions<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/stateful-application\/mysql-wordpress-persistent-volume\/#create-persistentvolumeclaims-and-persistentvolumes\" target=\"_blank\">WordPress + MySQL<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/kubernetes.io\/docs\/tutorials\/stateless-application\/guestbook\/\" target=\"_blank\">PHP Guestbook + Redis<\/a><\/p>\n\n\n\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5728WordPress\u4f8b\u5b50\u4e2d\u7528\u5230\u4e86StatefulSet API Object\u3002StatefulSet\u7528\u6765\u7ba1\u7406stateful\u5e94\u7528\u3002Pod\u7684dns\u4e0d\u4f1a\u53d8\uff0c\u5373\u4f7f\u91cd\u65b0\u521b\u5efa\uff0c\u800c\u4e14DNS\u5185\u542b\u4e00\u4e2a\u5e8f\u53f7\u3002Pod\u5982\u679c\u7ed1\u5b9aPVC\uff0c\u90a3\u4e48PVC\u5c06\u548c\u8fd9\u4e2aPod DNS\u6c38\u4e45\u7ed1\u5b9a\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"blob:https:\/\/www.funnymuddy.com\/ed020211-71eb-402e-aeb6-e2a9b3f3fddf\" alt=\"\" width=\"283\" height=\"164\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u53c2\u8003<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/coding-bootcamps.com\/blog\/kubernetes-evolution-from-virtual-servers-and-kubernetes-architecture.html\" target=\"_blank\">\u67b6\u6784\u603b\u89c8<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.funnymuddy.com\/?p=379\" target=\"_blank\">\u7f51\u7edc\u603b\u89c8<\/a><br><a rel=\"noreferrer noopener\" href=\"https:\/\/blogs.cisco.com\/developer\/kubernetes-intro-1\" target=\"_blank\">4\u79cd\u7f51\u7edc\u901a\u4fe1<\/a><br><a href=\"https:\/\/www.ibm.com\/cloud\/learn\/kubernetes\" target=\"_blank\" rel=\"noreferrer noopener\">IBM\u5bf9Kubernetes\u7684\u4ecb\u7ecd<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5f00\u53d1\u8f85\u52a9\u5de5\u5177<\/h2>\n\n\n\n<p><a href=\"cdk8s.io\">cdk8s.io<\/a>?<\/p>\n\n\n\n<p>\u8fdb\u4e00\u6b65\u4e86\u89e3kubernetes\uff0c\u53c2\u8003\u5b98\u65b9\u6587\u6863\uff0c\u6216\u8005<a href=\"https:\/\/www.ibm.com\/cloud\/learn\/kubernetes\" target=\"_blank\" rel=\"noreferrer noopener\">IBM\u7684\u7cfb\u5217\u6587\u7ae0<\/a>\u3002<\/p>\n<div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_334\" class=\"pvc_stats all  \" data-element-id=\"334\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/plugins\/page-views-count\/ajax-loader.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>\u521d\u6b65\u4e86\u89e3 \u5565\u4e5f\u4e0d\u8bf4\u4e86\uff0c\u770b\u8fd9\u4e2a\u89c6\u9891\uff0c\u8fc4\u4eca\u4e3a\u6b62\u770b\u5230\u7684\u5bf9Kubernetes\u6700\u7b80\u5355\u6e05\u6670\u7684\u89e3\u91ca\u3002 Kubenetes\u7684&hellip;&nbsp;<a href=\"https:\/\/www.funnymuddy.com\/?p=334\" class=\"\" rel=\"bookmark\">\u9605\u8bfb\u66f4\u591a &raquo;<span class=\"screen-reader-text\">Kubernetes<\/span><\/a><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_334\" class=\"pvc_stats all  \" data-element-id=\"334\" style=\"\"><i class=\"pvc-stats-icon small\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img decoding=\"async\" src=\"https:\/\/www.funnymuddy.com\/wp-content\/plugins\/page-views-count\/ajax-loader.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[20],"class_list":["post-334","post","type-post","status-publish","format-standard","hentry","category-6","tag-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/posts\/334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=334"}],"version-history":[{"count":55,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/posts\/334\/revisions"}],"predecessor-version":[{"id":606,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=\/wp\/v2\/posts\/334\/revisions\/606"}],"wp:attachment":[{"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.funnymuddy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}