美文网首页
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