集群搭建:https://blog.csdn.net/u013271384/article/details/125507588
部署
命名为:deploy1:
kubectl create deployment deploy1 --image=nginx
查看
kubectl describe deployment deploy1
或
kubectl get deploy
扩/缩 服务
kubectl scale --replicas=2 deploy/deploy1
或
kubectl scale --replicas=2 deployment/deploy1
使用上面的方法指定了两个副本
监视器查看
kubectl get rs
或
kubectl describe rs
删除(监视器还在的情况下,删除pod,pod还会被重建)
kubectl delete deploy deploy1
配置查看
kubectl create deployment deploy1 --image=nginx --dry-run=client -o yaml
输出yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: deploy1
name: deploy1
spec:
replicas: 1
selector:
matchLabels:
app: deploy1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: deploy1
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
更新:
kubectl set image deployments deploy1 nginx=nginx:1.18 --record
查看部署历史:(–record指定后,会有注释显示出来)
kubectl rollout history deploy deploy1
回退
kubectl rollout undo deployment/deploy1
或 回退至指定版本:
kubectl rollout undo daemonset/deploy1 --to-revision=3
滚动更新策略
(默认启动一个pod,关闭一个pod,当要更新很多时,可以修改更新策略)
修改上面生成的yaml中的strategy: {}
创建10%个pod,再删除10%个pod
strategy:
type: RollingUpdate # type值: RollingUpdate(默认,滚动更新),Recreate(重新创建)
rollingUpdate:
maxSurge: 10% #一次最多创建 10%的节点,可以直接写固定值10,表示一次性创建10个
maxUnavailable: 0 #最大不可用数量为0,要求更新的每个pod都可用,即先增加一个再减少一个节点
查看pod集群内ip
kubectl get pods -o wide
集群内pod访问
删除上面的pod,新增yaml,
运行命令输出yaml后修改kubectl create deployment deploy1 --image=nginx --dry-run=client -o=yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: deploy1
name: deploy1
spec:
replicas: 2
selector:
matchLabels:
app: deploy1
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: deploy1
spec:
containers:
- image: nginx
name: nginx
上面保存成 deploy1.yaml后运行命令(默认情况下,Master Node不参与工作负载,即pod不能部署到master节点上,只能部署到node节点):
kubectl apply -f deploy1.yaml
或
kubectl create -f deploy1.yaml
查看pod状态
kubectl get pod -o wide
结果:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
deploy1-74b8bd969b-6hx5z 1/1 Running 0 61m 10.244.1.8 node1 <none> <none>
deploy1-74b8bd969b-w9x74 1/1 Running 0 61m 10.244.1.7 node1 <none> <none>
内部访问成功:
curl http://10.244.1.7
1. 通过service
- 集群内部访问四种模式:
clusterip Create a ClusterIP service
externalname Create an ExternalName service 依赖云服务商
loadbalancer Create a LoadBalancer service 依赖云服务商
nodeport Create a NodePort service
kubectl create service clusterip deploy1 --tcp=80:80
- 集群外部访问
kubectl create service nodeport deploy1 --tcp=80:80 --node-port=30000
--node-port=0
用于把集群内node上的服务暴露出来,有效范围30000-32767。
查看yaml: kubectl create service nodeport deploy1 --tcp=80:80 --node-port=30000 --dry-run=client -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: deploy1
name: deploy1
spec:
ports:
- name: 80-80
nodePort: 30000
port: 80
protocol: TCP
targetPort: 80
selector:
app: deploy1
type: NodePort
status:
loadBalancer: {}
service跟据selector
与 label
值为app: deploy1
的deployment关联,默认的selector只能指定app:
的标签,其他标签可以打印出yaml修改对应selector
的值
2. 通过Ingress
https://blog.csdn.net/u013271384/article/details/126238695
配置 IPv4/IPv6 双协议栈
https://kubernetes.io/zh-cn/docs/concepts/services-networking/dual-stack/