千家信息网

kubernetes中Deployment配置

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,Deployment对象,顾名思义,是用于部署应用的对象。它使Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像前两篇文章中那样手动创
千家信息网最后更新 2026年11月04日kubernetes中Deployment配置Deployment对象,顾名思义,是用于部署应用的对象。它使Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像前两篇文章中那样手动创建ReplicaSet和Pod对象(使用Deployment而不直接创建ReplicaSet是因为Deployment对象拥有许多ReplicaSet没有的特性,例如滚动升级和回滚)。

Deployment:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: skx
spec:
replicas: 3
template:
metadata:
labels:
app: skx_server
spec:
containers:

  • name: httpd-test
    image: 192.168.1.10:5000/httpd:v1
    ports:
    • containerPort: 80

PS:注意,在Deployment资源对象中,可以添加Port字段,但此字段仅供用户查看,并不实际生效。
如下:
ports:

  • containerPort: 80

SERVICE

kind: Service
apiVersion: v1
metadata:
name: skx-svc
spec:
selector:
app: skx_server
ports:

  • protocol: TCP
    port: 80
    targetPort: 80

关联主机:
kind: Service
apiVersion: v1
metadata:
name: skx-svc
spec:
type: NodePort
selector:
app: skx_server
ports:

  • protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30123
    更改pod访问界面:
    [root@master ~]# kubectl exec -it skx-694cc5db89-45nvk /bin/bash
    root@skx-694cc5db89-45nvk:/usr/local/apache2# echo no.1 > htdocs/index.html
    root@skx-694cc5db89-45nvk:/usr/local/apache2# exit
    查看规则:
    [root@master ~]# iptables-save
    SNAT:Source NAT(源地址转换) DNAT:Destnation(目标地址转换) MASQ:动态的源地址转换
    Service实现的负载均衡使用的时iptables规则。IPVS
    10.107.64.232
    KUBE-SVC-QDLMDMK46RWAY7QJ

查找对应的防火墙规则
[root@master ~]# kubectl get svc

[root@master ~]# iptables-save | grep 10.107.64.232

[root@master ~]# iptables-save | grep KUBE-SVC-QDLMDMK46RWAY7QJ

[root@master ~]# iptables-save | grep KUBE-SEP-YPYQNHI3JGSZCBF5

与
[root@master ~]# kubectl get pod -o wide


ip一样

回滚到指定版本:
删除之前创建的资源:
[root@master ~]# kubectl delete -f skx-svc.yaml
service "skx-svc" deleted
[root@master ~]# kubectl delete -f skx.yaml
deployment.extensions "skx" deleted

[root@master ~]# kubectl get deployments.
No resources found.
[root@master ~]# vim skx.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: skx
spec:
revisionHistoryLimit: 10 //添加
replicas: 3
template:
metadata:
labels:
app: skx_server
spec:
containers:

  • name: httpd-test
    image: 192.168.1.10:5000/httpd:v1
    ports:
    • containerPort: 80
      准备三个版本所使用的私有镜像,来模拟每次升级不同的镜像。
      [root@master ~]# mv skx.yaml skx1.yaml
      [root@master ~]# cp skx1.yaml skx2.yaml
      [root@master ~]# cp skx1.yaml skx3.yaml

[root@master ~]# vim skx1.yaml

15行:

    image: 192.168.1.10:5000/httpd:v1

[root@master ~]# vim skx2.yaml

15行:

    image: 192.168.1.10:5000/httpd:v2

[root@master ~]# vim skx3.yaml

15行:

    image: 192.168.1.10:5000/httpd:v3

此处3个yaml文件指定不同版本的镜像。
运行一个服务,并记录一个版本信息。
[root@master ~]# kubectl apply -f skx1.yaml --record
deployment.extensions/skx created
[root@master ~]# kubectl apply -f skx2.yaml --record
deployment.extensions/skx configured
[root@master ~]# kubectl apply -f skx3.yaml --record
deployment.extensions/skx configured
查看有哪些版本信息
[root@master ~]# kubectl rollout history deployment skx
deployment.extensions/skx
REVISION CHANGE-CAUSE
1 kubectl apply --filename=skx1.yaml --record=true
2 kubectl apply --filename=skx2.yaml --record=true
3 kubectl apply --filename=skx3.yaml --record=true

运行并升级Deployment资源,并记录版本信息。
[root@master ~]# kubectl apply -f skx2.yaml --record
deployment.extensions/skx configured
此时可以运行一个关联的Service自愿去验证,升级是否成功
[root@master ~]# kubectl apply -f skx-svc.yaml
service/skx-svc created

