上一篇文章中,我们一创建了一个简单的 K8S 集群,https://www.cnblogs.com/klvchen/p/9553499.html
这里我们开始使用 kubectl 命令来创建应用,下面创建的 pod ,service 的 ip 地址范围是我们创建 K8S 集群中时所指定的 (kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap)
pod 地址范围为 10.244.0.0/16
service 地址范围为 10.96.0.0/12

创建 deployment

# 通过 kuectl run 命令来创建一个 deployment
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --dry-run=true

K8S 基本操作 Cloud 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
nginx-deploy 是我们创建 deployment 的名字
--image : 指定使用的镜像
--port=80 :容器暴露的端口,该端口只能在 K8S 集群中访问
-dry-run=true : 检测语法是否错误,不会正在创建
# 创建 nginx-deploy
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 

# 查看 deployment
kubectl get deployment

K8S 基本操作 Cloud 第2张

# 查看 pod
kubectl get pods 或 kubectl get pods -o wide

K8S 基本操作 Cloud 第3张
这里我们可以使用 K8S 集群中任意一台服务器访问 curl 10.244.2.2 获得 nginx 的内容

删除 pod

# kubectl delete 删除 pod
kubectl delete pods  nginx-deploy-5b595999-zp4b4

K8S 基本操作 Cloud 第4张
当我们再查看时,发现 pod 删除后自动再创建了,而且所在的节点也改变了,对应的 pod 的 ip 也改变了
K8S 基本操作 Cloud 第5张

创建 service

上面 pod 删除后重新创建,ip地址会发生改变,为解决这问题,我们使用 service

kubectl expose deployment nginx-deploy --name=nginx --port=80 --protocol=TCP

# 查看 service
kubectl get svc

# 取得确认对象的详细信息
kubectl describe svc nginx

K8S 基本操作 Cloud 第6张
我们使用集群中的任何服务器访问 curl 10.98.120.192 获得 nginx 的内容,即使 pod 删除后再重建

删除 nginx-deploy , nginx
kubectl delete deployment nginx-deploy
kubectl delete svc nginx

扩容缩容Pod的操作

# 重新创建一个 pod
kubectl run myapp --image=ikubernetes/myapp:v1 --port=80

# 创建 service
kubectl expose deployment myapp --name=myapp --port=80
kubectl get svc

K8S 基本操作 Cloud 第7张
访问 service myapp
K8S 基本操作 Cloud 第8张

# 执行扩容缩容Pod的操作
kubectl scale --replicas=5 deployment myapp
kubectl get pods -o wide

K8S 基本操作 Cloud 第9张

升级镜像

# 通过 kubectl set image 升级镜像
kubectl set image deployment myapp myapp=ikubernetes/myapp:v2

# 再次访问 service ip
curl 10.110.3.25

K8S 基本操作 Cloud 第10张

恢复到上一个版本

# 恢复上一个版本的镜像
kubectl rollout undo deployment myapp
kubectl rollout status deployment myapp 

# 再次访问 service ip
curl 10.110.3.25

K8S 基本操作 Cloud 第11张

查看标标签

kubectl get pods --show-labels

K8S 基本操作 Cloud 第12张
service 是根据 pod 的标签来进行管理

添加标签

# 添加 release 标签,值为 stable
kubectl label pods myapp-6865459dff-445x2 release=stable

标签选择器

kubectl get pods -l release!=stable
kubectl get pods -l "release in (stable,beta,alpha)"
kubectl get pods -l "release notin (stable,beta,alpha)"

节点的标签

# 获取节点的标签
kubectl get nodes --show-labels

# 添加节点的标签
kubectl label nodes node1 disktype=ssd

# 删除节点的标签
kubectl label nodes node1 disktype-
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