美文网首页
k8s-02-常见资源

k8s-02-常见资源

作者: UncleZ_strive | 来源:发表于2019-12-10 21:02 被阅读0次

1.创建pod资源

pod是最小资源单位.
任何的一个k8s资源都可以由yml清单文件来定义

k8s yaml的主要组成:

apiVersion: v1 api版本
kind: pod 资源类型
metadata: 属性
spec: 详细

1.master节点编写k8s_pod.yml

[root@k8s-master rc]# cat k8s_pod.yml 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: web
spec:
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80

2.上传nginx:1.13镜像到仓库

1.导入镜像
docker load -i docker_nginx1.13.tar.gz 
2.创建标签
docker tag docker.io/nginx:1.13 10.0.0.11:5000/nginx:1.13
3.上传到本地仓库
docker push 10.0.0.11:5000/nginx:1.13 

4.创建资源

kubectl create -f k8s_pod.yml 创建资源
kubectl get pod 查看pod资源
kubectl get pod -o wide  产看资源列表
kubectl describe pod nginx  产看资源描述

此时会发现pull不到镜像

5.去私有仓库上传镜像

docker load -i pod-infrastructure-latest.tar.gz 
docker tag docker.io/tianyebj/pod-infrastructure:latest 10.0.0.11:5000/pod-infrastructure:latest
docker push 10.0.0.11:5000/pod-infrastructure:latest

5.修改镜像配置文件/etc/kubernetes/kubelet地址到私有仓库(所有节点)

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.0.0.11:5000/pod-infrastructure:latest"

重启 systemctl restart kubelet.service

2.创建ReplicationController资源

通过metadata标签选择器管理pod
rc:保证指定数量的pod始终存活,rc通过标签选择器来关联pod

k8s资源的常见操作:

kubectl create -f xxx.yaml         创建
kubectl get pod|rc                 查看资源列表
kubectl describe pod nginx         查看资源描述 
kubectl delete pod nginx 或者kubectl delete -f xxx.yaml   删除资源
kubectl edit pod nginx             修改资源配置
  • 创建一个rc

1.master节点编写rc.yml

[root@k8s-master rc]# cat rc.yml 
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx
spec:
  replicas: 5  #副本5
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: 10.0.0.11:5000/nginx:1.13
        ports:
        - containerPort: 80

2.创建资源
kubectl create -f rc.yml

  • rc滚动的升级和回滚

rc的滚动升级 新建一个nginx-rc1.15.yaml


image.png

升级 kubectl rolling-update nginx -f nginx-rc1.15.yaml --update-period=10s
回滚 kubectl rolling-update nginx2 -f nginx-rc.yaml --update-period=1s

--update-period 指定升级间隔时间

3.service资源

  • service默认使用iptables来实现负载均衡, k8s 1.8新版本中推荐使用lvs(四层负载均衡 传输层tcp,udp)

命令行创建service资源

kubectl expose rc  nginx --type=NodePort --port=80
kubectl expose 资源类型  资源名称  端口类型  暴漏端口
  • 创建一个svc

1.编写yml文件

[root@k8s-master deploy]# cat svc.yml
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort  #ClusterIP
  ports:
    - port: 80          #clusterIP
      nodePort: 30000   #node port
      targetPort: 80    #pod port
  selector:
    app: myweb2

2.创建资源
kubectl create -f svc.yml

kubectl scale rc nginx --replicas=2 非交互式修改副本数量
kubectl exec -it pod_name /bin/bash 进入容器

3.修改nodePort范围

vim  /etc/kubernetes/apiserver
KUBE_API_ARGS="--service-node-port-range=3000-50000"

4.deployment资源

  • 创建

1.编写yml文件

[root@k8s-master deploy]# cat deploy.yml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: 10.0.0.11:5000/nginx:1.13
        ports:
        - containerPort: 80
        resources:  
          limits:
            cpu: 100m
          requests:
            cpu: 100m

2.命令行创建deployment

kubectl run nginx --image=10.0.0.11:5000/nginx:1.13 --replicas=3 --record

  • 升级和回滚

命令行创建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-02-常见资源

      本文链接:https://www.haomeiwen.com/subject/hogbgctx.html