2:什么是k8s,k8s有什么功能?
k8s是一个docker集群的管理工具
2.1:k8s的核心功能
治愈
弹性伸缩
服务的自动发现和负载均衡
滚动升级和一键回滚
2.2:k8s的应用场景
k8s最适合跑微服务项目!
3:k8s常用的资源
k8s最小的资源单位是pod,所有的资源都可以用yaml创建
3.1:创建pod资源
k8s yaml的主要组成
apiVersion: v1 api版本
kind: pod 资源类型
metadata: 属性
spec: 详细
[root@k8s-master pod]# cat k8s_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: web
spec:
containers:
- name: nginx
image: 172.16.80.22:5000/nginx:1.13
ports:
- containerPort: 80
#创建一个pod
kubectl create -f k8s_rc.yaml
#查看pod状态
kubectl get pod nginx
#查看报错信息
kubectl describe pod nginx
pod资源:至少由两个容器组成,pod基础容器和业务容器组成
3.2 ReplicationController资源
rc:保证指定数量的pod始终存活,rc通过标签选择器来关联pod
k8s资源的常见操作:
kubectl create -f xxx.yaml
kubectl get pod|rc |all
kubectl describe pod nginx
kubectl delete pod nginx 或者kubectl delete -f xxx.yaml
kubectl edit pod nginx
创建一个rc
[root@k8s-master rc]# cat k8s_rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 5
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: 172.16.80.22:5000/nginx:1.13
ports:
- containerPort: 80
rc的滚动升级 新建一个nginx-rc1.15.yaml
升级 kubectl rolling-update nginx -f nginx-rc1.15.yaml --update-period=10s
回滚 kubectl rolling-update nginx2 -f nginx-rc.yaml --update-period=1s
3.3service资源
service帮助pod暴露端口
创建一个service
[root@k8s-master svc]# cat nginx_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort #ClusterIP
ports:
- port: 80 #ClusterIP
nodePort: 30000 #nodeport
targetPort: 80 #pod port
selector:
app: myweb2
修改nodePort范围
vim /etc/kubernetes/apiserver
KUBE_API_ARGS="--service-node-port-range=3000-50000"
service默认使用iptables来实现负载均衡, k8s 1.8新版本中推荐使用lvs(四层负载均衡)
3.4 deployment资源
有rc在滚动升级之后,会造成服务访问中断,于是k8s引入了deployment资源
创建deployment
[root@k8s-master deploy]# cat k8s_deploy.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: 172.16.80.22:5000/nginx:1.13
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
requests:
cpu: 100m
deployment,先启动一个rs资源,rs控制pod的数量
rs90%的功能和rc一样
deployment升级和回滚
命令行创建deployment
kubectl run nginx --image=10.0.0.11:5000/nginx:1.13 --replicas=3 --record
命令行升级版本
kubectl set image deploy nginx nginx=10.0.0.11:5000/nginx:1.15
查看deployment所有历史版本
kubectl rollout history deployment nginx
deployment回滚到上一个版本
kubectl rollout undo deployment nginx
deployment回滚到指定版本
kubectl rollout undo deployment nginx --to-revision=2
K8s易混点辨析:nodePort、port、targetPort、containerPort
https://blog.csdn.net/yjk13703623757/article/details/79819415
在k8s中容器之间相互访问,通过VIP地址!