一、前期準備
1、首先準備至少兩臺虛擬機,可以使用VMware Workstation Pro部署兩臺虛擬機,我這里準備兩臺如下:
192.168.78.128 k8s-master
192.168.78.129 k8s-node
其中一臺作為集群管理主機,一臺為node主機,
2、設定主機的名稱,方便部署時區別節點,
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
3、master主機和node主機需要關閉的內容(必須執行的操作,在兩臺主機上執行如下命令即可)
systemctl stop firewalld 關閉防火墻
setenforce 0 關閉selinux
ntpdate ntp1.aliyun.com 配置時間同步
swapoff -a 臨時關閉swap
4、在vim /etc/hosts下面配置
master的配置:
192.168.78.128 k8s-master
192.168.78.128 etcd
192.168.78.128 registry
192.168.78.129 k8s-node1
node配置:
192.168.78.128 k8s-master
192.168.78.128 etcd
192.168.78.129 registry
192.168.78.129 k8s-node1
5、配置靜態ip地址,主機一般都需要設定,防止ip動態變化
1、進入到/etc/sysconfig/network-scripts/ifcfg-你的網卡名字 可使用ipconfig查看網卡名稱
![]()
2、例如 vim /etc/sysconfig/network-scripts/ifcfg-ens33 編譯后加入如下內容
master配置:
BOOTPROTO="static" # 使用靜態IP地址,默認是dhcp
IPADDR="192.168.78.128" # 設定的靜態IP地址
NETMASK="255.255.255.0" # 子網掩碼
GATEWAY="192.168.78.2" # 網關地址(使用route -n 第一行就是默認的網關)
DNS1="8.8.8.8" # DNS服務器 (cat /etc/resolv.conf 查看)
node配置:
BOOTPROTO="static" # 使用靜態IP地址,默認是dhcp
IPADDR="192.168.78.129" # 設定的靜態IP地址
NETMASK="255.255.255.0" # 子網掩碼
GATEWAY="192.168.78.2" # 網關地址(使用route -n 第一行就是默認的網關)
DNS1="8.8.8.8" # DNS服務器 (cat /etc/resolv.conf 查看)
6、centos7更換yum源
1、備份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下載對應版本repo檔案(以下是CentOS7版本), 放入/etc/yum.repos.d/
進入 cd /etc/yum.repos.d/
執行 wget https://mirrors.163.com/.help/CentOS7-Base-163.repo
3、運行以下命令生成快取
yum clean all
yum makecache
到此準備作業就已經完成了,接下來就可以部署了,
二、部署K8s
Master主機部署的相關組件:
安裝etcd:
1、部署etcd 用來持久化存盤k8s的集群配置和狀態,一般部署到master即可,
[root@k8s-master /]# yum install -y etcd
2、安裝完成后在/etc/etcd/etcd.conf中配置內容如下:
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_NAME="master"
ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379" ##此處的etcd為上面配置的hosts中的映射,實際ip為192.168.78.128
3、啟動etcd并驗證時候部署成功
[root@k8s-master ~]# systemctl start etcd
[root@k8s-master ~]# etcdctl -C http://etcd:2379 cluster-health
看到如下內容則表示正常
member 8e9e05c52164694d is healthy: got healthy result from http://etcd:2379 cluster is healthy
安裝kubernetes 安裝完成即可包含相關組件
[root@k8s-master ~]# yum install -y kubernetes
1、在master主機上部署的組件有 kubernetes API server,kubernetes Controller Manager ,Kubernetes Scheduler
姑且須有修改以下的配置
修改/etc/kubernetes/apiserver的配置內容如下:
[root@k8s-master ~]# vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
修改/etc/kubernetes/config 內容如下:
[root@k8s-master ~]# grep -v "^#" /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"
2、開機啟動
[root@k8s-master ~]# systemctl enable kube-apiserver kube-controller-manager kube-scheduler
[root@k8s-master ~]# systemctl start kube-apiserver kube-controller-manager kube-scheduler
到此master的安裝部署就已經完成了,接下來需要部署node主機組件,master主機無需安裝docker環境,故此沒有部署,
node主機相關組件部署:
docker安裝
1、[root@k8s-master ~]# yum install docker docker-distribution -y ##docker-distribution為docker的一個私有倉庫,可以選擇性安裝
2、[root@k8s-master ~]# systemctl start docker docker-distribution
3、[root@k8s-master ~]# systemctl enable docker docker-distribution
4、查看docekr版本 docker --version
5、配置阿里云鏡像加速器
訪問https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 自行登錄后查看自己的鏡像加速地址
[root@k8s-master /]# vim /etc/docker/daemon.json
{ "insecure-registries":["192.168.78.130:5000"], "registry-mirrors":["https://4ojlwa2w.mirror.aliyuncs.com"] }
將內容粘貼進去即可, insecure-registries 表示信任非https的訪問地址 有私有倉庫時配置,沒有則可不配置
kubernetes安裝
yum install kubernetes
1、在node節點上需要啟動kubernetes 下述組件:kubelet、kubernets-Proxy,因此需要相應修改下述配置,
[root@k8s-node-1 ~]# vim /etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://k8s-master:8080"
2、修改/etc/kubernetes/kubelet
[root@k8s-node-1 ~]# vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=k8s-node1" #注意配置為對應node的hostname
KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
3、啟動并測驗
[root@k8s-node-1 ~]# systemctl enable kubelet kube-proxy
[root@k8s-node-1 ~]# systemctl start kubelet kube-proxy
啟動后在master主機上執行以下命令查看是否成功
[root@k8s-master kubernetes]# kubectl get node
出現如下內容則表示成功
NAME STATUS AGEk8s-node1 Ready 36s
Flannel覆寫網路安裝(master和node都要安裝)
[root@k8s-master ~]# yum install -y flannel
已安裝:
flannel.x86_64 0:0.7.1-4.el7
1、分別在master和node 主機上配置/etc/sysconfig/flanneld組態檔,如下:
[root@k8s-master /]# vim /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
FLANNEL_ETCD_PREFIX="/kube/network"
配置etcd中關于flannel的key(‘/atomic.io/network/config’這個key與上文/etc/sysconfig/flanneld中的配置項FLANNEL_ETCD_PREFIX是相對應的,錯誤的話啟動就會出錯,這里目前改為/kube/network)
2、Flannel 網路的IP網段
[root@k8s-master /]# etcdctl mk /kube/network/config '{"Network": "10.88.0.0/16"}'
列印出以下內容則表示成功 {"Network": "10.88.0.0/16"}
部署完成依次重新啟動docker和kubernetes
#在master 執行
systemctl enable docker
systemctl enable etcd kube-apiserver kube-scheduler kube-controller-manager
systemctl restart etcd kube-apiserver kube-scheduler kube-controller-manager
systemctl restart flanneld docker
#在node上執行
systemctl restart kubelet kube-proxy
systemctl restart flanneld docker
#網路相關后啟動 flanneld 和 docker 重置網路
systemctl enable flanneld kubelet kube-proxy docker
到此順利的話k8s的部署就已經完成了,基本沒啥坑要踩的了,
三、部署k8s dashboard驗證集群部署是否可用
前期準備
1、首先要保證防火墻關閉,可使用
sudo iptables -F 清理防火墻
2、在docker的啟動檔案中加入如下內容
1、vim /usr/lib/systemd/system/docker.service
2、在【service】下面加入
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
3、執行yum install *rhsm*
4、執行 wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
5、執行 rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
6、使用docker pull registry.access.redhat.com/rhel7/pod-infrastructure測驗,如果正常即可,
部署dashboard
1、下載dashboard的yaml的組態檔,下載后可以放到一個目錄下面,我這里是usr/local下面
[root@k8s-master local]# wget http://mirror.faasx.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
2、修改ymal組態檔
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: kubernetes-dashboard
template:
metadata:
labels:
app: kubernetes-dashboard
# Comment the following annotation if Dashboard must not be deployed on master
annotations:
scheduler.alpha.kubernetes.io/tolerations: |
[
{
"key": "dedicated",
"operator": "Equal",
"value": "master",
"effect": "NoSchedule"
}
]
spec:
containers:
- name: kubernetes-dashboard
image: registry.cn-hangzhou.aliyuncs.com/kubeapps/k8s-gcr-kubernetes-dashboard-amd64:v1.8.3 #默認的鏡像是使用google的,這里改為阿里的
#imagePullPolicy: Always
ports:
- containerPort: 9090
protocol: TCP
args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
- --apiserver-host=http://192.168.78.128:8080 #注意這里是api的地址
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
---
kind: Service
apiVersion: v1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort ##暴露埠新加的配置
ports:
- port: 80
targetPort: 9090
selector:
app: kubernetes-dashboard
如果無需配置角色賬號等資訊,可直接將以上內容覆寫后修改即可,
1、執行kubectl create -f /usr/local/kubernetes-dashboard.yaml 進行部署
2、執行kubectl apply -f /usr/local/kubernetes-dashboard.yaml 進行角色關聯
3、如果部署錯誤可使用洗掉后重新部署:kubectl delete -f /usr/local/kubernetes-dashboard.yaml
4、kubectl get pods --all-namespaces 查看節點是否部署成功
5、kubectl describe pod kubernetes-dashboard-692957223-4rwnr --namespace=kube-system 列印部署具體問題
6、查看dashboard被部署到了那臺機器上 kubectl get pods --all-namespaces -o wide
7、查看集群內容ip:kubectl get services --all-namespaces
到此dashboard就部署成功了,
訪問:http://192.168.78.128:8080/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/#!/node?namespace=default

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234220.html
標籤:其他
上一篇:漫畫 | 民間流傳的微信誕生記


