『高级篇』docker之kubernetes基础集群命令小实战(35)
2019-02-22 11:25:02
李明
  • 访问次数: 377
  • 注册日期: 2018-07-09
  • 最后登录: 2019-10-30

原创文章,欢迎转载。转载请注明:转载自 IT人故事会 ,谢谢!原文链接地址: 『高级篇』docker之kubernetes基础集群命令小实战(35)

下面我们就来试试看怎么去操作,控制它。我们从最简单的命令开始,尝试一下kubernetes官方的入门教学:playground的内容。了解如何创建pod,deployments,以及查看他们的信息,深入理解他们的关系。源码: https://github.com/limingios/msA-docker k8s分支和 https://github.com/limingios/kubernetes-starter 基础集群的搭建查看32节到34节


v2-46373d78f34ba1c3cde522b8aa13a6ca_hd.p

kubernetes接触命令

  • kubectl version

查看版本


v2-8945be109535af3ad56694eb1d4706ad_hd.p

  • kubectl get nodes

查看nodes


v2-2f3255f6f2d407ac37e6f27ff4c8ca57_hd.p

  • kubectl get pods

查看pods


v2-4b792f750f455eed78c90a10a05da588_hd.p

  • 拉取官方的镜像

内存有点低比较慢

kubectl run kubernetes-bootcamp --image=jocatalin/kubernetes-bootcamp:v1 --port=8080


v2-dd72ebbc462e9aa02b0b1b4d14e28128_hd.p

  • 查看deploy的详细信息

kubectl describe  deploy kubernetes-bootcamp


v2-82a6397ae3dde68b11d8db5001c88b3a_hd.p

  • 查看pods的详细信息

kubectl describe  pods kubernetes-bootcamp-6b7849c495-xmmvh


v2-4170e3e42dfc55d951a9532b83b74433_hd.p

  • 如何访问刚才那个8080端口因为它在103那台机器上,可以通过apiserver的方式

启动2个窗口,一个窗口启动代理命令,

kubectl proxy


v2-6003dba136d6ec8c7ed36832b2cf64a4_hd.p

然后操作另一个窗口

curl http://localhost:8001/api/v1/proxy/namespaces/default/pods/kubernetes-bootcamp-6b7849c495-xmmvh/


v2-c2d7617c69fe562eddeb163426be6d8e_hd.p

  • 扩缩容

k8s会均匀的使用机器,不会存在一台机器用的很多,一台机器用的很少的情况。

#如果需要从2 变成1 直接还用这个命令kubectl scale deploy kubernetes-bootcamp --replicas=2#可以看到在102运行了一个实例,在103在运行了一个实例kubectl get pods -o wide


v2-96c8ae997e8140514fc1b34ff06fa8e7_hd.p


v2-0ce7e10509cc736caa7e0dc86e2afa98_hd.p

  • 升级镜像

目前状态

kubectl describe deploy kubernetes-bootcamp


v2-0f85b611e6d8ebfe91b18c41e65ed0e4_hd.p

升级镜像

#原来是v1升级为v2kubectl  set image deploy kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
kubectl describe deploy kubernetes-bootcamp


v2-65dc52c69242ace967c863f700ce94ef_hd.p


v2-a9e03e63ec6f8739b04ab913006f86a3_hd.p

deploy的状态

kubectl rollout status deploy kubernetes-bootcamp


v2-ae34dff53a8a87cbe2f3af3494beac2f_hd.p

回滚镜像

kubectl rollout undo deploy kubernetes-bootcamp#又变回v1了kubectl describe deploy kubernetes-bootcamp


v2-198f43f49e037a5b850ec0c655c07bef_hd.p

删除deploy

kubectl delete deploy kubernetes-bootcamp


v2-0f7ebc6735ac0866fefdaa6a38b1d554_hd.p

配置文件

上边用了比较多的命令了,老铁消化吸收一下,当然一直使用命令管理集群真的很不方便,当拥有大量的应用的时候很难胜任了,k8s也提供了配置文件的方式来管理。跟swarm的有点类似吧。设计和功能上有点区别。

  • yaml文件创建pod

mkdir services
cd services
vi nginx-pod.yaml


v2-746e034f109c81721429fc348aad4244_hd.p

nginx-pod.yaml 文件

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers: 
    - name: nginx
      image: nginx:1.7.9
      ports: 
        - containerPort: 80


v2-3f2dbbec72368857c816e0f2219d1e1e_hd.p

命令生成pod

kubectl create -f nginx-pod.yaml#文件写明的创建pod,就不可能创建deploykubectl get deploy
kubectl get pods -o wide


v2-eb1cdd9fdbf41f683e0ba4aa521241f4_hd.p


v2-e2281cc567722b4bc9c97f8ad2bf8eab_hd.p

启动代理尝试访问nginx老套路,一个窗口启动,一个窗口curl

#ip101启动代理kubectl proxy#ip101另一个窗口访问curl http://localhost:8001/api/v1/proxy/namespaces/default/pods/nginx/


v2-a4531ff13285b5e5c594c8cd804a1e9e_hd.p


v2-be0fb22c42db03d51d1e0061be0f75a6_hd.p

  • yaml文件创建deployment

vi nginx-Deployment.yaml

nginx-Deployment.yaml 文件

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
          - containerPort: 80


v2-ab861bfa6ae0b80aa4496b7e5b962c44_hd.p

命令生成deployment

kubectl create -f nginx-Deployment.yaml
kubectl get deploy
kubectl get pods -o wide
kubectl get pods -l app=nginx
kubectl get pods -l app=nginx -o wide


v2-3c9b9dc77b7dbb064ddf57b7efe264a4_hd.p

PS:常用的命令就说到这里吧,下次继续说说service和dns。


v2-5e0719d9fc7dd03ce32e624534c0b631_hd.p