k8s 操作

一些命令:

创建一个 deployment

kubectl run nginx --image=nginx --replicas=2 --port=80

 


查看 pod

kubectl get pods

 


查看

kubectl get deployments

 

删除

kubectl delete deployments nginx

 

 将服务映射到 外网, 官网的说明是

kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer

--type=LoadBalancer  =  外部的 负载均衡器,需要自行添加才能使用。

 

具体可查看 官网

http://kubernetes.io/docs/user-guide/services/#type-loadbalancer

 

不指定类型 默认是 'ClusterIP'  ClusterIP 类型 只能作为 集群内部访问

 

而我们需要指定的类型是 NodePort

kubectl expose deployment nginx --target-port=80 --type=NodePort

 

因为映射的外部端口为随机端口,所以需要查看映射端口:

[root@k8s-master ~]#kubectl describe service nginx |grep NodePort
Type:                   NodePort
NodePort:               <unset> 30405/TCP

 

测试:   这里任何一个 node 与 master 都可以使用这个端口访问   

curl k8s-master:30405

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

 

 

 

 

 

 

 

 

 


编写一个 pods 的 yaml 文件

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

 





编写一个 RC 的 yaml 文件

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-rc
spec:
  replicas: 2     #副本数量2
  selector:       #通过selector 来筛选要控制的Pod
    app: nginx    #必须与labels 名称相同
  template:       # Pod 的定义
    metadata:
      labels:     # 定义Pod 的标签,必须与selector名称相同
        app: nginx
      name: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx   #镜像名称,必须从仓库拉取,本地镜像也必须有私有仓库地址,否则拉取失败。
        ports:
        - containerPort: 80

 

 

 

查看 rc 的情况

[root@k8s-master ~]#kubectl get rc
NAME       DESIRED   CURRENT   AGE
nginx-rc   2         2         42s

 


使用

kubectl delete rc nginx-rc

来删除创建的rc

 

 

编写一个 Deployment 的 yaml 文件

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

 

 


使用

kubectl create -f nginx.yaml --record

进行创建

--record 参数,是记录后续创建操作,方便问题查找

 

[root@k8s-master ~]#kubectl get deployments
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2         2         2            1           28s

 

 

查看 pods 的情况:

kubectl get pods -l app=nginx

 

 

升级 deployment

创建一个新的 yaml 文件。

然后使用

kubectl apply -f nginx_new.yaml

来应用更新

 

[root@k8s-master ~]#kubectl apply -f nginx_new.yaml 
deployment "nginx-deployment" configured

 

对于单个升级我们可以直接用命令升级

[root@k8s-master ~]#kubectl set image deployment/nginx-deployment nginx=nginx:alpine
deployment "nginx-deployment" image updated

 

 升级完毕以后查看 rs 

[root@k8s-master ~]#kubectl get rs 
NAME                          DESIRED   CURRENT   AGE
nginx-deployment-3336418496   2         2         34m
nginx-deployment-59027981     0         0         55m

可以看到有两个rs , 这就是作为回滚用的

 

查看 pod 情况

kubectl get pods -l app=nginx

 

 

 

 

使用 rollout history 可查看操作的历史记录

[root@k8s-master ~]#kubectl rollout history deployments nginx-deployment
deployments "nginx-deployment":
REVISION        CHANGE-CAUSE
1               kubectl create -f nginx.yaml --record
2               kubectl apply -f nginx_new.yaml

 


这里可以看到有2条revision. 如果需要回滚,可以使用 --revision 来做回滚。

kubectl rollout history deployments nginx-deployment --revision=2

操作以后既可回滚到 revision 2 的版本上面,像svn 中的版本回滚。

 


使用

kubectl delete deployments nginx-deployment 

来删除一个 deployment

 

posted @ 2016-10-10 11:51  丶小炒肉  阅读(482)  评论(0编辑  收藏  举报