系統: Ubuntu 18.04.2 LTSnode
內存: 8Gnginx
機器:git
屬性 | IP | Hostname | ssh |
Master | 192.168.91.48 | blackray-pc | |
node1 | 192.168.91.221 | node1-VirtualBox | node1@192.168.91.221 |
node2 | 192.168.91.222 | node1-VirtualBox | node2@192.168.91.222 |
1 安裝前準備
1.1 關閉系統swap分區(須要重啓系統)
vi /etc/fstab,註釋swap行的UUID信息 github
1.2 /etc/apt/source.list中配置阿里雲k8s源
# kubeadm及kubernetes組件安裝源
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial maindocker
1.3 安裝kubeadm kubectl kubeletapi
apt-get update
apt-get install kubeadm kubelet kubectl -y
2 下載k8s須要的鏡像,因爲k8s.gcr.io國內訪問不了,能夠從docker.io上下載相同版本鏡像,再從新打tag爲源版本(能夠先執行第三部,從報錯信息中查看須要下載的鏡像版本)
2.1
docker pull docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4
docker pull docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4
docker pull docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4
docker pull docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4
docker pull docker.io/mirrorgooglecontainers/pause:3.1
docker pull docker.io/mirrorgooglecontainers/etcd:3.2.24
docker pull docker.io/coredns/coredns:1.2.6
2.2 將鏡像從新打tag回k8s.gcr.io
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.4 k8s.gcr.io/kube-apiserver:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.4 k8s.gcr.io/kube-controller-manager:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.4 k8s.gcr.io/kube-scheduler:v1.13.4
docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.4 k8s.gcr.io/kube-proxy:v1.13.4
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6網絡
3 初始化Master 使用flannel網絡方案(執行第二步鏡像的版本號從這一步的提示信息中獲取)
3.1 kubeadm init --apiserver-advertise-address 192.168.91.48 --pod-network-cidr=10.244.0.0/16
執行完畢,在提示信息中提示工做節點如何加入集羣的命令,如:
kubeadm join 192.168.91.48:6443 --token kt3n05.2kckopgl445znxir --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65app
3.2 執行命令ssh
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf (臨時生效)測試
在/etc/profile文件中加入export KUBECONFIG=$HOME/admin.conf
3.3 安裝flannel網絡: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
token過時(24小時過時)後可從新生成token:
kubeadm token create --ttl 0 (--ttl 0表明永不過時)
查看token: kubeadm token list
獲取ca證書sha256編碼hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
回顯值:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65
新的加入命令
kubeadm join 192.168.91.48:6443 --token enzyy3.3v8g89erxgs33rzt --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65
4 node節點安裝如下鏡像(被牆,須要手動安裝)
k8s.gcr.io/kube-proxy v1.13.4 fadcc5d2b066 2 weeks ago 80.3MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 15 months ago 742kB
鏡像安裝與第二步一致
5 工做幾點加入集羣,執行命令
kubeadm join 192.168.91.48:6443 --token kt3n05.2kckopgl445znxir --discovery-token-ca-cert-hash sha256:34bf00baef51f48991e3eb6a9f898d2c93daf53d272d886c2b7b8417eb567f65
6 在Master節點上查看節點狀態
kubectl get node
STATUS狀態值爲READY時表示工做節點加入k8s集羣成功並可正常工做
7 編寫yaml文件,測試服務是否可正常調度(Master節點上)
nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80 #服務暴露的端口
protocol: TCP
targetPort: 80 #容器暴露的端口
nodePort: 30008 #節點暴露的端口
selector:
app: nginx
type: NodePort
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
在yaml文件所在的工做目錄執行 kubectl apply -f nginx-service.yaml
訪問http://192.168.91.221:30008 或 http://192.168.91.222:30008出現nginx首頁即表示正常運行