zoukankan      html  css  js  c++  java
  • k8s启动


    [root@ken1 ~]# kubectl get node
    NAME STATUS ROLES AGE VERSION
    ken1 Ready master 23h v1.15.2
    ken2 Ready <none> 22h v1.15.2
    ken3 Ready <none> 22h v1.15.2
     
    那些原因造成的status出现NotReady状态
    1.节点docker必须启动
    2.防火墙没关
    3.flannel网络没有配置
    4.iptables桥配置
    5.交换分区没关
    6.kubelet没启动
     
    k8s集群架构工作演示
     
    第一步:部署nginx的pod
    [root@ken1 ~]# kubectl run nginx --image=nginx -r 2
    [root@ken ~]# kubectl run httpd-ken1--generator=run-pod/v1 --image=httpd --replicas=2

     
    -r 指定创建的pod数量
     
    第二步:查看创建的pod
    [root@ken1 ~]# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    nginx-7bb7cd8db5-ffr5m 1/1 Running 0 41s
    nginx-7bb7cd8db5-sm4l5 1/1 Running 0 41s
     
    第三步:查看deployment
    [root@ken1 ~]# kubectl get deploy
    NAME READY UP-TO-DATE AVAILABLE AGE
    nginx 2/2 2 2 2m34s
     
    READY 2/2 第一个2是已经启动的pod数,第二个2是需要总共启动的pod数量
    UP-TO-DATE  需要的数量
    AVAILABLE 可用的数量
     
    第四步:出刊详细输出信息
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx-7bb7cd8db5-ffr5m 1/1 Running 0 4m41s 10.244.1.4 ken2 <none> <none>
    nginx-7bb7cd8db5-sm4l5 1/1 Running 0 4m41s 10.244.4.4 ken3 <none> <none>
     
    分析创建过程:
    1.我们使用kubectl通知api-server创建nginx deployment
    2. deployment-manager创建nginx deployment
    3. schelduler把两个pod调度到不用节点之上
    4. 节点之上的kubelet创建两个pod
     查看缩写
     kubectl api-resources
    k8s运行deployment
     
    第一步:查看当前deploy
    [root@ken1 ~]# kubectl get deploy
    NAME READY UP-TO-DATE AVAILABLE AGE
    nginx 2/2 2 2 11m
     
    第二步:查看当前pod
    kubectl
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx-7bb7cd8db5-46rfm 1/1 Running 0 3m41s 10.244.1.5 ken2 <none> <none>
    nginx-7bb7cd8db5-sm4l5 1/1 Running 0 12m 10.244.4.4 ken3 <none> <none>
     -o wide 显示详细信息
    第三步:deploy详细信息
    Kubectl describe --help
    [root@ken1 ~]# kubectl describe deploy nginx
    Name: nginx
    Namespace: default
    CreationTimestamp: Tue, 20 Aug 2019 09:37:56 +0800
    Labels: run=nginx
    Annotations: deployment.kubernetes.io/revision: 1
    Selector: run=nginx
    Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
    StrategyType: RollingUpdate
    MinReadySeconds: 0
    RollingUpdateStrategy: 25% max unavailable, 25% max surge
    Pod Template:
    Labels: run=nginx
    Containers:
    nginx:
    Image: nginx
    Port: <none>
    Host Port: <none>
    Environment: <none>
    Mounts: <none>
    Volumes: <none>
    Conditions:
    Type Status Reason
    ---- ------ ------
    Progressing True NewReplicaSetAvailable
    Available True MinimumReplicasAvailable
    OldReplicaSets: <none>
    NewReplicaSet: nginx-7bb7cd8db5 (2/2 replicas created)
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal ScalingReplicaSet 14m deployment-controller Scaled up replica set nginx-7bb7cd8db5 to 2
    查看lebels 
    kubectl get deploy nginx --show-labels
    NAME READY UP-TO-DATE AVAILABLE AGE LABELS
    nginx 2/2 2 2 50m run=nginx
    第四步:查看replicaset
    [root@ken1 ~]# kubectl get rs
    NAME DESIRED CURRENT READY AGE
    nginx-7bb7cd8db5 2 2 2 18m
     
    第五步:查看rs详细信息
    [root@ken1 ~]# kubectl describe rs nginx-7bb7cd8db5
    Name: nginx-7bb7cd8db5
    Namespace: default
    Selector: pod-template-hash=7bb7cd8db5,run=nginx
    Labels: pod-template-hash=7bb7cd8db5
    run=nginx
    Annotations: deployment.kubernetes.io/desired-replicas: 2
    deployment.kubernetes.io/max-replicas: 3
    deployment.kubernetes.io/revision: 1
    Controlled By: Deployment/nginx
    Replicas: 2 current / 2 desired
    Pods Status: 2 Running / 0 Waiting / 0 Succeeded / 0 Failed
    Pod Template:
    Labels: pod-template-hash=7bb7cd8db5
    run=nginx
    Containers:
    nginx:
    Image: nginx
    Port: <none>
    Host Port: <none>
    Environment: <none>
    Mounts: <none>
    Volumes: <none>
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal SuccessfulCreate 19m replicaset-controller Created pod: nginx-7bb7cd8db5-ffr5m
    Normal SuccessfulCreate 19m replicaset-controller Created pod: nginx-7bb7cd8db5-sm4l5
    Normal SuccessfulCreate 10m replicaset-controller Created pod: nginx-7bb7cd8db5-46rfm
     
     
    第六步:查看pod详细信息
    [root@ken1 ~]# kubectl describe po nginx-7bb7cd8db5-46rfm
    Name: nginx-7bb7cd8db5-46rfm
    Namespace: default
    Priority: 0
    Node: ken2/192.168.64.6
    Start Time: Tue, 20 Aug 2019 09:47:13 +0800
    Labels: pod-template-hash=7bb7cd8db5
    run=nginx
    Annotations: <none>
    Status: Running
    IP: 10.244.1.5
    Controlled By: ReplicaSet/nginx-7bb7cd8db5
    Containers:
    nginx:
    Container ID: docker://e9620bdc9424eba06d4815cd69f8524b6f729af4beff418ab0520e43d2af3da9
    Image: nginx
    Image ID: docker-pullable://nginx@sha256:53ddb41e46de3d63376579acf46f9a41a8d7de33645db47a486de9769201fec9
    Port: <none>
    Host Port: <none>
    State: Running
    Started: Tue, 20 Aug 2019 09:47:24 +0800
    Ready: True
    Restart Count: 0
    Environment: <none>
    Mounts:
    /var/run/secrets/kubernetes.io/serviceaccount from default-token-4vj67 (ro)
    Conditions:
    Type Status
    Initialized True
    Ready True
    ContainersReady True
    PodScheduled True
    Volumes:
    default-token-4vj67:
    Type: Secret (a volume populated by a Secret)
    SecretName: default-token-4vj67
    Optional: false
    QoS Class: BestEffort
    Node-Selectors: <none>
    Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
    node.kubernetes.io/unreachable:NoExecute for 300s
    Events:
    Type Reason Age From Message
    ---- ------ ---- ---- -------
    Normal Scheduled 11m default-scheduler Successfully assigned default/nginx-7bb7cd8db5-46rfm to ken2
    Normal Pulling 11m kubelet, ken2 Pulling image "nginx"
    Normal Pulled 11m kubelet, ken2 Successfully pulled image "nginx"
    Normal Created 11m kubelet, ken2 Created container nginx
    Normal Started 11m kubelet, ken2 Started container nginx
     
    第七步:查看pod日志
    [root@ken1 ~]# kubectl logs nginx-7bb7cd8db5-46rfm
     
    持续检测pod日志
    [root@ken1 ~]# kubectl logs nginx-7bb7cd8db5-46rfm -f
     

    测试压力
     [root@zxw10 ~]# ab -n 55 -c 10 http://10.244.3.4/index.heml
     
    删除pod
     
    第一步:直接删除deploy
    [root@ken1 ~]# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    nginx-7bb7cd8db5-46rfm 1/1 Running 0 21m
    nginx-7bb7cd8db5-sm4l5 1/1 Running 0 30m
    [root@ken1 ~]# kubectl delete po nginx-7bb7cd8db5-46rfm
    pod "nginx-7bb7cd8db5-46rfm" deleted
    [root@ken1 ~]# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    nginx-7bb7cd8db5-prgr8 1/1 Running 0 8s
    nginx-7bb7cd8db5-sm4l5 1/1 Running 0 30s
    注意:
    直接删除pod是无法进行删除的,如果说这个pod被deploy进行管理的
    [root@ken1 ~]# kubectl get deploy
    NAME READY UP-TO-DATE AVAILABLE AGE
    nginx 2/2 2 2 31m
    [root@ken1 ~]# kubectl delete deploy nginx
    deployment.extensions "nginx" deleted
    [root@ken1 ~]# kubectl get deploy
    No resources found.
    [root@ken1 ~]# kubectl get po
    No resources found.
     
     
    pod命名规则
     
    nginx3-77694b9997-c82dg
    deploy  replicaset     随机字符串
     
     
    比如:现在启动一个deploy,配置副本数为3,假如其中一个node宕机,会发生什么?
    第一步:启动deploy,副本数为3
    [root@ken1 ~]# kubectl run nginx3 --image=nginx -r 3
     
    第二步:查看pod详细信息
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 5m1s 10.244.1.8 ken2 <none> <none>
    nginx3-77694b9997-25cbs 1/1 Running 0 25s 10.244.4.9 ken3 <none> <none>
    nginx3-77694b9997-q5ngb 1/1 Running 0 25s 10.244.1.10 ken2 <none> <none>
    nginx3-77694b9997-qw5rq 1/1 Running 0 25s 10.244.4.8 ken3 <none> <none>
     
    第三步:模拟ken3宕机
    poweroff
     
    第四步:查看node节点状态
    [root@ken1 ~]# kubectl get no
    NAME STATUS ROLES AGE VERSION
    ken1 Ready master 23h v1.15.2
    ken2 Ready <none> 23h v1.15.2
    ken3 NotReady <none> 23h v1.15.2
     
     
    第五步:持续查看pod状态
    [root@ken1 ~]# kubectl get po -o wide -w
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 6m40s 10.244.1.8 ken2 <none> <none>
    nginx3-77694b9997-25cbs 1/1 Running 0 2m4s 10.244.4.9 ken3 <none> <none>
    nginx3-77694b9997-q5ngb 1/1 Running 0 2m4s 10.244.1.10 ken2 <none> <none>
    nginx3-77694b9997-qw5rq 1/1 Running 0 2m4s 10.244.4.8 ken3 <none> <none>
     
     
    创建资源的两种方式
    1,kubectl命令行工具进行创建
    2.通过yml文件
     
     
    认识yml文件
     

     
    ① apiVersion 是当前配置格式的版本。
    先执行kubectl api-resources找到所有的资源
    在执行命令 kubectl explain deploy即可获取到版本和类型信息

     

    ② kind 是要创建的资源类型,这里是 Deployment。
    ③ metadata 是该资源的元数据,name 是必需的元数据项。
    ④ spec 部分是该 Deployment 的规格说明。
    ⑤ replicas 指明副本数量,默认为 1。
    ⑥ template 定义 Pod 的模板,这是配置文件的重要部分。
    ⑦ metadata 定义 Pod 的元数据,至少要定义一个 label。label 的 key 和 value 可以任意指定。
    ⑧ spec 描述 Pod 的规格,此部分定义 Pod 中每一个容器的属性,name 和 image 是必需的。
     
     
    案列:启动nginxpod,副本数3
     
    1.命令行工具
    [root@ken1 ~]# kubectl run nginx3 --image=nginx -r 3
     
    2.编写yml文件
    第一步:编写yml文件
    [root@ken1 ~]# cat nginx.yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: nginx
    spec:
    replicas: 2
    template:
    metadata:
    labels:
    kk: ken
    spec:
    containers:
    - name: nginx
    image: nginx
     
    第二步:执行yml文件
    [root@ken1 ~]# kubectl apply -f nginx.yml
     
    第三步:查看创建的资源
    [root@ken1 ~]# kubectl get deploy
    NAME READY UP-TO-DATE AVAILABLE AGE
    nginx 2/2 2 2 59s
    nginx1 1/1 1 1 51m
    nginx3 3/3 3 3 47m
     
    第四步:查看pod
    [root@ken1 ~]# kubectl get pod
    NAME READY STATUS RESTARTS AGE
    nginx-bdbfcfb4b-5jnqz 1/1 Running 0 78s
    nginx-bdbfcfb4b-lmbkp 1/1 Running 0 78s
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 52m
    nginx3-77694b9997-25cbs 1/1 Terminating 0 47m
    nginx3-77694b9997-dsllp 1/1 Running 0 41m
    nginx3-77694b9997-q5ngb 1/1 Running 0 47m
    nginx3-77694b9997-qw5rq 1/1 Terminating 0 47m
    nginx3-77694b9997-vhlnj 1/1 Running 0 41m
     
     
    第五步:查看标签
    [root@ken1 ~]# kubectl get pod --show-labels
    NAME READY STATUS RESTARTS AGE LABELS
    nginx-bdbfcfb4b-5jnqz 1/1 Running 0 2m29s kk=ken,pod-template-hash=bdbfcfb4b
    nginx-bdbfcfb4b-lmbkp 1/1 Running 0 2m29s kk=ken,pod-template-hash=bdbfcfb4b
     
     
     
    给node打标签
     
    第一步:给node打标签
    [root@ken1 ~]# kubectl label node ken3 disk=ssd
     
    第二步;查看节点标签
    [root@ken1 ~]# kubectl get no --show-labels
    NAME STATUS ROLES AGE VERSION LABELS
    ken1 Ready master 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken1,kubernetes.io/os=linux,node-role.kubernetes.io/master=
    ken2 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken2,kubernetes.io/os=linux
    ken3 NotReady <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken3,kubernetes.io/os=linux
     
    第三步:修改yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: nginx
    spec:
    replicas: 2
    template:
    metadata:
    labels:
    kk: ken
    spec:
    containers:
    - name: nginx
    image: nginx
    nodeSelector:
    disk: ssd
     
    第四步:执行yml文件
    [root@ken1 ~]# kubectl apply -f nginx.yml
     
    第五步:查看pod
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx-66bdccc56-2d6m4 1/1 Running 0 7m18s 10.244.4.11 ken3 <none> <none>
    nginx-66bdccc56-bxh6z 1/1 Running 0 7m19s 10.244.4.10 ken3 <none> <none>
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 66m 10.244.1.8 ken2 <none> <none>
    nginx3-77694b9997-dsllp 1/1 Running 0 55m 10.244.1.11 ken2 <none> <none>
    nginx3-77694b9997-q5ngb 1/1 Running 0 62m 10.244.1.10 ken2 <none> <none>
    nginx3-77694b9997-vhlnj 1/1 Running 0 55m 10.244.1.12 ken2 <none> <none>
     
    第六步:取消标签
    [root@ken1 ~]# kubectl label no ken3 disk-
    node/ken3 labeled
    [root@ken1 ~]# kubectl get no --show-labels
    NAME STATUS ROLES AGE VERSION LABELS
    ken1 Ready master 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken1,kubernetes.io/os=linux,node-role.kubernetes.io/master=
    ken2 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken2,kubernetes.io/os=linux
    ken3 Ready <none> 24h v1.15.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=ken3,kubernetes.io/os=linux,run=nginx
     
     
    自动伸缩
     
    第一步:修改yml文件
    [root@ken1 ~]# cat nginx.yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: nginx
    spec:
    replicas: 5
    template:
    metadata:
    labels:
    kk: ken
    spec:
    containers:
    - name: nginx
    image: nginx
     
    第二步:查看pod
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx-bdbfcfb4b-2gbgr 1/1 Running 0 45s 10.244.4.14 ken3 <none> <none>
    nginx-bdbfcfb4b-l9w6p 1/1 Running 0 94s 10.244.4.12 ken3 <none> <none>
    nginx-bdbfcfb4b-qfnjt 1/1 Running 0 93s 10.244.1.15 ken2 <none> <none>
    nginx-bdbfcfb4b-snmcb 1/1 Running 0 45s 10.244.1.16 ken2 <none> <none>
    nginx-bdbfcfb4b-vw62d 1/1 Running 0 46s 10.244.4.13 ken3 <none> <none>
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 69m 10.244.1.8 ken2 <none> <none>
    nginx3-77694b9997-dsllp 1/1 Running 0 58m 10.244.1.11 ken2 <none> <none>
    nginx3-77694b9997-q5ngb 1/1 Running 0 65m 10.244.1.10 ken2 <none> <none>
    nginx3-77694b9997-vhlnj 1/1 Running 0 58m 10.244.1.12 ken2 <none> <none>
     
     
    第三步:减少pod
    [root@ken1 ~]# cat nginx.yml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
    name: nginx
    spec:
    replicas: 1
    template:
    metadata:
    labels:
    kk: ken
    spec:
    containers:
    - name: nginx
    image: nginx
     
    第四步:查看pod
    [root@ken1 ~]# kubectl get po -o wide
    NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
    nginx-bdbfcfb4b-qfnjt 1/1 Running 0 2m53s 10.244.1.15 ken2 <none> <none>
    nginx1-7885dd9f7-vqk7t 1/1 Running 0 71m 10.244.1.8 ken2 <none> <none>
    nginx3-77694b9997-dsllp 1/1 Running 0 60m 10.244.1.11 ken2 <none> <none>
    nginx3-77694b9997-q5ngb 1/1 Running 0 66m 10.244.1.10 ken2 <none> <none>
    nginx3-77694b9997-vhlnj 1/1 Running 0 60m 10.244.1.12 ken2 <none> <none>
     
    删除yml文件部署的pod
     
    方法一:删除deploy
    [root@ken1 ~]# kubectl delete deploy nginx
     
    方法二:删除yml文件
    [root@ken1 ~]# kubectl delete -f nginx.yml
     
    执行此命令yml文件依然存在!

  • 相关阅读:
    网站发布小工具,--让发布变简单一点
    鼠标右键发布文件到远程服务器
    关于跑步耳机的一些思考
    对棋牌游戏平台的一些思考
    复杂业务简单化的一个小技巧
    游戏杂记
    python 杂记
    lua debug
    quick-cocos2d-x 杂记
    Linux 杂记
  • 原文地址:https://www.cnblogs.com/itzhao/p/11385310.html
Copyright © 2011-2022 走看看