[ k8s-003 ] 运行Kubernetes

154 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

> 本章节主要是尝试先运行k8s,跟我们进到一家新公司一样,先把项目跑起来~

名词解释

  • Deployment:可以理解为部署或调度的应用

  • Pod:容器的集合,一般会将关系比较紧密的一组容器放到一个Pod中,同一个Pod中的所有容器,共享网络IP地址和Port空间,也就是说它们在一个namespace中。Pod是k8s调度的最小单位,同一Pod中的容器始终被一起调度

  • service:可以理解为处理网络端口映射的服务

用run来运行pod

kubectl run kubernetes-bootcamp \

--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \

--port=8080

--replicas=2

用deployment来运行pod

kubectl create deployment kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1

$ kubectl get pod

NAME READY STATUS RESTARTS AGE

kubernetes-bootcamp 1/1 Running 0 34m

kubernetes-bootcamp-59894765f4-5dq4t 1/1 Running 0 14s

注意带后缀的

创建service暴露端口

默认情况下,Pod只能在k8s集群内部访问。要访问部署的应用,只能直接访问容器的8080端口。为了能够从外部访问应用,需将容器的8080端口映射到节点的端口

kubectl expose pod/kubernetes-bootcamp \

--type="NodePort" \

--port 8080

kubectl expose deployment/kubernetes-bootcamp \

--type="NodePort" \

--port 8080

删除pod

kubectl delete deployment <deployment名> -n <namespace>

kubectl delete pod kubernetes-bootcamp

kubectl delete services kubernetes-bootcamp

获取容器端口信息

kubectl get services

kubectl get nodes

kubectl cluster-info

curl 192.168.49.2:31193

副本调整

kubectl get deployments -A

kubectl scale deployments/kubernetes-bootcamp --replicas=3

滚动更新

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

回退到v1版本

kubectl rollout undo

总结

这里记录一个安装过程中遇到的坑。按照文档中的安装kubectl时,会安装最新的kubectl,但在kubectl 1.18之后,这里的kubectl run不再会创建deployment了。后才发现是版本原因。(而且官方--help里仍然提示说会创建deploymetn),这里需要注意一下。

github.com/caicloud/ku…