這篇文章將為大家詳細(xì)講解有關(guān)如何在Centos 7Kubeadm中安裝kubernetes,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了汝南免費(fèi)建站歡迎大家使用!
機(jī)器規(guī)劃:
主機(jī)名 | IP地址 |
---|---|
Master01 | 10.0.0.31 |
Node01 | 10.0.0.33 |
Node02 | 10.0.0.34 |
Master節(jié)點(diǎn):etcd、api-server、controlor-manager、scheduler
Node節(jié)點(diǎn):kube-proxy、docker
所有節(jié)點(diǎn)操作
1.設(shè)置系統(tǒng)主機(jī)名
hostnamectl set-hostname k8s-master01
2.安裝依賴包
yum install -y conntrack ntpdate ntp jq \ curl sysstat libseccomp wget net-tools vim git
3.關(guān)閉selinux和swap
必須防止k8s運(yùn)行在虛擬內(nèi)存中,否則會導(dǎo)致運(yùn)行緩慢
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
4.關(guān)閉iptables以及firewalld
systemctl disable firewalld systemctl stop firewalld systemctl disable iptables systemctl stop iptables
5.添加主機(jī)名與ip對應(yīng)關(guān)系
cat /etc/hosts 10.0.0.31 k8s-master01 10.0.0.32 k8s-master02 10.0.0.33 k8s-node01 10.0.0.34 k8s-node02
6.升級系統(tǒng)內(nèi)核為 4.44
CentOS 7.x 系統(tǒng)自帶的 3.10.x 內(nèi)核存在一些 Bugs,導(dǎo)致運(yùn)行的 Docker、Kubernetes 不穩(wěn)定
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm //安裝完成后檢查 /boot/grub2/grub.cfg 中對應(yīng)內(nèi)核 menuentry 中是否包含 initrd16 配置,如果沒有,再安裝 一次! yum --enablerepo=elrepo-kernel install -y kernel-lt // 設(shè)置開機(jī)從新內(nèi)核啟動 grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 8 (Core)'
7.kube-proxy開啟ipvs的前置條件
ipvs:解決svc(service)和pod之間的調(diào)度關(guān)系,并且性能/功能都比iptables強(qiáng)大很多,
1.在所有節(jié)點(diǎn)上執(zhí)行以下腳本
modprobe br_netfilter cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
腳本創(chuàng)建了的/etc/sysconfig/modules/ipvs.modules文件,保證在節(jié)點(diǎn)重啟后能自動加載所需模塊。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已經(jīng)正確加載所需的內(nèi)核模塊。
2.在所有節(jié)點(diǎn)上安裝ipset和ipvsadm
yum install ipset ipvsadm -y
所有節(jié)點(diǎn)安裝
1.添加yum源以及安裝
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce // 啟動docker(啟動后會自動生成/etc/docker目錄,否則需要手動創(chuàng)建) systemctl start docker
2.配置daemon.json
cat >/etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://hdi5v8p1.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } } EOF // daemon參數(shù)解釋 registry-mirrors:Docker鏡像加速 log-driver:Docker用來接收來自容器內(nèi)部stdout/stderr的日志的模塊 json-file會將容器日志存儲在docker host machine的/var/lib/docker/containers/<container id>/<container id>-json.log(需要root權(quán)限才能夠讀),既然日志是存在磁盤上的,那么就要磁盤消耗的問題。下面介紹兩個關(guān)鍵參數(shù): - max-size,單個日志文件最大尺寸,當(dāng)日志文件超過此尺寸時會滾動,即不再往這個文件里寫,而是寫到一個新的文件里。默認(rèn)值是-1,代表無限。 - max-files,最多保留多少個日志文件。默認(rèn)值是1。 "exec-opts": ["native.cgroupdriver=systemd"]:Docker使用的文件驅(qū)動是systemd
3.重啟docker服務(wù)并加入開機(jī)啟動
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
所有節(jié)點(diǎn)統(tǒng)一安裝kubelet kubeadm kubelectl
1.安裝kubelet kubeadm kubelectl
導(dǎo)入阿里云的yum倉庫
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF // 指定安裝版本(這里統(tǒng)一使用1.15.1) yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1 systemctl enable kubelet.service
2.初始化Kubermetes master
kubeadm init \ --apiserver-advertise-address=10.0.0.31 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.15.1 \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=10.244.0.0/16
由于默認(rèn)拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址。
初始化master節(jié)點(diǎn)重要截圖:
使用kubectl工具:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes
3.安裝Pod網(wǎng)絡(luò)插件(CNI)
只在master節(jié)點(diǎn)操作,當(dāng)node節(jié)點(diǎn)加入的時候也會自動安裝該插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
確保能夠訪問到quay.io這個registery。
master的網(wǎng)絡(luò)插件啟動成功:
4.node加入節(jié)點(diǎn)
向集群添加新節(jié)點(diǎn),執(zhí)行在kubeadm init輸出的kubeadm join命令:
kubeadm join 10.0.0.31:6443 --token 711bqn.ozruisxvcz1924fg \ --discovery-token-ca-cert-hash sha256:295acb22b65296410968d040cfbb326642d2e3b177ccbc3626765a0ada6fa9ff
所有節(jié)點(diǎn)加入完成
[root@k8s-master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master01 Ready master 12m v1.15.1 k8s-node01 Ready <none> 4m39s v1.15.1 k8s-node02 Ready <none> 106s v1.15.1
如果忘了join的命令咋辦?可以使用下面的命令獲取
[root@k8s-master01 ~]# kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS 711bqn.ozruisxvcz1924fg 23h 2019-11-20T00:19:17+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
5.kube-proxy開啟ipvs
// 修改ConfigMap的kube-system/kube-proxy中的config.conf,把 mode: "" 改為mode: “ipvs" 保存退出即可。 kubectl edit cm kube-proxy -n kube-system // 刪除之前的proxy pod kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
6.測試Kubernetes集群
在Kubernetes集群中創(chuàng)建一個rc,驗(yàn)證是否正常運(yùn)行:
創(chuàng)建一個文件nginx_obj.yaml
apiVersion: v1 kind: ReplicationController metadata: name: myweb spec: replicas: 3 selector: app: myweb template: metadata: labels: app: myweb spec: containers: - name: nginx image: nginx:1.13 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: myweb spec: type: NodePort ports: - port: 80 nodePort: 30000 targetPort: 80 selector: app: myweb
指定該文件并創(chuàng)建rc
kubectl create -f nginx_obj.yaml
查看pod和svc信息
[root@k8s-master01 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myweb-l4vkm 1/1 Running 0 5s 10.244.1.2 k8s-node01 <none> <none> myweb-qdxgp 1/1 Running 0 5s 10.244.3.2 k8s-node02 <none> <none> [root@k8s-master01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 22m myweb NodePort 10.1.205.42 <none> 80:30000/TCP 38s
訪問地址:http://NodeIP:30000
關(guān)于如何在Centos 7Kubeadm中安裝kubernetes就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享題目:如何在Centos7Kubeadm中安裝kubernetes
URL地址:http://bm7419.com/article46/pcijhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、動態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)