Kubernetes提示命令篇

kuberneteslogo.eabc6359f48c8e30b7a138c18177f3fd39338e05.png

GitHub(这是一个在线代码存储和版本控制平台)

■ moby/moby
■ kubernetes/kubernetes

概要

Kubernetesについて学んだTips的な記事です。
2つに分けて書く予定で1本目となります。

    1. Kubernetes技巧 命令篇

 

    Kubernetes技巧 yaml篇

特徴

    • Immutable Infrastructure

 

    • 宣言的設定 (⇔ Imperative)

 

    Auto Healing

[参考] Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー

安装步骤

2019/07現在の手順です(CentOS7を対象)Master / Worker 共通

# hostsファイルの編集
$ vi /etc/hosts

# swap無効化
$ vi /etc/fstab
#UUID=07fc8b7b-40bc-4adb-b7fd-4c6c9973c021 /boot xfs defaults 0 0
$ swapoff -a

$ echo net.bridge.bridge-nf-call-iptables = 1 > /etc/sysctl.d/99-bridge-nf-call-iptables

# SELinux OFF
$ setenforce 0
$ sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/’ /etc/selinux/config

# ファイアウォール停止/無効化
$ systemctl stop firewalld && systemctl disable firewalld

# dockerに必要なツールインストール
$ systemctl stop firewalld && systemctl disable firewalld

# dockerインストール
$ yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum install -y docker-ce
$ systemctl enable docker && sudo systemctl start docker

# kubernetesインストール前準備
$ sudo sh -c “cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

$ sudo sysctl –system
$ sudo sh -c “cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# kubernetesインストール前準備
$ yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes
$ systemctl enable –now kubelet

Master

# 初期化処理
$ kubeadm init –apiserver-advertise-address ‘192.168.1.210’ –service-cidr ‘10.0.0.0/24’ –pod-network-cidr ‘172.16.0.0/24’
# –kubernetes-version : kubeadmのバージョン指定
# –apiserver-advertise-address : MasterのIPアドレス
# –service-cidr : VIP用を払い出す為にキープされるセグメント

# 初期化処理後の実行
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

Worker

指令

設定関連

配置

contextはクラスタの情報、ユーザ、ネームスペースを組み合わせたものです。
この組み合わせで、どのKubernetesクラスタに接続するかが決まります

# 現在のコンテキスト
$ kubectl config current-context

# コンテキストの一覧
$ kubectl config get-contexts

# コンテキストの切り替え
$ kubectl config use-context [context]

# コンテキストの削除
kubectl config delete-cluster [context]

基本命令

用語概要Pod1つ以上のコンテナと共有されたボリュームで構成ReplicaSetPodのレプリカ数を管理DeploymentReplicaSetを生成。デプロイの管理ServicePodeへの接続を解決してくれる抽象的なオブジェクト
获取信息
$ kubectl get all
# Deployment
# ReplicaSet
# Pod
# Service
# 上記4つをそれぞれ取得できる
播客
# podを作成
$ kubectl create -f [pod.yml]

# pod一覧表示
$ kubectl get pod
## -o wide 詳細表示
## -A 全namespaceの結果を取得
## --show-labels ラベルも表示

# podを削除
$ kubectrl delete pod [Pod名]
$ kubectl delete -f [作成時のPod定義ファイル]<Paste>

# Podを強制削除
$ kubectl get pod -grace-period 0 -force

# podの起動
$ kubectl run testnginx --image nginx
## --image= イメージを指定
## --replicas= 起動するPod数を指定
## --env= 環境変数を渡す
## --labels= ラベルをつけて起動
## --namespace= namespaceを指定して起動

# Podでコマンドを実行する
$ kubectl exec [Pod名] -it /bin/bash

# Podの詳細情報を取得
$ kubectl describe pod [Pod名]
命名空间

默认创建的命名空间如下所示。

    • default Namespaceを持たないオブジェクトのデフォルト

 

    • kube-system Kubernetesによって作成されたオブジェクのためのNamespace

 

    kube-public 全ユーザが読み込めるNamespace
# NameSpace作成
$ kubectl create namespace [namespace]

# NameSpace確認
$ kubectl get namespace

# NameSpace削除
$ kubectl delete namespace [namespace]
$ kubectl delete -f namespace.yml

## createのサブコマンド
### clusterrole
### clusterrolebinding
### configmap
### deployment
### job
### namespace
### poddisruptionbudget
### priorityclass
### quota
### role
### rolebinding
### secret
### service
### serviceaccount
副本集

为了保持Pod的副本数量的功能

# ReplicaSetを作成
$ kubectl create -f [rc.yml]

# rc一覧表示
$ kubectl get replicasets
服务
# サービスの作成
$ kubectl expose deployment [Pod名]
## --port 
## --type
### サービスの種類
###   clusterIP : Kubernetes クラスタ内からのみアクセス可能なVIPを割り振る
###   nodePort : NodeのグローバルIP:Portで受付を行い、トラフィックを転送
###   loadBalancer : 
###   externalName : 外部のサービスに対してのエイリアスを作成

玩耍Jenkins

apiVersion: v1
kind: Pod
metadata:
  name: jenkins-pod
  labels:
    app: jenkins
spec:
  containers:
  - name: jenkins
    image: jenkins:latest
    ports:
    - containerPort: 8080
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: NodePort
  selector:
    app: jenkins
  ports:
  - name: http
    port: 8080
# Podを作成
$ kubectl apply -f jenkins_pod.yml
$ kubectl get pods -o wide | grep jenkins
jenkins-pod                           1/1       Running   0          6m        10.1.0.22   docker-for-desktop

# Serviceを作成
$ kubectl apply -f jenkins_service.yml
$ kubectl get svc -o wide | grep jenkins
jenkins      NodePort    10.100.58.177    <none>        8080:31854/TCP   7m        app=jenkins

# Jenkinsのログイン情報を取得
$ kubectl exec -it jenkins-pod /bin/bash
$ jenkins@jenkins-pod:/$ cat /var/jenkins_home/secrets/initialAdminPassword
XXXXXXXXXXXXXXXXXX
スクリーンショット 2019-07-26 10.56.53.png

请参考下面的文章。
请阅读以下文章。

■ [k8s] Pod < ReplicaSet < Deployment
■ 実践 Kubernetes ~コンテナ管理のスタンダードツールを使いこなす
■ Dockerfileを書くためのベストプラクティス【参考訳】v18.09

参考投影片

■ Docker Compose利用者から見た Kubernetes 開発環境構築入門
■ そのコンテナ、もっと「賢く」置けますよ?
■ Dockerfileを改善するためのBest Practice 2019年版

可以考虑的书籍

■ Docker/Kubernetes 实践容器开发入门
■ 入门 Kubernetes
■ Kubernetes完全指南
■ Kubernetes实践指南 支持云原生应用技术

广告
将在 10 秒后关闭
bannerAds