[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpd-svc NodePort 10.97.81.154 80:31194/TCP 43h
kubernetes ClusterIP 10.96.0.1 443/TCP 5d17h
skx-svc NodePort 10.96.174.199 80:30123/TCP 16s

[root@master ~]# curl 10.96.174.199

songkaixiong | test-web | httpd | v3

回滚到指定版本。
[root@master ~]# kubectl rollout undo deployment skx --to-revision=1
deployment.extensions/skx rolled back
curl 10.96.174.199

songkaixiong | test-web | httpd | v1

用label控制Pod的位置
给node03打上一个标签
[root@master ~]# kubectl label nodes node03 disk=ssd
node/node03 labeled
指定查看node03标签:
[root@master ~]# kubectl get nodes --show-labels | grep node03
node03 Ready 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=node03,kubernetes.io/os=linux
不指定查看所有节点标签:
[root@master ~]# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
master Ready master 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,node-role.kubernetes.io/master=
node02 Ready 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node02,kubernetes.io/os=linux
node03 Ready 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=node03,kubernetes.io/os=linux
删除skx1资源:
[root@master ~]# kubectl delete -f skx1.yaml
deployment.extensions "skx" deleted

[root@master ~]# kubectl delete -f skx-svc.yaml
service "skx-svc" deleted

修改skx1.yaml配置文件:
[root@master ~]# vim skx1.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: skx
spec:
revisionHistoryLimit: 10
replicas: 3
template:
metadata:
labels:
app: skx_server
spec:
containers:

  • name: httpd-test
    image: 192.168.1.10:5000/httpd:v1
    ports:
    • containerPort: 80
      nodeSelector: //添加节点选择器
      disk: ssd //和标签内容一致
      [root@master ~]# kubectl apply -f skx1.yaml
      deployment.extensions/skx created
      三台都在node03上运行:
      [root@master ~]# kubectl get pod -o wide
      NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
      skx-55c4dc6dbc-7ztl9 1/1 Running 0 73s 10.244.2.27 node03
      skx-55c4dc6dbc-jsms7 1/1 Running 0 73s 10.244.2.28 node03
      skx-55c4dc6dbc-rfss7 1/1 Running 0 73s 10.244.2.26 node03

删除标签:
查看node03的标签:
[root@master ~]# kubectl get nodes --show-labels node03
NAME STATUS ROLES AGE VERSION LABELS
node03 Ready 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=node03,kubernetes.io/os=linux
删除node03标签
[root@master ~]# kubectl label nodes node03 disk-
node/node03 labeled
再次查看node03标签:
[root@master ~]# kubectl get nodes --show-labels node03
NAME STATUS ROLES AGE VERSION LABELS
node03 Ready 5d17h v1.15.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node03,kubernetes.io/os=linux

删除资源:
[root@master ~]# kubectl delete deployments. skx
deployment.extensions "skx" deleted
重新生成:
[root@master ~]# kubectl apply -f skx1.yaml
deployment.extensions/skx unchanged
会找不到,起不来:
[root@master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
skx-55c4dc6dbc-8rpl6 0/1 Pending 0 11s
skx-55c4dc6dbc-c2blp 0/1 Pending 0 11s
skx-55c4dc6dbc-zk7gw 0/1 Pending 0 11s

[root@master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5c98db65d4-52cdm 1/1 Running 3 5d17h
coredns-5c98db65d4-sl96w 1/1 Running 4 5d17h
etcd-master 1/1 Running 3 5d17h
kube-apiserver-master 1/1 Running 3 5d17h
kube-controller-manager-master 1/1 Running 3 5d17h
kube-flannel-ds-amd64-9vnsc 1/1 Running 4 5d17h
kube-flannel-ds-amd64-tdzrm 1/1 Running 2 5d17h
kube-flannel-ds-amd64-tvl2q 1/1 Running 5 5d17h
kube-proxy-492jr 1/1 Running 2 5d17h
kube-proxy-gccnb 1/1 Running 3 5d17h
kube-proxy-klznh 1/1 Running 2 5d17h
kube-scheduler-master 1/1 Running 4 5d17h

查看master日志:
[root@master ~]# kubectl logs -n kube-system kube-scheduler-master
查看详细描述信息
[root@master ~]# kubectl describe pod skx-55c4dc6dbc-8rpl6
查看日志
[root@master ~]# kubectl logs -n kube-system kube-scheduler-master
查看kubectl日志
[root@master ~]# less /var/log/messages | grep kubelet

标签 版本 对象 资源 信息 升级 运行 地址 日志 规则 镜像 不同 字段 文件 节点 关联 配置 一致 均衡 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 苏州找大状互联网科技有限公司 为想互联网科技怎么样 互联网科技行业发展 涨乐互联网科技 鑫亿盛互联网科技 广州互联网络科技有限公司 奔汉互联网科技 互联网科技公司名称 互联网科技类展会 玖二柒互联网科技公司待遇 中国互联网有什么科技含量 银川新华互联网科技职业技术培训学校图片 宁夏科技产业互联网案例 湖北码尼互联网科技有限公司电话 互联网行业科技股 工业互联网山东科技大学 互联网领先科技宣传片 北京互联网科技类企业分布 互联网科技和医药行业 广州万易互联网科技有限公司 中国互联网科技工作委员会毛军 左右互联网络科技 青海省互联网新科技 互联网科技与管理 互联网在线教育科技创业 玉溪新华互联网科技好不好 互联网金融科技名词解释 东营紫格互联网科技 互联网科技和医药行业
0