k8s 学习笔记七之 hello world
hello world
1. 创建第一个 pod
1
|
kubectl run --generator=run-pod/v1 hello-node --image=gorpher/echoservice:v1 --port=8901
|
官方不在推荐使用 v1 的方式去创建 pod, 推荐使用 deployment 创建和扩容 pod
查看刚刚创建的 deployment
1
|
kubectl get deployments
|
查看通过 deployment 创建的 pod
查看 pod 输出日志:
1
|
kubectl logs hello-node
|
查看群集的 metadata 运行:
如下结果:
1
2
3
4
|
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
|
查看集群的 events 运行:
查看 kubectl 设置运行:
允许外部访问
默认情况下,pod 只可以在 Kubernetes 群集内部访问,为了使 hello-node 容器可以从 Kubernetes 虚拟网络外访问,你必须用 Kubernetes service 让 pod 对外开放。
说明: 目前 type 只是 Cluster、LoadBalancer 和 NodePort 三种方式,type=LoadBalancer 依赖 Iaas 服务,在 gce 平台可以使用,Cluster 只能在集群内访问,这里直接使用 NodePort 方式
1
|
kubectl expose deployment hello-node --type="NodePort" --port=8901 --target-port=8901
|
注:这里 ip 还有问题
查看服务关联的 IP:
1
|
kubectl get services hello-node
|
如果没有 EXTERNAL-IP 需要等待几分钟
新增 pod 副本总数:
1
|
kubectl scale deployment hello-node --replicas=4
|
现在友 4 个副本,每个都在集群上独立运行,并能负载均衡他们之间的流量.
1
2
3
|
$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 4/4 4 4 144m
|
1
2
3
4
5
6
7
|
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-node 1/1 Running 0 144m
hello-node-7484d8d644-9klff 1/1 Running 0 145m
hello-node-7484d8d644-dg7hb 1/1 Running 0 2m25s
hello-node-7484d8d644-f57sc 1/1 Running 0 2m25s
hello-node-7484d8d644-md6tk 1/1 Running 0 2m25s
|

滚动升级
1
|
kubectl set image deployment/hello-node hello-node=gorpher/echoservice:v2
|
这会用新的镜像来更新 deployment,它会创建新的 pod 并删除旧的 pod。
1
|
kubectl get deployments
|

删除
删除 deployment 和 service
1
|
kubectl delete service,deployment hello-node
|