1.创建deployment资源对象
# cat nginx-deployment.yml
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template: #定义pod的模板
metadata: #当前pod的元数据
labels: #至少定义一个labels标签,可以创建任意一个key:value
app: nginx
spec: #当前pod的规格说明
containers: #容器
- name: nginx #容器名字
image: nginx:1.10
ports:
- containerPort: 88
创建deployment资源:
kubectl create -f nginx-deployment.yml
查看资源信息:
kubectl get deployment
kubectl get rs(ReplicaSet)
kubectl get pods --show-labels
kubectl get pods -l app=nginx
kubectl describe deployment nginx
kubectl describe deployment nginx-deployment
删除资源对象:
kubectl delete -f nginx-deployment.yml
kubectl delete deployment nginx
kubectl delete service nginx
镜像更新:
镜像更新有如下三种方法:
1.kubectl set image deployment/nginx-deployment nginx=nginx:latest
2.kubectl apply -f nginx-test.yml
3.kubectl edit deployment/nginx-deployment
查看deployment版本:
kubectl rollout history deployment/nginx-deployment #查看deployment历史版本记录
kubectl rollout history deployment/nginx-deployment --revision=2 #查看deployment指定历史版本
deployment版本回滚:
kubectl rollout undo deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment --to-revision=1
扩缩容:
kubectl scale deployment nginx-deployment --replicas=10
kubectl autoscale deployment nginx-deployment -min=10 -max=15 -cpu-percent=80
2.创建service资源对象
#cat nginx-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
spec:
ports:
- port: 80
targetport: 88
selector:
app: nginx
3.创建pod资源对象
# cat pod.yml
apiVersion: v1
kind: Pod
metadata:
name: pod-test
labels:
os: centos
spec:
containers:
- name: hello
image: centos:7
env:
- name: Test
value: "123456"
command: ["bash","-c","while True;do date;sleep 1;done"]
restartPolicy: OnFailure
kubectl create -f pod.yml
kubectl get pods pod-test
kubectl describe pod pod-test
kubectl replace -f pod.yml --force #替换资源
kubectl delete pod pod-test
kubectl logs pod-test
kubectl exec -it pod-test bash
Pod管理:健康检查
提供probe机制,有两种类型
1.livenessProbe
如果检查失败,将杀死容器,然后根据pod重启策略来决定是否重启
2.readinessProbe
如果检查失败,会把pod从服务代理分发后端踢除
Probe支持以下三种检查方式:
1.httpGet
发送http请求,返回200-400范围状态码为成功
2.exec
执行shell命令返回0
3.tcpSocket
发起tcp socket建立成功
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
os: nginx
spec:
containers:
- name: nginx
image: nginx:1.10
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /index.html
port: 80
restartPolicy: OnFailure
Pod管理:数据持久化和共享
#emptyDir示例:
apiVersion: v1
kind: Pod
metadata:
name: emptydirpod
spec:
containers:
- image: nginx:7
name: ednginx
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
#hostPath示例:
apiVersion: v1
kind: Pod
metadata:
name: hostpathpod
spec:
containers:
- image: nginx:1.10
name: ednginx
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
path: /data
type: Directory
Pod管理:httpPort
#httpPort示例
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod2
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.10
ports:
- name: http
containerPort: 80
hostIP: 0.0.0.0
hostPort: 89
protocol: TCP
- name: https
containerPort: 443
hostIP: 0.0.0.0
hostPort: 443
protocol: TCP
登录地址:http://192.168.116.147:89/ 即可访问nginx页面
kubectl logs nginx-pod2 -f #-f 相当于tailf命令一样可以实时刷新log
4.创建RC资源对象
...
参考:https://blog.csdn.net/liyingke112/article/details/76155428