一起养成写作习惯!这是我参与「掘金日新计划 · 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),这里需要注意一下。