Kubernetes集群初体验记录

查看Linux内核版本命令
  • cat /proc/version
  • uname -a
  • cat /proc/cpuinfo #查看CPU信息
  • env #查看系统环境变量
查看Linux系统版本的命令
  • lsb_release -a,即可列出所有版本信息,这个命令适用于所有的Linux发行版,包括RedHat、SUSE、Debian…等发行版。
  • cat /etc/redhat-release,这种方法只适合Redhat系的Linux
  • cat /etc/issue,此命令也适用于所有的Linux发行版。
    安装kubectl官方说明
    kubernetes结构.png

1.Service部署

获取当前集群列表
  • kubectl get nodes
编辑Service的yaml文件
  • vi hello-service.yaml
apiVersion: v1   #当前yaml使用的API版本
kind: Service    #声明对象类型为Service,这是一个service的配置文件
metadata:          #定义源数据
  name: hello-servive   #定义service的name为hello-service
spec:          #servcie的规格说明
  type: NodePort               #声明service的类型,这里是NodePort即在每一个节点上暴露一个TCP port,将服务暴露在k8s集群之外,让集群外部也可以访问该服务
  selector:    #通过label匹配后端pod的选项
    app: hello-k8s-demo
  ports:
  -  protocol: TCP    #协议类型
    port: 80    #虚拟的service端口
    targetPort: 8080  #后端pod中容器监听的端口,到达service的流量会被负载均衡到后端某个容器的targetPort上
    nodePort: 30008  #每台节点监听的端口
创建服务
  • kubectl create -f hello-service.yaml --record
查看服务的创建结果
  • kubectl get svn|grep hello-service
查看sevice的详细信息
  • kubectl describe svn/hello-service
访问service服务
  • curl {IP}:30008/hello #若出现Connection refused则表示该服务还没有被发现,k8s会将这个服务注册到内部dns
查看service的访问地址

创建k8s内部容器busybox

  • kubectl run -i --tty busybox --image=busybox --restart=Never
    进入容器后查看hello-service的dns地址
  • nslookup hello-service #可以看到k8s自动为hello-service安装了容器入口

2.Deployment部署(创建Pod)

创建hello-service 的后端pod(一般不单独创建pod,而是通过控制器来部署pod,这里通过deployment控制器部署pod)
  • vi hello-deployment.yaml
apiVersion: apps/v1betal   #yaml使用的API版本,1.6.0以前的版本使用extensions/v1beta1
kind: Deploymnet    #对象类型
metadata:    #对象信息
  name: hello-deployment
  labels:
      app: hello-k8s-demo
spec:     #规格信息
  replicas: 2   #部署后有两个pod在运行
  template:     #pod的模板配置,每个pod都将基于该模板去创建
    metadata:    #pod的源信息
      labels:     #service通过这个label来匹配pod
        app: hello-k8s-demo
    spec:
      containers:
      -  name: hello-k8s
        image: bigwhite/hello-kubernetes-demo:v0.1
        imagePullPolicy: Always
        ports:
        -  containerPort: 8080
创建deployment
  • kubectl create -f hello-deployment.yaml --record=true
查看deployment列表
  • kubectl get deployments

3.请求的自动负载均衡

k8s会自动将服务请求负载均衡到后端pod上

查看pod信息
  • kubectl get pods|grep hello #查看名字中带有hello的pod信息
监听pod的运行日志

-kubectl logs -f hello-deployment-85539-shtcg #这是监听hello-deployment-85539-shtcg这个pod的运行日志

4.服务伸缩、版本升级与回退

pod数量扩展
  • vi hello-deployment.yaml #进入修改文件中的pod数量
  • kubectl apply -f hello-deployment.yml #让修改生效

修改容器镜像的版本,进入hello-deployment.yaml,修改spec.template.spec.containers.image的镜像版本,然后让修改生效

查看升级过程
  • kubectl rollout status deployment/hello-deployment #查看hello-deployment的升级过程
服务快速回滚到上一版本
  • kubectl rollout undo deployments/hello-deployment #回退hello-deployment到之前的版本
k8s拉取私有仓库的镜像

相关参考:

推荐阅读更多精彩内容