ubuntu 安裝 k8s
安裝環境
- 阿里雲伺服器: 1C2G
- ubuntu 18.04
- kubernetes 1.14.2
# 設定環境變數, 命令列看著舒服點
export PS1="\[\033[33m\]\u\[\033[0m\]@\[\033[36m\]k8s\[\033[0m\]:\[\033[32m\]\W \[\033[0m\]$ "
# vim 顯示行號
cat <<EOF > ~/.vimrc
set nu
EOF
# 一些初始配置
apt update
apt -y install apt-transport-https ca-certificates curl software-properties-common
# 寫入兩個 key
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# 新增映象源
cat <<EOF >/etc/apt/sources.list.d/docker-k8s.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
EOF
# 更新並安裝
apt update && apt install -y docker-ce kubelet kubeadm kubectl
# 關閉 swap
swapoff -a
vim /etc/fstab # 註釋 01
# 設定阿里雲映象加速, 也可以不用弄這個
cat <<EOF >/etc/docker/daemon.json
{
"registry-mirrors": ["https://{阿里雲分配的地址}.mirror.aliyuncs.com"]
}
EOF
# 安裝映象包
kubeadm config images list # 註釋 03
# 初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU # 註釋 02
# 根據初始化之後輸出的內容, 使用這個命令將其他節點加入叢集
# 設定網路外掛
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 安裝 kubernetes-dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml
# 拉取 kubernetes-dashboard 映象, 注意版本, 可在 kubernetes-dashboard.yaml 檔案中檢視
docker pull registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
docker tag registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker rmi registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
# 安裝 kubernetes-dashboard
kubectl create -f kubernetes-dashboard.yaml
# 檢視安裝結果
kubectl get pod --namespace=kube-system
# 直接為 Dashboard 賦予 Admin 的許可權
# 新建 dashboard-admin.yaml 檔案, 注意縮排
cat <<EOF > dashboard-admin.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
# 安裝
kubectl create -f dashboard-admin.yaml
# 檢視埠
kubectl get svc --namespace=kube-system
# 單節點情況下, 無法操作節點
kubectl taint nodes --all node-role.kubernetes.io/master-
## END ######################################################
# 不直接為 Dashboard 賦予 Admin 的許可權
# 建立賬戶
kubectl create serviceaccount k8sadmin -n kube-system
kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
# 檢視賬號是否建立成功
kubectl get sa --all-namespaces
# 獲取 Token 登陸
kubectl get secret -n kube-system | grep k8sadmin | cut -d " " -f1 | xargs -n 1 | xargs kubectl get secret -o 'jsonpath={.data.token}' -n kube-system | base64 --decode
# 埠轉發, kubernetes-dashboard-54fb766c84-psnrh 是透過 `kubectl get pod --namespace=kube-system` 查出來的
kubectl port-forward kubernetes-dashboard-54fb766c84-psnrh 8443:8443 --namespace=kube-system &
註釋 01
# 註釋掉這一行
# /swapfile none swap sw 0 0
註釋 02
init 常用主要引數:
–kubernetes-version
: 指定Kubenetes版本,如果不指定該引數,會從google網站下載最新的版本資訊。–pod-network-cid
r: 指定pod網路的IP地址範圍,它的值取決於你在下一步選擇的哪個網路網路外掛,比如我在本文中使用的是 flannel 網路,需要指定為10.244.0.0/16。–apiserver-advertise-address
: 指定master服務釋出的Ip地址,如果不指定,則會自動檢測網路介面,通常是內網IP。kubeadm init 輸出的token用於master和加入節點間的身份認證,token是機密的,需要保證它的安全,因為擁有此標記的人都可以隨意向叢集中新增節點。
如果只有一個 cpu 請加引數:
--ignore-preflight-errors=NumCPU
註釋 03
k8s-pull.sh
# 將對應的包, 從國內映象上拉下來
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
本作品採用《CC 協議》,轉載必須註明作者和本文連結