{"id":2706,"date":"2023-02-11T20:00:00","date_gmt":"2023-02-11T12:00:00","guid":{"rendered":"https:\/\/jovepater.com\/?p=2706"},"modified":"2023-02-22T00:10:26","modified_gmt":"2023-02-21T16:10:26","slug":"for-k8s-beginner-ep-6-deploy-container-yaml","status":"publish","type":"post","link":"https:\/\/jovepater.com\/article\/for-k8s-beginner-ep-6-deploy-container-yaml\/","title":{"rendered":"For K8S Beginner EP 6\uff1a\u900f\u904eYAML\u6a94\u4f86\u5efa\u7acbContainer"},"content":{"rendered":"\n
YAML\u6a94\u6848\u662fKubernetes\u90e8\u7f72\u7684\u6700\u57fa\u672c\u4e5f\u662f\u6700\u91cd\u8981\u7684\u63cf\u8ff0\u6587\u4ef6\uff0c\u900f\u904eYAML\u7684\u63cf\u8ff0\u5167\u5bb9\u53ef\u4ee5\u8f15\u6613\u7684\u90e8\u7f72\u5404\u7a2e\u8cc7\u6e90\uff0c\u751a\u81f3\u662f\u6307\u5b9a\u8cc7\u6e90\u4e4b\u9593\u7684\u95dc\u4fc2\u6216\u6240\u5c6c\u8cc7\u6e90\u6240\u9700\u8981\u7684\u786c\u9ad4\u8cc7\u6e90\u7b49\uff0c\u82e5\u9084\u4e0d\u61c2YAML\u7de8\u5beb\u7684\u8b80\u8005\uff0c\u53ef\u4ee5\u81f3\u5104\u805a\u7db2-YAML\u6559\u5b78<\/a>\u7db2\u7ad9\u81ea\u5b78YAML\u7684\u57fa\u672c\u64b0\u5beb\u80fd\u529b\uff0c\u5df2\u7d93\u64c1\u6709YAML\u6280\u80fd\u7684\u8b80\u8005\u53ef\u4ee5\u7acb\u523b\u8ddf\u8457\u672c\u6587\u5b78\u7fd2\u5982\u4f55\u900f\u904eYAML\u4f86\u5efa\u7acbContainer\u56c9\uff01 \u7528\u65bc\u5efa\u7acbKubernetes\u8cc7\u6e90\u7684YAML\u6a94\u6709\u4e00\u5b9a\u7684\u898f\u5b9a\u8207\u98a8\u683c\uff0c\u5176\u4e2d\u6700\u57fa\u790e\u7684\u56db\u500b\u5143\u7d20\u5c24\u5176\u91cd\u8981\uff0c\u5206\u5225\u662fapiVersion\u3001kind\u3001metadata\u3001spec\uff1a<\/p>\n\n\n\n \u9019\u56db\u500b\u57fa\u672c\u5143\u7d20\u7684\u6392\u5217\u7d44\u5408\u8207\u5806\u758a\uff0c\u6f38\u6f38\u7684\u5c31\u6703\u5f62\u6210\u4e00\u500b\u8907\u96dc\u7684Kubernetes\u8cc7\u6e90\u63cf\u8ff0YAML\u6a94\uff0c\u7528\u65bc\u5728Kubernetes\u5efa\u7acb\u5404\u7a2e\u8cc7\u6e90\u6216\u670d\u52d9\u3002<\/p>\n\n\n\n \u6b65\u9a5f1\uff1a<\/strong>\u5275\u5efa\u4e00\u500bYAML\u6a94\u6848\uff0c\u540d\u70bapod.yaml\u3002<\/p>\n\n\n\n \u6b65\u9a5f2\uff1a<\/strong>\u5728pod.yaml\u6a94\u6848\u5167\u5148\u653e\u5165\u57fa\u672c\u7684\u56db\u500b\u5143\u7d20\uff1a<\/p>\n\n\n \u6b65\u9a5f3\uff1a<\/strong>\u6307\u5b9aappVersion\u7248\u672c\u70bav1\u3002<\/p>\n\n\n\n \u6b65\u9a5f4\uff1a<\/strong>\u6307\u5b9akind\u70baPod\u3002<\/p>\n\n\n\n \u8a18\u5f97\uff0c\u5728Kubernetes\u5167\uff0c\u6700\u5c0f\u7684\u55ae\u4f4d\u662fPod\uff0c\u6240\u4ee5\u5efa\u7acb\u4e00\u500b\u5bb9\u5668\u7b49\u65bc\u5efa\u7acb\u4e00\u500bPod\u3002<\/p>\n\n\n\n \u6b65\u9a5f5\uff1a<\/strong>\u64b0\u5bebmetadata\u3002<\/p>\n\n\n\n \u6b65\u9a5f6\uff1a<\/strong>\u8a2d\u5b9aPod\u5167Container\u7684\u898f\u683c\u3002<\/p>\n\n\n\n \u6b65\u9a5f7\uff1a<\/strong>\u5f9e\u6b65\u9a5f2\u5230\u6b65\u9a5f6\u7d44\u5408\u8d77\u4f86\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n \u6b65\u9a5f8\uff1a<\/strong>\u900f\u904ekubectl\u6307\u4ee4\u4f86\u5efa\u7acbPod\uff0c\u6307\u4ee4\u7684\u8a9e\u6cd5\u70ba\uff1a<\/p>\n\n\n\n \u4ee5\u6b64\u6848\u4f8b\uff0c\u5be6\u969b\u6307\u4ee4\u5982\u4e0b\uff1a<\/p>\n\n\n\n \u6210\u529f\u8a0a\u606f\uff1a<\/p>\n\n\n \u6b65\u9a5f9\uff1a<\/strong>\u900f\u904ekubectl get pod\u4f86\u770b\u662f\u5426\u6709\u6210\u529f\u5efa\u7acb\u3002<\/p>\n\n\n\n \u56de\u61c9nginx-server\u9019\u500bPod\u7684\u8cc7\u8a0a\uff0c\u72c0\u614b\u70baRunning\uff0c\u8868\u793a\u6210\u529f\u5efa\u7acb\u4e26\u904b\u884c\u3002<\/p>\n\n\n \u6b65\u9a5f10\uff1a<\/strong>\u900f\u904ekubectl describe\u6307\u4ee4\u4f86\u67e5\u8a62nginx-server\u9019\u500bPod\u7684\u8a73\u7d30\u8cc7\u8a0a\u3002<\/p>\n\n\n\n \u8a73\u7d30\u8a0a\u606f\u53ca\u8aaa\u660e\u5982\u4e0b\uff1a<\/p>\n\n\n ~ END ~<\/p>\n\n\n\n
<\/p>\n\n\n\n\u6700\u57fa\u790e\u7684\u56db\u500b\u5143\u7d20<\/strong><\/h2>\n\n\n\n
\n
\u64b0\u5beb\u4e00\u500b\u555f\u52d5Pod\u7684YAML\u6a94<\/strong><\/h2>\n\n\n\n
\napiVersion:\nkind:\nmetadata:\nspec:\n<\/pre><\/div>\n\n\n
apiVersion: v1<\/code><\/pre>\n\n\n\n
kind: Pod<\/code><\/pre>\n\n\n\n
metadata:\n name: nginx-server # \u7d66\u9019\u500bPod\u4e00\u500b\u540d\u7a31\u70banginx-server\n labels: # \u8a2d\u5b9a\u6a19\u7c64\u7d66\u9019\u500bPod\uff0c\u6a19\u7c64\u70bakey-value\u683c\u5f0f\n env: production # \u589e\u52a0\u4e00\u500blabel\uff0ckey=env, value=production\n # \u6a19\u7c64\u53ef\u4ee5\u6709\u5f88\u591a\u500b\uff0c\u5728\u6b64\u7bc4\u4f8b\u4e2d\u4efb\u4f55label\u4e0d\u5f71\u97ff\u904b\u4f5c<\/code><\/pre>\n\n\n\n
spec:\n containers: # \u6307\u5b9aPod\u5167Container\u7684\u898f\u683c\n - name: nginx # \u6307\u5b9a\u9019\u500bContainer\u7684\u540d\u7a31\n image: nginx # \u6307\u5b9aimage (\u9810\u8a2d\u5f9eDocker Hub\u6293\u4e0b\u4f86)<\/code><\/pre>\n\n\n\n
\napiVersion: v1\nkind: Pod\nmetadata:\n name: nginx-server\n labels:\n env: production\nspec:\n containers:\n - name: nginx\n image: nginx\n<\/pre><\/div>\n\n\n
$ kubectl create -f [\u6a94\u6848\u540d\u7a31]<\/code><\/pre>\n\n\n\n
$ kubectl create -f pod.yaml<\/code><\/pre>\n\n\n\n
$ kubectl get pod nginx-server<\/code><\/pre>\n\n\n\n
$ kubectl describe pod nginx-server<\/code><\/pre>\n\n\n\n
\n# \u9019\u500bPod\u7684\u540d\u5b57\u662fnginx-server\uff0c\u5c0d\u61c9\u5230pod.yaml\u5167\u5bb9\u7684metadata->name\nName: nginx-server\nNamespace: default\nPriority: 0\nService Account: default\nNode: minikube\/192.168.49.2\nStart Time: Wed, 25 Jan 2023 15:29:07 +0800\n# \u6a19\u7c64\uff0c\u5c0d\u61c9\u5230pod.yaml\u5167\u5bb9\u7684metadata->labels->env\nLabels: env=production\nAnnotations: <none>\n# Pod\u904b\u884c\u72c0\u614b\nStatus: Running\nIP: 172.17.0.3\nIPs:\n IP: 172.17.0.3\nContainers:\n # \u5efa\u7acb\u9019\u500bContainer\u7684\u540d\u5b57\uff0c\u5c0d\u61c9\u5230pod.yaml\u5167\u5bb9\u7684spec->containers->name\n nginx:\n # Container ID\u662f\u7531Container Engine Docker\u7d66\u7684\u4e00\u500b\u552f\u4e00\u503c\uff0c\u4ee3\u8868\u9019\u500bContainer\u7684\u8eab\u5206\u8b49\n Container ID: docker:\/\/c713fda0b8847ab686d4be2c866b2b2ffdb2f5339283eba59f79c0a927c172d8\n # \u5efa\u7acb\u9019\u500bContainer\u7684image\uff0c\u5c0d\u61c9\u5230pod.yaml\u5167\u5bb9\u7684spec->containers->image\n Image: nginx\n Image ID: docker-pullable:\/\/nginx@sha256:b8f2383a95879e1ae064940d9a200f67a6c79e710ed82ac42263397367e7cc4e\n Port: <none>\n Host Port: <none>\n State: Running\n Started: Wed, 25 Jan 2023 15:29:11 +0800\n Ready: True\n Restart Count: 0\n Environment: <none>\n Mounts:\n \/var\/run\/secrets\/kubernetes.io\/serviceaccount from kube-api-access-jz2nr (ro)\nConditions:\n Type Status\n Initialized True\n Ready True\n ContainersReady True\n PodScheduled True\nVolumes:\n kube-api-access-jz2nr:\n Type: Projected (a volume that contains injected data from multiple sources)\n TokenExpirationSeconds: 3607\n ConfigMapName: kube-root-ca.crt\n ConfigMapOptional: <nil>\n DownwardAPI: true\nQoS Class: BestEffort\nNode-Selectors: <none>\nTolerations: node.kubernetes.io\/not-ready:NoExecute op=Exists for 300s\n node.kubernetes.io\/unreachable:NoExecute op=Exists for 300s\n# \u4ee5\u6642\u9593\u5e8f\u5217\u51fa\u9019\u500bPod\u6240\u6709\u7684\u4e8b\u4ef6\uff0c\u5305\u542b\u5efa\u7acb\u3001\u4e0b\u8f09image\u3001\u555f\u52d5\u7b49\u4e8b\u4ef6\nEvents:\n Type Reason Age From Message\n ---- ------ ---- ---- -------\n Normal Scheduled 19s default-scheduler Successfully assigned default\/nginx-server to minikube\n Normal Pulling 18s kubelet Pulling image "nginx"\n Normal Pulled 15s kubelet Successfully pulled image "nginx" in 3.186193527s\n Normal Created 15s kubelet Created container nginx\n Normal Started 15s kubelet Started container nginx\n<\/pre><\/div>\n\n\n
\n\n\n\n