美文网首页
k8s各种资源介绍

k8s各种资源介绍

作者: 大喵哥哥666 | 来源:发表于2019-07-28 11:26 被阅读0次

    k8s各种资源介绍

    k8s最小的资源单位pod

    使用私有仓库

    • 为了方便节点下载镜像,搭建私有仓库
      docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
    • docker 1.13版镜像加速和信任http私有仓库修改方法:
      vim /etc/sysconfig/docker
      OPTIONS='--selinux-anabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.0.1:5000'
    • 修改kubelet配置文件,让pod启动的时候拉取的镜像是私有仓库的
      vim /etc/kubernetes/kubelet

    k8s中pod资源详解

    • 查看容器IP地址
      docker inspect 容器id|grep -i ipaddress
    • 查看网络类型
      docker inspect 容器id|grep -i network
    • k8s中创建一个pod资源,控制docker启动两个容器,业务容器nginx,基础pod容器

    pod的常用操作

    • 创建一个Pod
      kubectl create -f nginx_pod.yaml
    • 查看pod资源列表
      kubectl get pods
    • 查看指定pod
      kubectl get pod nginx -o wide
    • 查看Pod详细信息
      kubectl descirbe pod nginx
    • 删除Pod
      kubectl delete pod nginx
    • 查看pod的帮助文档
      kubectl explain pod
    • 强制删除pod
      kubectl delete pod test --force --grace-period=0
    • 更新pod
      kubectl apply -f nginx_pod.yaml

    rc副本控制器(Replication Controller)

    Replication Controller的作用

    应用托管在Kubernetes之后,Kubernetes需要保证应用能够持续运行,这是RC的工作内容,它会确保任何时间Kubernets中都有
    指定数量的Pod在运行。在此基础上,RC还提供了一些更高级的特性,比如滚动升级、升级回滚等。

    rc的常用操作

    • 获取rc信息
      kubectl get rc -o wide
    • 滚动升级
      kubectl rolling-update myweb -f nginx-rc2.yaml --update-period=30s
    • 回滚
      kubectl rolling-update myweb2 -f nginx-rc.yaml --update-period=1s
    • 中途终端升级
      kubectl rolling-update myweb myweb2 --rollback

    RC与Pod的关联 --Label(标签选择器)

    service资源

    运行在k8s中的容器,为什么不能直接为它做端口映射:pod的随机性

    • nodeIp:宿主机IP
    • clusterIP:10.254.0.0/16这个地址范围在/etc/kubernetes/apiserver中的KUBE_SERVICE_ADDRESSES中配置,负载均衡功能rr轮询 kubectl get all -o wide可以查看到clusterIP的信息
    • podIP

    创建service

    • port:clusterIP的端口
    • nodePort:nodeIP的端口
    • targetport:podIP的端口
    • kubectl describe svc myweb Endpoints可以查看到后端挂了哪些podIP和端口
    • 端口映射由kube-proxy自动创建

    服务的自动发现

    • kubectl scale rc myweb --replicas=3
      将pod变成三个之后,新增的pod会自动加入到service的Endpoints清单里面去

    • 修改nodePort的端口范围,默认是30000-32767
      vim /etc/kubernetes/apiserver 加KUBE_API_ARGS="--service-node-port-range=10000-60000"

    rc和service的总结

    • rc保证高可用
    • service保证负载均衡

    deployment资源

    deployment也是保证pod高可用的一种方式,解决了rc的一个痛点,pod升级之后标签名字变了,svc对应标签后面的Endpoints就没了
    kubectl edit svc myweb --修改svc

    • 创建deployment
      kubectl create -f nginx-deploy.yaml
      一个deployment会先起一个rs,然后再起pod
    • 删除deployment
      kubectl delete deployment nginx
    • 关联service
      kubectl expose deployment nginx-deployment --port=80 --type=NodePort
    • deployment升级
      kubectl edit deployment nginx-deployment
    • deployment回滚
      kubectl rollout undo deployment nginx-deployment
    • 查看历史版本
      kubectl rollout history deployment nginx-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.1:5000/nginx:1.15
    • 历史版本查询
      kubectl rollout history deployment nginx
    • 回滚到指定版本
      kubectl rollout undo deployment nginx --to-revision=1

    k8s中不同类型的pod之间如何相互访问

    通过clusterIP访问

    web服务访问db服务

    相关文章

      网友评论

          本文标题:k8s各种资源介绍

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