作成した基本的な操作コマンドラインリソース
//创建一个deployment资源对象。(pod控制器)
[root@master ~]# kubectl run test --image=httpd --port=80 --replicas=2
//删除控制器:
[root@master ~]# kubectl delete deployments. test
//查看deployment资源对象
[root@master ~]# kubectl get deployments.
//查看pod运行在哪个节点之上
[root@master ~]# kubectl get pod -o wide
//查看service映射出来的资源对象
[root@master ~]# kubectl get svc
//查看一个资源(service)的详细信息。
[root@master ~]# kubectl describe svc test
//删除资源对象:
[root@master ~]#kubectl delete services test
//查看deployment资源的详细信息:
[root@master ~]# kubectl describe deployments. test-web
//查看一个pod的详细信息:
[root@master ~]# kubectl describe pod test-web-8697566669-52tq
//查看replicas的详细信息
[root@master ~]# kubectl get replicasets.
replicas:和controller manager都是一种控制器
//编辑一个资源对象(servie,pod,namespace都可以进行编辑):
[root@master ~]# kubectl edit deployments. test-web
//把输出json格式的信息导入(转为)yaml格式的文本中:(反之也是相同的)
[root@master ~]# kubectl get deployments. test-web -o json > test2.yaml
サービス拡大と体積の減少
方法の一つ:コマンドラインモード:
1)创建一个deployment的资源对象:
[root@master ~]# kubectl run test --image=httpd --port=80 --replicas=2
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/test created
//回车后会有正常提示(如上所示),提示这种deployment控制器会在将来的版本中移除,以后会有pod来代替。
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
test 2/2 2 2 68s test httpd run=test
2)膨張動作
//将资源对象的副本扩容为4个:
[root@master ~]# kubectl scale deployment test --replicas=4
deployment.extensions/test scaled
展開の成功場合//確認します。
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
test 4/4 4 4 3m40s test httpd run=test
3)容積低減動作(同一の膨張と、減少させます)
//将资源对象的副本缩容为3个:
[root@master ~]# kubectl scale deployment test --replicas=3
deployment.extensions/test scaled
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
test 3/3 3 3 7m14s test httpd run=test
方法2:編集エディタを使用することもできます。
//将该deployment的副本数量扩容为4个:
[root@master ~]# kubectl edit deployments. test
//再次查看副本数量,已经扩容成功:
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
test 4/4 4 4 11m test httpd run=test
アップデートおよびロールバックサービス
1)カスタム画像をアップロードし、民間倉庫のレジストリを構築:
、ビルド民間倉庫は、ここに述べた以前の記事を参照することができますリンクをクリックしてください。
//镜像重命名:
[root@master ~]# docker tag nginx:latest 172.16.1.30:5000/nginx:v1.0
[root@master ~]# docker tag nginx:latest 172.16.1.30:5000/nginx:v2.0
[root@master ~]# docker tag nginx:latest 172.16.1.30:5000/nginx:v3.0
//上传镜像:
[root@master ~]# docker push 172.16.1.30:5000/nginx:v1.0
[root@master ~]# docker push 172.16.1.30:5000/nginx:v2.0
[root@master ~]# docker push 172.16.1.30:5000/nginx:v3.0
2)の展開を作成します。[root@master ~]# kubectl run mynginx --image=172.16.1.30:5000/nginx:v1.0 --replicas=4
//查看镜像版本信息:
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mynginx 4/4 4 4 4m51s mynginx 172.16.1.30:5000/nginx:v1.0 run=mynginx
ポッドが正常に機能していない場合は##、アイデアのトラブルシューティング:
1,通过describe命令进行查看详细信息。
[root@master ~]# kubectl describe pod bdqn-web-7ff466c8f5-p6wcw
2,通过查看kubelet的日志信息。
[root@master ~]# cat /var/log/messages | grep kubelet
更新サービスのミラーバージョン
//更新镜像为nginx:v2.0
[root@master ~]# kubectl set image deployment mynginx mynginx=172.16.1.30:5000/nginx:v2.0
deployment.extensions/mynginx image updated
//查看是否更新成功:
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mynginx 4/4 4 4 11m mynginx 172.16.1.30:5000/nginx:v2.0 run=mynginx
あなたは、画像が正常に更新されました見ることができます。
##############方法2:同じ編集エディタで変更することができます。
//将镜像版本更新为nginx:v3.0
[root@master ~]# kubectl edit deployments. mynginx
//保存退出后(与vim编辑器操作相同),查看镜像版本:
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mynginx 4/4 4 4 16m mynginx 172.16.1.30:5000/nginx:v3.0 run=mynginx
ミラーリングロールバック操作
//执行回滚操作:
[root@master ~]# kubectl rollout undo deployment mynginx
deployment.extensions/mynginx rolled back
[root@master ~]# kubectl get deployments. -o wide #可以看到已经回滚成功
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mynginx 4/4 4 4 18m mynginx 172.16.1.30:5000/nginx:v2.0 run=mynginx
//二次执行回滚操作:
[root@master ~]# kubectl rollout undo deployment mynginx
deployment.extensions/mynginx rolled back
//查看回滚后的镜像版本:
[root@master ~]# kubectl get deployments. -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
mynginx 4/4 4 4 20m mynginx 172.16.1.30:5000/nginx:v3.0 run=mynginx
あなたは明確にK8Sデフォルトのロールバック]ドッキングウィンドウの群れクラスタでの動作のみを前後に2つのバージョン間にロールバックすることが、同じである、見ることができます。
リソースリスト(YAML)を作成するためのリソースの転送の方法
フィールドは次のように書かなければならないことを知っていると覚えておく必要がありますリソースのリストを作成します。
- apiVersion:APIバージョン
- 作成するタイプのリソースオブジェクト:種類
- メタデータ:メタデータ。名前フィールドを書き込みます(リソースオブジェクトを記述する基本情報)フィールドです。
- 仕様:説明ユーザ所望の状態。コンテナと画像フィールドが必要な書き込み磁場、コンテナ------>画像です。
- 状況:今ポッドれている状態。(自動的に生成されたポッド容器で実行)
1,查看api所有的版本:(每个版本都有各自的功能,当然你还可以自己添加版本)
[root@master ~]# kubectl api-versions
admissionregistration.k8s.io/v1beta1
apiextensions.k8s.io/v1beta1
apiregistration.k8s.io/v1
apiregistration.k8s.io/v1beta1
アプリケーション/ V1
アプリケーション/ v1beta1
アプリケーション/ v1beta2
authentication.k8s.io/v1
authentication.k8s.io/ v1beta1
authorization.k8s.io/v1
authorization.k8s.io/v1beta1
自動スケーリング/ v1の
自動スケーリング/ v2beta1
自動スケーリング/ v2beta2
バッチ/ V1の
バッチ/ v1beta1
certificates.k8s.io/v1beta1
coordination.k8s.io/v1
coordination.k8s.io/ v1beta1の
events.k8s.io/v1beta1の
拡張/ v1beta1
networking.k8s.io/v1の
networking.k8s.io/v1beta1の
node.k8s.io/v1beta1の
ポリシー/ v1beta1
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
V1
2、ヘルプツールは、(説明)あなたはYAMLファイルの書き込み:
非常に便利な、おなじみ使用する必要があります。
//比如创建pod,需要用到那些字段以及对应的版本和提示:
[root@master ~]# kubectl explain pod
//查看帮助deployment的metadata字段是怎样写的:
[root@master ~]# kubectl explain deploy.metadata #部分资源对象名可以简写,也可以补全
それは、このような名前の名前、名前空間の名前空間として、対応するサブフィールドのいくつかを与えるだろう。
3.次に、私たちはnginxのYAMLファイルのシンプルな展開書く
ヒント:(インデント)YAMLファイル形式を書き込む際には注意を払うようにしてください[root@master yaml]# vim nginx.yaml #注意,要以.yaml结尾
kind: Deployment #类型为deployment
apiVersion: extensions/v1beta1 #对应的版本为v1beta1
metadata:
name: nginx-deploy #定义该资源对象的名称
spec:
replicas: 2 #副本数量为2
template: #定义模板
metadata:
labels: #在模板中定义标签,标签的作用用于后面连接service使用
app: web-server
spec:
containers:
- name: nginx #定义pod名称(自定义)
image: nginx #指定镜像
//运行yaml文件:(有以下两种方法)
[root@master yaml]# kubectl apply -f nginx.yaml #推荐使用该种方法
deployment.extensions/nginx-deploy created
または:[root@master yaml]# kubectl create nginx.yaml
//查看pod是否运行成功:
[root@master yaml]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deploy-56558c8dc7-pjdkk 1/1 Running 0 117s
nginx-deploy-56558c8dc7-rxbpb 1/1 Running 0 117s
//如果需要通过yaml文件将资源对象进行删除:
[root@master yaml]# kubectl delete -f nginx.yaml
deployment.extensions "nginx-deploy" deleted
この方法は、一般的に使用されている、あなたは一つ一つが手作業ポッドを削除行く必要はありません。
図4に示すように、上記展開関連付けるためにサービス・リソース・オブジェクトを作成する
役割サービスは、主にサービスにアクセスする均一なインタフェースを提供するために使用されます。サービスとエンドポイントのメンテナンス間のクラスタのマッピングをK8S。
//编写service的yaml文件:
[root@master yaml]# vim nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: NodePort #定义service的类型为nodeport
selector: #标签选择器,用于关联deployment
app: web-server #注意,该标签必须要deployment的标签一致,不然无法与deployment进行关联
ports: #定义端口
- protocol: TCP #协议为TCP
port: 8080 #定义cluster ip对应的端口
targetPort: 80 #定义容器内的端口
nodePort: 30000 #暴露给外网的端口
:// YAMLファイルを実行
#kubectl [マスター@ルートYAML]を-f nginxの-svc.yaml適用
作成したサービス/ nginxの-SVC
//の情報サービスをチェックしてください:
説明:
クラスタIPデフォルトタイプのサービス。クラスタIPは、クラスタの内部へのアクセスをサポートし、クラスタ内の各ノードは、IPアドレスを介して相互にアクセスすることができます。
そしてnodeportポートタイプは、ネットワーク外の外部ネットワークにさらされているホストポート+ IPアドレスのマッピングによってアクセスすることができます。
//テストアクセスnginxのページ:
仕事への設定マスターノード:
仕事に必要なマスターは、どのようにそれを行うならば、我々はK8Sアーキテクチャを知って、クラスタのデフォルトのマスター・ノードは、動作しないのですか?
1)执行以下命令设置处于工作状态:
[root@master yaml]# kubectl taint node master node-role.kubernetes.io/master-
node/master untainted
2)修改上面的yaml文件,将副本数量改为3个。
[root@master yaml]# vim nginx.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: nginx-deploy
spec:
replicas: 3
template:
metadata:
labels:
app: web-server
spec:
containers:
- name: nginx
image: nginx
3)重新执行yaml文件:
[root@master yaml]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deploy configured
4)验证pod会分配给master:(默认是不会分配给master的)
[root@master yaml]# kubectl get pod -o wide
私たちは、負荷分散を実現するために、均等にクラスタ内の各ノードに割り当てられて見ることができます。
マスターノードを復元します(作業に参加していません)
[root@master yaml]# kubectl taint node master node-role.kubernetes.io/master="":NoSchedule
node/master tainted
//重新运行yaml文件,查看pod是否还会分配给master
[root@master yaml]# kubectl delete -f nginx.yaml
deployment.extensions "nginx-deploy" deleted
[root@master yaml]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deploy created
注:私はポッドの上に持って、新しい、ドッキングウィンドウの群れのように、もともとマスターのポッドに割り当てられたポッドは、生成されたポッドがランダムに他のノードに割り当てられた直後に、存在し続けます。
指定されたノード走行位置ポッド
私たちは、そのポッドがランダムKUBE-プロキシコンポーネントによってノードに割り当てられている知っているが、あなたは?行う方法を、どのノード上で実行されているポッドを指定したい場合は、
ドッキングウィンドウの群れで、我々はノードラベルに再生することによって行うことができます。
1)//定义标签:
[root@master yaml]# kubectl label nodes node01 test=123 #标签自定义
node/node01 labeled
//如果要删除标签:
[root@master yaml]# kubectl label nodes node01 disktype-
2)//验证节点标签,并显示它们的标签状态:
[root@master yaml]# kubectl get nodes --show-labels
私たちは、あなただけの定義されたタグを表示することができ、node01を参照してください。
3)//修改yaml文件:
[root@master yaml]# vim nginx.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: nginx-deploy
spec:
replicas: 6
template:
metadata:
labels:
app: web-server
spec:
containers:
- name: nginx
image: nginx
nodeSelector: #添加节点选择器
test: '123' #指定刚刚自定义的标签,如果有数字则需要用单引或者双引号括起来
//重新执行yaml文件:
[root@master yaml]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deploy configured
4)//查看pod是否会运行在指定的node01上:
[root@master yaml]# kubectl get pod -o wide
注:元を交換するノード上のポッドを実行します。
--------この記事の最後に、これまで、読んでくれてありがとう--------