構成の背景の紹介
kubernetesは、Googleのオープンソースコンテナクラスター管理システムであり、アプリケーションの展開、保守、拡張メカニズムなどの機能を提供します。kubernetesを使用すると、k8s(kとsの間に8文字あります)と呼ばれるクラスター間コンテナ化アプリケーションの管理が容易になります。
なぜこのような複雑なドッカークラスター管理ツールをkubernetesで使用するのですか?私は最初にdockerの組み込みの群れと接触しました。このツールは非常にシンプルで、dockerクラスター機能を完了するのに高速です。ただし、docker1.13の組み込みスウォームをクラスターとして使用すると、VIP [ロードバランシング](https://cloud.tencent.com/product/clb?from=10680)がポートを外部ネットワークに正しくマッピングしないか、アドレスが占有されているため、高可用性の要件には適していません。解決策が見つかりませんでした。k8sにしか切り替えることができません。
ラボ環境
インストール
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes etcd docker flannel
構成ファイルの変更
以下の10.135.163.237は、独自のサーバーIPに置き換えられることに注意してください。
sed -i "s/localhost:2379/10.135.163.237:2379/g"/etc/etcd/etcd.conf
sed -i "s/localhost:2380/10.135.163.237:2380/g"/etc/etcd/etcd.conf
sed -i "s/10.135.163.237:2379/10.135.163.237:2379,http:\/\/127.0.0.1:2379/g"/etc/etcd/etcd.conf
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g"/etc/kubernetes/apiserver
sed -i "s/--insecure-bind-address=127.0.0.1/--insecure-bind-address=0.0.0.0/g"/etc/kubernetes/apiserver
sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g"/etc/kubernetes/apiserver
sed -i "s/--hostname-override=127.0.0.1/--hostname-override=10.135.163.237/g"/etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g"/etc/kubernetes/kubelet
sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g"/etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g"/etc/kubernetes/config
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g"/etc/sysconfig/flanneld
ホストを変更
vi /etc/hosts
10.135.163.237 k8s_master
ネットワークを追加
systemctl enable etcd.service
systemctl start etcd.service
etcdctl mk //atomic.io/network/config '{"Network":"172.17.0.0/16"}'
サービス開始
service docker start
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler kube-proxy kubelet docker flanneld ;do systemctl restart $SERVICES; systemctl enable $SERVICES; systemctl status $SERVICES; done;
最初のデモ
ファイルa.yamlを書き込む
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
replicas:2
template:
metadata:
labels:
app: my-app
spec:
containers:- name: my-app
image: registry.alauda.cn/yubang/paas_base_test
ports:- containerPort:80
command:["/bin/bash","/var/start.sh"]
resources:
limits:
cpu:0.5
memory: 64Mi
**ファイルb.yaml **を書き込む
apiVersion: v1
kind: Service
metadata:
name: my-app-svc
labels:
app: my-app
spec:
ports:- port:80
targetPort:80
nodePort:30964
type: NodePort
selector:
app: my-app
サービスの作成
kubectl create -f a.yaml --validate
kubectl create -f b.yaml --validate
サービスの削除
kubectl delete-f a.yaml
kubectl delete-f b.yaml
子ノードを追加
ソフトウェアをインストールする
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
yum makecache fast
yum -y install docker-engine-1.13.1
yum install epel-release -y
yum remove -y docker-engine*
yum install -y kubernetes docker flannel
構成ファイルを変更します(10.135.163.237がメインノードIP、139.199.0.29が現在のノードIPです)
sed -i "s/--hostname-override=127.0.0.1/--hostname-override=139.199.0.29/g"/etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g"/etc/kubernetes/kubelet
sed -i "s/--address=127.0.0.1/--address=0.0.0.0/g"/etc/kubernetes/kubelet
sed -i "s/127.0.0.1:8080/10.135.163.237:8080/g"/etc/kubernetes/config
sed -i "s/127.0.0.1:2379/10.135.163.237:2379/g"/etc/sysconfig/flanneld
sed -i "s/--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota/--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota/g"/etc/kubernetes/apiserver
サービス開始
service docker start
for SERVICES in kube-proxy kubelet docker flanneld;do
systemctl restart $SERVICES
systemctl enable $SERVICES
systemctl status $SERVICES
done;
メインサーバー上のノードを表示
kubectl get node
サービスを再起動します(クラスターに再参加します)
systemctl restart kube-apiserver.service
ノードを削除
kubectl delete node node ip
総括する
以上がこの記事の全内容です。この記事の内容があなたの研究や仕事に一定の参考になることを願っています。ご不明な点がございましたら、メッセージを残して交換してください。ZaLouへのご支援ありがとうございます。
Recommended Posts