利用kubeadmin搭建kubernetes集群


一、系統配置(所有節點都需要執行)
1. 關閉防火牆
    systemctl stop firewalld
    systemctl disable firewalld
2. 禁用SELinux
    setenforce 0
    # 編輯文件/etc/selinux/config,將SELINUX修改為disabled,如下:
    SELINUX=disabled
3. 關閉系統Swap  

     swapoff -a

     vim /etc/fstab #注釋掉swap相關行即可

 

# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新並安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce-18.06
# Step 4: 開啟Docker服務
systemctl enable docker && systemctl docker start

 

由於默認拉取鏡像地址k8s.gcr.io國內無法訪問,這里指定阿里雲鏡像倉庫地址。 

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

# yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3
# systemctl enable kubelet && systemctl start kubelet

 

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

 

 5. 部署Kubernetes Master

# kubeadm init \
--apiserver-advertise-address=192.168.31.62 \                 #api組件監聽的ip地址,一般是內網的ip地址
--image-repository registry.aliyuncs.com/google_containers \  #指定鏡像倉庫,這里是阿里雲的地址
--kubernetes-version v1.13.3 \                                #k8s的版本
--service-cidr=10.1.0.0/16\                                   #指定service網絡的ip地址段
--pod-network-cidr=10.244.0.0/16                              #pod網絡,容器使用的ip地址

證書文件路徑 /etc/kubernetes/pki

配置文件路徑 /etc/kubernetes

靜態pod

CoreDNS k8s內部dns解析

kube-proxy 容器之間提供服務發現

 

 使用kubectl工具(默認配置文件讀取路徑在家目錄下.kube文件夾里):

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



6. 安裝Pod網絡插件(CNI)

# kubectl apply -f
https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

確保能夠訪問到quay.io這個registery。

 

7. 加入Kubernetes Node
向集群添加新節點,執行在kubeadm init輸出的kubeadm join命令:

kubeadm join 192.168.31.64:6443 --token l79g5t.6ov4jkddwqki1dxe --discovery-token-ca-cert-hash sha256:4f07f9068c543130461c9db368d62b4aabc22105451057f887defa35f47fa076

 

8. 測試kubernetes集群
在Kubernetes集群中創建一個pod,驗證是否正常運行:

# kubectl create deployment nginx --image=nginx
# kubectl expose deployment nginx --port=80 --type=NodePort
# kubectl get pod,svc


9. 部署 Dashboard

# kubectl apply -f
https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

 

默認鏡像國內無法訪問,修改鏡像地址為: lizhenliang/kubernetes-dashboard-amd64:v1.10.1
默認Dashboard只能集群內部訪問,修改Service為NodePort類型,暴露到外部:

kind: Service
apiVersion: v1
metadata:
labels:
 k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
 - port: 443
  targetPort: 8443
  nodePort: 30001
selector:
 k8s-app: kubernetes-dashboard

 

# kubectl apply -f kubernetes-dashboard.yaml

訪問地址:http://NodeIP:30001

 

創建service account並綁定默認cluster-admin管理員集群角色:

$ kubectl create serviceaccount dashboard-admin -n kube-system
$ kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
$ kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM