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

1
kubectl get pods

查看 pod 输出日志:

1
kubectl logs hello-node

查看群集的 metadata 运行:

1
kubectl cluster-info

如下结果:

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 运行:

1
kubectl get events

查看 kubectl 设置运行:

1
kubectl config view

允许外部访问

默认情况下,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

hello-node

滚动升级

1
kubectl set image deployment/hello-node hello-node=gorpher/echoservice:v2

这会用新的镜像来更新 deployment,它会创建新的 pod 并删除旧的 pod。

1
kubectl get deployments

web_ui_update_docker_image

删除

删除 deployment 和 service

1
kubectl delete service,deployment hello-node