Kubernetes 環境搭建
1、環境準備
ip | hostname | Kubernetes角色 | linux版本 | kubernetes版本 |
---|---|---|---|---|
192.168.136.171 | master | master | Centos 7.6 | v1.16.0 |
192.168.136.156 | node1 | node | Centos 7.6 | v1.16.0 |
192.168.136.157 | node2 | node | Centos 7.6 | v1.16.0 |
192.168.136.158 | node3 | node | Centos 7.6 | v1.16.0 |
192.168.136.168 | gitlab | 無 | Centos 7.6 | 無 |
192.168.136.167 | harbor | 無 | Centos 7.6 | 無 |
最小標準 2cpu,4g內存
2、安裝kubernetes集羣
本人使用 https://kuboard.cn/ 搭建k8s集羣
以前用過的版本
rancher2.x:https://www.rancher.cn/
kubeasz:https://github.com/easzlab/kubeasz
還有許多就不一一列舉了
推薦大家使用kuboard,因爲簡單
具體kuboard安裝文檔請參考官網:https://kuboard.cn/install/install-k8s.html
3、安裝gitlab
我是開發人員,採用簡單方式部署gitlab的
公司內部搭建gitlab,不建議採用這種方式
準備啓動腳本
cat > gitlab-setup.sh << EOF
#!/bin/bash
# 注意:設置 gitlab_shell_ssh_port 是爲了後續可以使用 SSH 方式訪問你的項目
docker run --detach \\
--hostname gitlab.dcy.com \\
--env GITLAB_OMNIBUS_CONFIG="external_url = 'http://gitlab.dcy.com'; gitlab_rails['gitlab_shell_ssh_port'] = 6022;" \\
--publish 443:443 --publish 80:80 --publish 6022:22 \\
--name gitlab \\
--restart always \\
--volume /srv/gitlab/config:/etc/gitlab \\
--volume /srv/gitlab/logs:/var/log/gitlab \\
--volume /srv/gitlab/data:/var/opt/gitlab \\
gitlab/gitlab-ce:latest
EOF
請修改以下內容
–hostname
external_url
gitlab_rails[‘gitlab_shell_ssh_port’] 和 22映射端口必須相同
對應自己的修改即可 對應我的格式
執行啓動腳本:sh gitlab-setup.sh 執行成功後,等待數分鐘可以看到
可能時間很長 會發生502 請等待
最好用80端口,以免發生問題
修改hosts文件對應上面的url
訪問 http://gitlab.dcy.com/
Gitlab使用
首先輸入root密碼 以下圖片
然後就可以註冊賬號了
創建項目
添加ssh
#先看看是不是已經有啦,如果有內容就直接copy貼過去就行啦
$ cat ~/.ssh/id_rsa.pub
#如果上一步沒有這個文件 我們就創建一個,運行下面命令(郵箱改成自己的哦),一路回車就好了
$ ssh-keygen -t rsa -C "[email protected]"
$ cat ~/.ssh/id_rsa.pub
4、安裝harbor
請參考我的以下鏈接
https://blog.csdn.net/qq_33842795/article/details/100030657
5、安裝helm
1、執行腳本
curl -L https://git.io/get_helm.sh | bash
2、創建配置配置文件
創建rbac-config.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
kubectl apply -f rbac-config.yaml
安裝helm
helm init --service-account tiller --history-max 200
– 如果報錯 那就手動創建下面文件
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
spec:
automountServiceAccountToken: true
containers:
- env:
- name: TILLER_NAMESPACE
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
image: sapcc/tiller:v2.14.3
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /liveness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
name: tiller
ports:
- containerPort: 44134
name: tiller
- containerPort: 44135
name: http
readinessProbe:
httpGet:
path: /readiness
port: 44135
initialDelaySeconds: 1
timeoutSeconds: 1
resources: {}
selector:
matchLabels:
app: helm
name: tiller
status: {}
---
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: helm
name: tiller
name: tiller-deploy
namespace: kube-system
spec:
ports:
- name: tiller
port: 44134
targetPort: tiller
selector:
app: helm
name: tiller
type: ClusterIP
status:
loadBalancer: {}
再去kubectl apply -f xxx.yaml
添加阿里helm倉庫
helm repo add mirror-stable http://mirror.azure.cn/kubernetes/charts/
在執行刷新倉庫
helm repo update
6、安裝nfs
首先創建文件夾
mkdir -p /data/nfs-data
chmod -R 777 /data/nfs-data
安裝 nfs
yum install -y nfs-utils
vim /etc/exports
添加以下內容
/data/nfs-data/ *(rw,sync,no_root_squash,no_subtree_check)
啓動nfs服務
systemctl enable rpcbind.service && systemctl enable nfs-server.service
systemctl start rpcbind.service && systemctl start nfs-server.service
確認NFS服務器啓動成功
showmount -e 127.0.0.1
使用命令,就能看到自己掛載的文件夾了
7、安裝nfs-client
helm install --name nfs-client --set nfs.server=192.168.136.171 --set nfs.path=/data/nfs-data stable/nfs-client-provisioner
8、安裝jenkins
創建jenkins-pvc.yaml文件
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-jenkins
namespace: jenkins
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
storageClassName: nfs-client
kubectl apply -f jenkins-pvc.yaml
kubectl get pvc -n jenkins
獲取jenkins包
helm fetch stable/jenkins
然後解壓
修改value.yaml文件
以下內容
master.adminPassword=admin
ingress.enabled=true
ingress.path="/"
ingress.hostName=jenkins.ingress.com
persistence.existingClaim=nfs-jenkins
helm install --name jenkins -f values.yaml stable/jenkins --namespace jenkins
配置hosts 對應jenkins.ingress.com