CentOS7はKubernetes1.16.3をインストールします

I.概要

Kubernetesクラスターを手動で構築するのは非常に面倒な作業です。これらの操作を簡素化するために、Kubeadm、Kubespray、RKE、その他のコンポーネントなど、多くのインストールおよび構成ツールが作成されました。主にいくつかの異なるKubernetesバージョンがあるため、最終的に公式のKubeadmを選択しました。違い、Kubeadmの更新とサポートが改善されます。 Kubeadmは、Kubernetesクラスターをすばやくインストールして初期化するためにKubernetesが提供する公式ツールです。現在、インキュベーション状態です。Kubernetesの新しいバージョンがリリースされるたびに更新されます。各コンポーネントとオブジェクトの詳細を理解するには、公式ドキュメントを読むことを強くお勧めします。効果。

https://kubernetes.io/docs/concepts/https://kubernetes.io/docs/setup/independent/install-kubeadm/https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

システム環境

システム カーネル ドッカー ip ホスト名 構成
centos 7.6 3.10.0-957.el7.x86_64 19.03.5 192.168.31.150 k8s-master 2コア4G
centos 7.6 3.10.0-957.el7.x86_64 19.03.5 192.168.31.183 k8s-node01 2コア4G

**注:CPUが少なくとも2コアで、メモリが2G **であることを確認してください

2.準備

ファイアウォールをオフにします

各ホストでファイアウォールが有効になっていて、Kubernetesの各コンポーネントに必要なポートを開く必要がある場合は、kubeadmのインストールの「必要なポートの確認」セクションを確認できます。簡単にするために、各ノードでファイアウォールを無効にします。

systemctl stop firewalld
systemctl disable firewalld

**SELINUX **を無効にする##

# 一時的に無効にする
setenforce 0#恒久的に無効
vim /etc/selinux/config    #または変更する/etc/sysconfig/selinux
SELINUX=disabled

k8s.confファイルを変更します

cat <<EOF >/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables =1
net.bridge.bridge-nf-call-iptables =1
EOF
sysctl --system

スワップを閉じる

# 一時閉鎖
swapoff -a

/ etc / fstabファイルを変更し、SWAPの自動マウントをコメントアウトします(スワップは完全に閉じられ、再起動後に有効になります)

# 次のフィールドをコメントアウトします
/dev/mapper/cl-swap     swap                    swap    defaults        00

dockerをインストール

ここでは説明しません。リンクを参照してください。

https://www.cnblogs.com/xiao987334176/p/11771657.html

ホスト名を変更

hostnamectl set-hostname k8s-master

注:ホスト名に下線を引くことはできません。正中線のみに下線を引くことができます
そうしないと、k8sのインストール時にエラーが報告されます

could not convert cfg to an internal cfg: nodeRegistration.name: Invalid value:"k8s_master": a DNS-1123 subdomain must consist of lower case alphanumeric characters,'-' or '.', and must start and end with an alphanumeric character(e.g.'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')

**3. kubeadm、kubelet、kubectl **をインストールします#

各ノードにkubeadm、kubelet、kubectlをインストールします

yumインストールソースを変更する

cat <<EOF >/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

ソフトウェアをインストールする ##

最新バージョンは 1.16.3です。

yum install -y kubelet-1.16.3-0 kubeadm-1.16.3-0 kubectl-1.16.3-0
systemctl enable kubelet && systemctl start kubelet

上記は、マスターとノードの両方が動作する必要がある部分です。

第四に、マスターノードを初期化します

初期化コマンドを実行します

kubeadm init --kubernetes-version=1.16.3 \
- - apiserver-advertise-address=192.168.31.150 \
- - image-repository registry.aliyuncs.com/google_containers \
- - service-cidr=10.1.0.0/16 \
- - pod-network-cidr=10.244.0.0/16

パラメータの説明:

–kubernetes-version:k8sバージョンを指定するために使用されます。
–apiserver-advertise-アドレス:kubeを指定するために使用されます-apiserverによって監視されるIPアドレス,マスターのローカルIPアドレスです。
–pod-network-cidr:ポッドのネットワーク範囲を指定するために使用されます。10.244.0.0/16–service-cidr:SVCのネットワーク範囲を指定するために使用されます。
–image-repository:アリババクラウドイメージウェアハウスのアドレスを指定します

この手順は非常に重要です。kubeadmはデフォルトで公式ウェブサイトk8s.grc.ioから必要な画像をダウンロードするため、中国ではアクセスできません。そのため、-image-repositoryを使用してAlibabaCloudミラーリポジトリアドレスを指定する必要があります。

クラスタが正常に初期化されると、次の情報が返されます。
生成されたコンテンツの最後の部分を記録します。これは、他のノードがKubernetesクラスターに参加するときに実行する必要があります。
出力は次のとおりです。

