便携性: 无论公有云、私有云、混合云还是多云架构都全面支持
可扩展: 它是模块化、可插拔、可挂载、可组合的,支持各种形式的扩展
自修复: 它可以自保持应用状态、可自重启、自复制、自缩放的,通过声明式语法提供了强大的自修复能力
名称 Kubernetes 源于希腊语,意为 “舵手” 或 “飞行员”, 且是英文 “governor” 和 “cybernetic”的词根。 K8s 是通过将 8 个字母 “ubernete” 替换为 8 而导出的缩写。另外,在中文里,k8s 的发音与 Kubernetes 的发音比较接近。
server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD node server.js
eval $(minikube docker-env)
docker build -t hello-node:v1 .
创建 Deployment
kubectl run hello-node --image=hello-node:v1 --port=8080
查看 Deployment:
kubectl get deployments
查看pod
kubectl get pods
查看集群事件:
kubectl get events
查看 kubectl 配置:
kubectl config view
创建service
暴露到公网
kubectl expose deployment hello-node --type=LoadBalancer
kubectl get services
服务访问
minikube service hello-node --url
查看log
kubectl logs <POD-NAME>
更新应用:
response.end('Hello World Again!');
构建v2镜像
docker build -t hello-node:v2 .
修改镜像
kubectl set image deployment/hello-node hello-node=hello-node:v2
再次访问
现在可以清理您在集群中创建的资源:
kubectl delete service hello-node
kubectl delete deployment hello-node
可以停止 Minikube VM:
minikube stop
eval $(minikube docker-env -u)
或者,删除 Minikube VM:
minikube delete
通过yaml描述文件创建deployment
deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2 # tells deployment to run 2 pods matching the template
template: # create pods using pod definition in this template
metadata:
# unlike pod-nginx.yaml, the name is not included in the meta data as a unique name is
# generated from the deployment name
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
将 kubectl 的 —record 的 flag 设置为 true 可以在 annotation 中记录当前命令创建或者升级了该资源。这在未来会很有用,例如,查看在每个 Deployment revision 中执行了哪些命令。
kubectl create -f deployment.yaml --record
kubectl describe deployment nginx-deployment
kubectl get deployments
给这个nginx换个版本
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
或手动改配置
kubectl edit deployment/nginx-deployment
查看状态:
kubectl rollout status deployment/nginx-deployment
- deployment "nginx-deployment" successfully rolled out
通过record可以记录命令
kubectl rollout history deployment/nginx-deployment
deployment.extensions/nginx-deployment
REVISION CHANGE-CAUSE
1 kubectl create --filename=deployment.yaml --record=true
2 kubectl create --filename=deployment.yaml --record=true
扩容/缩容
kubectl scale deployment nginx-deployment --replicas=4
查看历史操作
kubectl rollout history deployment/nginx-deployment
回滚
kubectl rollout history deployment/nginx-deployment --revision=2
回滚到历史版本
kubectl rollout undo deployment/nginx-deployment --to-revision=2
暂停/恢复
kubectl rollout pause deployment/nginx-deploymen
kubectl rollout resume deploy nginx-deployment
原文:https://www.cnblogs.com/dh-dh/p/11046306.html