Kubernetes学習と応用(05)——Kubernetesのインストール

19697 ワード

1.CRI-Oの取り付け


コンテナランタイムインタフェースContainer Runtime Interface(CRI):Kubernetesを再コンパイルすることなく、kubelet(podの作成とコンテナの起動に使用されるクラスタノードエージェント)にOCIと互換性の異なるコンテナランタイムを使用する能力を持たせるプラグインインタフェースです.この作業に基づいて、CRI-Oプロジェクト([原名OCID]13)は、Kubernetesに軽量レベルのランタイムを提供する準備をしています.
CRI-Oでは、不要なコードやツールを必要とせずにKubernetesからコンテナを直接実行できます.容器がOCI規格に合致する限り、CRI-Oはそれを実行し、外来のツールを除去し、容器に得意なことをさせることができます:あなたの次世代の原生雲プログラムを加速させることができます.
modprobe overlay
modprobe br_netfilter

#   kubernetes cri       
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sysctl -p /etc/sysctl.d/k8s.conf

#       
yum-config-manager --add-repo=https://cbs.centos.org/repos/paas7-crio-115-release/x86_64/os/

#   CRI-O
yum install --nogpgcheck cri-o

#   CRI-O
systemctl daemon-reload
systemctl start crio

 

2.containerdのインストール

cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

#         
yum install yum-utils device-mapper-persistent-data lvm2

#   docker   
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#     (    docker      )
yum update --skip-broken && yum install containerd.io

#   containerd
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

#   containerd
systemctl restart containerd

 

3.Kubernetesのインストール


swapを閉じる
swapoff -a

vi /etc/fstab

注記swap
# /dev/mapper/cl-swap     swap                    swap    defaults        0 0

次のコマンドを実行します.
mount -a
echo "KUBELET_EXTRA_ARGS=--fail-swap-on=false" > /etc/sysconfig/kubelet

 
国内ソースでのインストール
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet && systemctl start kubelet

 
現在のKubernetesバージョンでサポートされているDockerバージョンを表示するには、「開く」をクリックします.https://github.com/kubernetes/kubernetes
対応バージョンCHANGELOG-1に進む.xx.md、dockerキーを検索すると関連情報が表示されます

4.サーバシステム環境変数の変更

vi /etc/profile

末尾に次の構成を追加
export KUBECONFIG=/etc/kubernetes/admin.conf

終了後、コマンドを実行し、構成をすぐに有効にします.
source /etc/profile

 

5.Kubernetesの初期化


コマンドを発行し、必要なミラーをロードし、Kubernetesを初期化します.
kubeadm init --cri-socket /var/run/dockershim.sock --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.17.0 --pod-network-cidr=192.168.16.0/20 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

初期化が完了すると、ノードに追加されたコマンドラインが生成され、印刷されます.
kubeadm join 192.168.xx.xxx:6443 --token ryotic.bt5ms3fx0tku0gxd \
    --discovery-token-ca-cert-hash sha256:94014c7543fd0ff86a847959e3f8e149691d4665b7dbc1abdf3d28c9c0ebf75d 

このようなコマンドは、それをコピーする必要があります.その後、Kubernetesにコンテナを追加するときに使用する必要があります.
生成されたこのトークンは24時間有効で、期限が切れたらコマンドで再生成できます
コピーを忘れた場合は、次のコマンドで再印刷できます.
kubeadm token create –print-join-command

その後adminが必要になる場合があります.confは鍵を生成し、次の操作で構成を指定した場所にコピーします.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

6.検査状態

kubectl get cs

サービスが正常に起動したことを示すメッセージが表示されます.
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok                  
controller-manager   Healthy   ok                  
etcd-0               Healthy   {"health":"true"}  

コマンドの入力
kubectl get nodes

表示
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   12m   v1.17.0

 
すべてのノードの動作状態を確認
kubectl get pods --all-namespaces