...
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:  mkdir -p $HOME/.kube  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config  sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml"with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.31.150:6443--token ute1qr.ylhan3tn3eohip20 \    --discovery-token-ca-cert-hash sha256:f7b37ecd602deb59e0ddc2a0cfa842f8c3950690f43a5d552a7cefef37d1fa31

kubectlツールを構成する

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

**Calico **をインストールします##

mkdir k8s
cd k8s
wget https://docs.projectcalico.org/v3.10/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

## 192.168.0.0/16IPアドレスを10に変更します.244.0.0/16
sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml

Calicoをロードします

kubectl apply -f calico.yaml

ポッドステータスの表示

数分待って、すべてのポッドが実行状態になっていることを確認します

[ root@k8s_master k8s]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE         NOMINATED NODE   READINESS GATESkube-system   calico-kube-controllers-6b64bcd855-tdv2h   1/1     Running   0          2m37s   192.168.235.195   k8s-master   <none><none>kube-system   calico-node-4xgk8                          1/1     Running   0          2m38s   192.168.31.150    k8s-master   <none><none>kube-system   coredns-58cc8c89f4-8672x                   1/1     Running   0          45m     192.168.235.194   k8s-master   <none><none>kube-system   coredns-58cc8c89f4-8h8tq                   1/1     Running   0          45m     192.168.235.193   k8s-master   <none><none>kube-system   etcd-k8s-master                            1/1     Running   0          44m     192.168.31.150    k8s-master   <none><none>kube-system   kube-apiserver-k8s-master                  1/1     Running   0          44m     192.168.31.150    k8s-master   <none><none>kube-system   kube-controller-manager-k8s-master         1/1     Running   0          44m     192.168.31.150    k8s-master   <none><none>kube-system   kube-proxy-6f42j                           1/1     Running   0          45m     192.168.31.150    k8s-master   <none><none>kube-system   kube-scheduler-k8s-master                  1/1     Running   0          44m     192.168.31.150    k8s-master   <none><none>

注:calico-kube-controllersコンテナのネットワークセグメントは10.244.0.0/16ではありません

Calicoを削除し、リロードします

kubectl apply -f calico.yaml
kubectl delete-f calico.yaml

ipをもう一度確認してください

[ root@k8s-master k8s]# kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE     IP                NODE         NOMINATED NODE   READINESS GATESkube-system   calico-kube-controllers-6b64bcd855-qn6bs   0/1     Running   0          18s     10.244.235.193    k8s-master   <none><none>kube-system   calico-node-cdnvz                          1/1     Running   0          18s     192.168.31.150    k8s-master   <none><none>kube-system   coredns-58cc8c89f4-8672x                   1/1     Running   1          5h22m   192.168.235.197   k8s-master   <none><none>kube-system   coredns-58cc8c89f4-8h8tq                   1/1     Running   1          5h22m   192.168.235.196   k8s-master   <none><none>kube-system   etcd-k8s-master                            1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none><none>kube-system   kube-apiserver-k8s-master                  1/1     Running   1          5h21m   192.168.31.150    k8s-master   <none><none>kube-system   kube-controller-manager-k8s-master         1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none><none>kube-system   kube-proxy-6f42j                           1/1     Running   1          5h22m   192.168.31.150    k8s-master   <none><none>kube-system   kube-scheduler-k8s-master                  1/1     Running   1          5h21m   192.168.31.150    k8s-master   <none><none>

ipアドレスはすでに10.244.0.0/16ネットワークセグメントにあることがわかります。

起動を設定する

systemctl enable kubelet

5、ノードがクラスターに参加します

準備オーケー ##

**上記の準備を見直して、すべてが実装されていることを確認してください。 ! ! ****

ホスト名の部分をk8s-node01に変更します

hostnamectl set-hostname k8s-node01

ノードに参加

ノードノードにログインし、dockerとkubeadm、kubelet、およびkubectlがインストールされていることを確認します

kubeadm join 192.168.31.150:6443--token ute1qr.ylhan3tn3eohip20 \
 - - discovery-token-ca-cert-hash sha256:f7b37ecd602deb59e0ddc2a0cfa842f8c3950690f43a5d552a7cefef37d1fa31

起動を設定する

systemctl enable kubelet

ノードの表示

マスターにログインし、コマンドを使用して表示します

[ root@k8s_master k8s]# kubectl get nodes -o wide
NAME         STATUS   ROLES    AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-master   Ready    master   87m     v1.16.3192.168.31.150<none>        CentOS Linux 7(Core)3.10.0-957.el7.x86_64   docker://19.3.5k8s-node01   Ready    <none>   5m14s   v1.16.3192.168.31.183<none>        CentOS Linux 7(Core)3.10.0-957.el7.x86_64   docker://19.3.5

6、ポッドを作成します

**nginx **を作成します##

kubectl create deployment nginx --image=--port=--type=

ポッドとsvcを表示

