k8s实例

k8s实例

1. 创建一个deployment副本数为3,然后滚动更新镜像版本,并记录这个更新记录,最后再回滚到上一个版本

[root@master test]# cat test.yml 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels: 
    app: test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec: 
      containers:
      - image: dockerimages123/httpd:v0.1
        name: test
        imagePullPolicy: IfNotPresent


[root@master test]# kubectl apply -f test.yml 
deployment.apps/test created

[root@master haproxy]# kubectl get pod
NAME                    READY   STATUS    RESTARTS   AGE
test-85cd869cd6-7524t   1/1     Running   0          4m49s
test-85cd869cd6-8khgw   1/1     Running   0          4m49s
test-85cd869cd6-kc7fw   1/1     Running   0          4m49s

// 滚动更新
[root@master haproxy]# kubectl set image deploy/test test=dockerimage123/httpd:v2.0
deployment.apps/test image updated

[root@master haproxy]# kubectl get pod
NAME                    READY   STATUS        RESTARTS   AGE
test-6cfbd9b7f-5dxjk    1/1     Running       0          13s
test-6cfbd9b7f-8kbs8    1/1     Running       0          11s
test-6cfbd9b7f-sv9km    1/1     Running       0          14s
test-85cd869cd6-7524t   1/1     Terminating   0          9m24s
test-85cd869cd6-8khgw   1/1     Terminating   0          9m24s
test-85cd869cd6-kc7fw   1/1     Terminating   0          9m24s

[root@master haproxy]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
test-6cfbd9b7f-5dxjk   1/1     Running   0          103s
test-6cfbd9b7f-8kbs8   1/1     Running   0          101s
test-6cfbd9b7f-sv9km   1/1     Running   0          104s


[root@master haproxy]# kubectl rollout history deploy test
deployment.apps/test 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>

[root@master haproxy]# kubectl rollout history deploy test --revision=3    
deployment.apps/test with revision #3  //查看上一个版本的信息
Pod Template:
  Labels:       app=test
        pod-template-hash=6cfbd9b7f
  Containers:
   test:
    Image:      dockerimages123/httpd:v2.0
    Port:       <none>
    Host Port:  <none>
    Environment:        <none>
    Mounts:     <none>
  Volumes:      <none>
  
[root@master haproxy]# kubectl rollout undo deploy test  //回滚到上一个版本
deployment.apps/test rolled back

[root@master haproxy]# kubectl get pod
NAME                    READY   STATUS             RESTARTS   AGE
test-6cfbd9b7f-5dxjk    1/1     Running            0          32m
test-6cfbd9b7f-8kbs8    1/1     Running            0          32m
test-6cfbd9b7f-sv9km    1/1     Running            0          32m

2. 给一个应用扩容副本数为3

[root@master test]# kubectl create deploy test --image nginx
deployment.apps/test1 created

[root@master test]# kubectl get pod
test1-6d5588f8cc-4hgnt   1/1     Running             0          6m33s

[root@master test]# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
test-5f6778868d-4t9xd    1/1     Running   0          2m23s
test1-6d5588f8cc-4hgnt   1/1     Running   0          8m51s
test1-6d5588f8cc-b9qsw   1/1     Running   0          49s
test1-6d5588f8cc-vkvh5   1/1     Running   0          49s

3. 创建一个pod,其中运行着nginx、redis、mamcached

[root@master test]# cat test.yml 
---
apiVersion: v1
kind: Pod
metadata:
  name: test
  labels: 
    app: test
spec:
  containers:
  - image: nginx
    name: nginx
  - image: redis
    name: redis
  - image: memcached
    name: memcached



[root@master test]# kubectl apply -f test.yml 
pod/test created

[root@master test]# kubectl get pod
NAME   READY   STATUS             RESTARTS   AGE
test3   3/3     Running            0         18m

4. 给一个pod创建一个service,并可以通过Cluster/NodePort访问

[root@master test]# cat test.yml 
---
apiVersion: v1
kind: Pod
metadata:
  name: test
  labels: 
    app: test
spec:
  containers:
  - image: nginx
    name: nginx
---
apiVersion: v1
kind: Service
metadata:
  name: test1
spec:
  ports:
  - port: 80
    targetPort: 80
    nodePort: 30001
  selector:
    app: test1
  type: NodePort


[root@master test]# kubectl apply -f test.yml
pod/test unchanged
service/test created

[root@master test]# kubectl get pod,svc
NAME        READY   STATUS    RESTARTS   AGE
pod/test   1/1     Running   0          50s

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        7d1h
service/test4        NodePort    10.110.1100.198   <none>        80:30001/TCP   50s

[root@master test]# curl 10.110.1100.198 
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

[root@master test]# curl 192.168.182.150:30001
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>

5. 创建deployment和service,使用busybox容器nslookup解析service

[root@master test]# kubectl run test2 --image busybox -- sleep 500
pod/test2 created

[root@master test]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
test2   1/1     Running   0          22s

[root@master test]# kubectl exec -it test2 -- /bin/sh
/ # nslookup kubernetes
Server:         10.96.0.10
Address:        10.96.0.10:53

Name:   kubernetes.default.svc.cluster.local
Address: 10.96.0.1

*** Can't find kubernetes.svc.cluster.local: No answer
*** Can't find kubernetes.cluster.local: No answer
*** Can't find kubernetes.example.com: No answer
*** Can't find kubernetes.default.svc.cluster.local: No answer
*** Can't find kubernetes.svc.cluster.local: No answer
*** Can't find kubernetes.cluster.local: No answer
*** Can't find kubernetes.example.com: No answer


上一篇:Python爬虫入门一之综述


下一篇:Python学习基础知识概要