k8s的功能

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地址!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容