[ root@k8s-master k8s]# kubectl get pod,svc -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP              NODE         NOMINATED NODE   READINESS GATES
pod/nginx-86c57db685-z2kdd   1/1     Running   0          18m   10.244.85.194   k8s-node01   <none><none>NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE    SELECTOR
service/kubernetes   ClusterIP   10.1.0.1<none>443/TCP        111m   <none>service/nginx        NodePort    10.1.111.179<none>80:30876/TCP   24m    app=nginx

外部ネットワークにnodePortへのアクセスを許可する

iptables -P FORWARD ACCEPT

アクセスのテスト

マスターIP +ノードポートポートアクセスを使用する

http://192.168.31.150:30876/

効果は次のとおりです。

コマンドの完了

(マスターのみ)

yum install -y bash-completion

source <(kubectl completion bash)
echo "source <(kubectl completion bash)">>~/.bashrc
source  ~/.bashrc

一度ログアウトして、もう一度ログインする必要があります。それだけです。

7つ目は、ymlを使用してアプリケーションを公開する

例としてflaskappを取り上げます

flaskapp-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
 name: flaskapp-1
spec:
 selector:
 matchLabels:
  run: flaskapp-1
 replicas:1
 template:
 metadata:
  labels:
  run: flaskapp-1
 spec:
  containers:- name: flaskapp-1
  image: jcdemo/flaskapp
  ports:- containerPort:5000

flaskapp-service.yaml

apiVersion: v1
kind: Service
metadata:
 name: flaskapp-1
 labels:
 run: flaskapp-1
spec:
 type: NodePort
 ports:- port:5000
 name: flaskapp-port
 targetPort:5000
 protocol: TCP
 nodePort:30005
 selector:
 run: flaskapp-1

ymlファイルをロードします

kubectl apply -f flaskapp-service.yaml 
kubectl apply -f flaskapp-deployment.yaml

ページにアクセス

マスターip + nodeportを使用してアクセスします

http://192.168.31.183:30005/

効果は次のとおりです。

注:ノードip + nodeportを使用してアクセスすることもできます。

この記事の参照リンク:
https://yq.aliyun.com/articles/626118https://blog.csdn.net/fenglailea/article/details/88745642

Recommended Posts

CentOS7はKubernetes1.16.3をインストールします
Centos7インストールkubernetesチュートリアル
1.5Centos7をインストールする
Centos7.2 /7.3クラスターインストールKubernetes1.8.4 +ダッシュボード
Centos7.3はnginxをインストールします
CentOS7.2はMysql5.7.13をインストールします
CentOSはRedmineをインストールします
CentOS7はMySQLをインストールします
Centos7インストールprotobuf
CentOS7はDockerをインストールします
CentOS7はGlusterFSをインストールします
CentOS7.4はZabbix3.4をインストールします
CentOS7はDockerをインストールします
Centos6.5はTomcatをインストールします
VmwareはCentOS6をインストールします
CentOS7はHadoop3.0.0をインストールします
Centos7はPython2.7をインストールします
Centos7.6はseleniuをインストールします
CentOS7.3はZabbix3をインストールします
Centos7はLAMP + PHPmyadminをインストールします
CentOSインストールmysql
CentOSはopenjdk1.8をインストールします
CENTOS6.5インストールCDH5.12.1(1)
CentOSはPHPをインストールします
CentOS6はmist.ioをインストールします
Centos7はDockerをインストールします
CentOS7インストールmysql
centOsはrabbitMQをインストールします
CentOS7はMySQL5.6をインストールします
Centos7はNginxをインストールします
CentOS6.5はCDH5.13をインストールします
Centos7インストールdocker18
centos7インストールドッカー
CentOSインストールjdk
centos7インストールnginx-rtmp
Centos6.3はKVMをインストールします
CentOSはPostgreSQL9.1をインストールします
CentOS7はmysql8をインストールします
CentOS7はJava1.8をインストールします
CentOS8はfastdfs6.06をインストールします
CentOS7はGitlabをインストールします
Centos7はPostgreSQLをインストールします
CentOS7はMySQL8をインストールします
CentOS7はJava1.8をインストールします
CentOS6はDockerをインストールします
centos6.5インストールzabbix4.4
Centos8はDockerをインストールします
CentOS6.8はpython2.7をインストールします
CentOSインストールnodejs8
CentOS6.5はGNS3をインストールします
centos7.5インストールmysql5.7.17
Centos7はMySQL8.0をインストールします-手動
VirtualBoxインストールcentos7
centos7インストールランプ
centos7をインストールして接続します
Centos7にDockerをインストールする
Centos7インストールdocker-18.xオリジナル
Centos7.4はLNMPをインストールします
Centos7YUMはMariaDB10.0をインストールします
CentOS8インストールZABBIX4.4ガイド
CentOS6.5オフラインインストールMySQL5.6.26