表示できる
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-9d85f5447-hccsk          1/1     Pending   0          33m
kube-system   coredns-9d85f5447-jc7dd          1/1     Pending   0          33m
kube-system   etcd-master                      1/1     Running   0          33m
kube-system   kube-apiserver-master            1/1     Running   0          33m
kube-system   kube-controller-manager-master   1/1     Running   0          33m
kube-system   kube-flannel-ds-amd64-gjp99      1/1     Running   0          11m
kube-system   kube-proxy-t8rrj                 1/1     Running   0          33m
kube-system   kube-scheduler-master            1/1     Running   0          33m

 
CorednsノードのステータスはPendingです.これは、ネットワークプラグインがインストールされていないためです.Weaveがインストールされている場合、この2つのステータスにRunningが表示されます.
マスターノードの詳細の表示
kubectl describe node master

 

7.クラスタネットワークWeave Netのインストール


ダウンロードyamlファイル
curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '
')
" > weave.yaml

変更yaml構成
vi weave.yaml

プロファイルで「/home/weave/launch.sh」を検索し、次のenvにIPALLOC_を追加します.RANGE、具体的には以下の通りです.
        spec:
          containers:
            - name: weave
              command:
                - /home/weave/launch.sh
              env:
                - name: HOSTNAME
                  valueFrom:
                    fieldRef:
                      apiVersion: v1
                      fieldPath: spec.nodeName
                - name: IPALLOC_RANGE
                  value: 192.168.16.0/20

 
ここではIP割り当て範囲をローカルで指定した範囲にバインドします.192.168.16.0/20この値は初期化時のpod-network-cidr値と一致しなければなりません.そうしないと、サービスエラーにつながる可能性があります.
プラグインのインストール
kubectl apply -f weave.yaml

プラグインの削除
kubectl delete -f weave.yaml

少し待って、コマンドを入力してpodの運行状態を見て、weave-netの状態がRunningの中にあることを見ることができます
kubectl get pod --all-namespaces -o wide

コンテンツの表示
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE     IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   coredns-9d85f5447-v9qld          1/1     Running   0          21m     10.244.0.3       master              
kube-system   coredns-9d85f5447-z22vf          1/1     Running   0          21m     10.244.0.2       master              
kube-system   etcd-master                      1/1     Running   0          21m     192.168.10.161   master              
kube-system   kube-apiserver-master            1/1     Running   0          21m     192.168.10.161   master              
kube-system   kube-controller-manager-master   1/1     Running   0          21m     192.168.10.161   master              
kube-system   kube-proxy-gn9gv                 1/1     Running   0          21m     192.168.10.161   master              
kube-system   kube-scheduler-master            1/1     Running   0          21m     192.168.10.161   master              
kube-system   weave-net-v97dl                  2/2     Running   0          4m37s   192.168.10.161   master 

現在のdockerミラーを表示するか、weaveを表示します.
docker images

dockerミラーリスト
REPOSITORY                                                        TAG                 IMAGE ID            CREATED             SIZE
registry.aliyuncs.com/google_containers/kube-proxy                v1.17.0             7d54289267dc        2 weeks ago         116MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.17.0             5eb3b7486872        2 weeks ago         161MB
registry.aliyuncs.com/google_containers/kube-apiserver            v1.17.0             0cae8d5cc64c        2 weeks ago         171MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.17.0             78c190f736b1        2 weeks ago         94.4MB
weaveworks/weave-npc                                              2.6.0               5105e13e253e        7 weeks ago         34.9MB
weaveworks/weave-kube                                             2.6.0               174e0e8ef23d        7 weeks ago         114MB
registry.aliyuncs.com/google_containers/coredns                   1.6.5               70f311871ae1        7 weeks ago         41.6MB
registry.aliyuncs.com/google_containers/etcd                      3.4.3-0             303ce5db0e90        2 months ago        288MB
registry.aliyuncs.com/google_containers/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

ネイティブネットワーク情報を表示すると、cni 0とflannelが追加されます.1ネットワークノード×2
ifconfig

 

8.サービスのリセット


初期化に問題が発生した場合、または初期状態に戻って再構成する必要がある場合は、次のコマンドを実行します.
kubeadm reset
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig weave down
ip link delete cni0
ip link delete flannel.1
ip link delete weave
rm -rf $HOME/.kube/config
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/kubernetes/
rm -rf /etc/cni/

kubernetesのこれらのデータを消去するほか、対応するdockerミラーを削除し、再初期化してもエラーが発生しない可能性があります.