k8s常用的资源

1、创建pod资源
pod是k8s最小的资源单位
k8s yaml的主要组成

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

pod配置文件1:

cat k8s_pod.yaml
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

pod资源:至少由两个容器组成,pod基础容器和业务容器组成

pod配置文件2:
apiVersion: v1 
kind: Pod 
metadata: 
  name: test 
  labels: 
    app: web 
  spec: 
    containers: 
      - name: nginx 
        image: 10.0.0.11:5000/nginx:1.13 
        ports: 
          - containerPort: 80 
      - name: busybox 
        image: 10.0.0.11:5000/busybox:latest 
        command: ["sleep","10000"]
mkdir k8s
cd k8s/
mkdir pod
cd pod
vi k8s_pod.yaml
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

k8s常用的资源_第1张图片
上传安装包,导入容器,打标签,再推到私有仓库,然后再创建pod

kubect1 create -f k8s_pod.yaml

k8s常用的资源_第2张图片
k8s常用的资源_第3张图片
k8s常用的资源_第4张图片
k8s常用的资源_第5张图片
k8s常用的资源_第6张图片
k8s常用的资源_第7张图片
重启生效
在这里插入图片描述
k8s常用的资源_第8张图片

2、ReplicationController资源
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

mkdir rc
cd rc/
vi 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: 10.0.0.11:5000/nginx:1.13 
        ports: 
        - containerPort: 80
kubectl create -f k8s_rc.yaml
kubectl get rc
kubectl get pod

k8s常用的资源_第9张图片
k8s常用的资源_第10张图片
删除原则,AGE最小的
k8s常用的资源_第11张图片
rc的滚动升级 新建一个nginx-rc1.15.yaml
k8s常用的资源_第12张图片

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

service资源
service帮助pod暴露端口
创建一个service

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(四层负载均衡)

deployment资源
有rc在滚动升级之后,会造成服务访问中断,于是k8s引入了deployment资源

创建deployment
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

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,kubernetes)