Ubuntu 18.04 LTS安裝Kubernetes 1.11

Ubuntu 18.04 + Kuberntes 1.11.2 + Istio 1.0組合來了。

安裝Docker

#準備軟件源
sudo apt install docker.io
sudo systemctl enable docker

Install Docker -CEnode

add key:linux

https_proxy=192.168.199.249:30999 wget https://download.docker.com/linux/ubuntu/gpg -O docker.key
sudo apt-key add docker.key

add sourcegit

sudo echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic edge" > /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce

確保kubelet使用的cgroup driver 與 Docker的一致。要麼使用下面的方法更新 Docker:github

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

而後重啓Docker服務,運行:docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Kuberntes 1.11.2 安裝

按照如下步驟操做:json

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

#安裝基礎支持軟件
sudo apt install kubeadm kubectl kubelet

#關閉磁盤交換 
sudo swapoff -a

#清除防火牆設置
sudo iptables -F

#設置域名
sudo hostnamectl set-hostname kubernetes-master

#初始化環境,注意這個版本號必定要指定(不然會掛起)。
#指定使用CoreDNS做爲名稱服務,能夠不指定--feature-gates CoreDNS=true,則使用默認的kubedns服務。
sudo kubeadm init --kubernetes-version=v1.11.2 --pod-network-cidr=10.244.0.0/16 --feature-gates CoreDNS=true

#指定IP地址,1.12.2版本:
# sudo kubeadm init --kubernetes-version=v1.12.2 --apiserver-advertise-address=10.1.1.201 --pod-network-cidr=10.244.0.0/16 --feature-gates CoreDNS=true


#建立用戶配置文件
mkdir -p $HOME/.kube
kubernetes-master:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubernetes-master:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config

#安裝網絡
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#啓用主控機同時做爲工做節點
kubectl taint nodes --all node-role.kubernetes.io/master-


#查看結果
kubectl get pods --all-namespaces

!!!不過,有兩個問題ubuntu

  • 目前kubernetes尚未Ubuntu18.04的編好的版本,用的16.04 xenial的二進制文件。
  • 上面的cloud.google的key會出錯,使用下面的方法來獲取
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6A030B21BA07F4FB

而後執行sudo apt update及其後面的安裝步驟。api

!!!安裝flannel網絡出現pending掛起問題(podCidr參數丟失,即使在kubeadm運行時已指定):

#查看日誌:
kubectl get pods --namespace kube-system
kubectl --namespace kube-system logs kube-flannel-ds-bvxd2
#上面的kube-flannel-ds-bvxd2爲flannel的pod名稱,根據get pods返回的名稱輸入。

#編輯 /etc/kubernetes/manifests/kube-controller-manager.yaml
在command節,加入:
- --allocate-node-cidrs=true
- --cluster-cidr=10.244.0.0/16

而後system restart kubelet便可。

安裝Helm和Dashboard

參考:app

提早拉取容器鏡像

目前kubernetes最新版本是1.11.2,能夠從我作的鏡像庫上拉取:

echo ""
echo "=========================================================="
echo "Pull Kubernetes 1.11.1 Images from aliyuncs.com ......"
echo "=========================================================="
echo ""

MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings

## 拉取鏡像
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver-amd64:v1.11.2
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager-amd64:v1.11.2
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler-amd64:v1.11.2
docker pull ${MY_REGISTRY}/k8s-gcr-io-kube-proxy-amd64:v1.11.2
docker pull ${MY_REGISTRY}/k8s-gcr-io-etcd-amd64:3.2.18
docker pull ${MY_REGISTRY}/k8s-gcr-io-pause-amd64:3.1
docker pull ${MY_REGISTRY}/k8s-gcr-io-coredns:1.1.3


## 添加Tag
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-apiserver-amd64:v1.11.2 k8s.gcr.io/kube-apiserver-amd64:v1.11.2
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-scheduler-amd64:v1.11.2 k8s.gcr.io/kube-scheduler-amd64:v1.11.2
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-controller-manager-amd64:v1.11.2 k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
docker tag ${MY_REGISTRY}/k8s-gcr-io-kube-proxy-amd64:v1.11.2 k8s.gcr.io/kube-proxy-amd64:v1.11.2
docker tag ${MY_REGISTRY}/k8s-gcr-io-etcd-amd64:3.2.18 k8s.gcr.io/etcd-amd64:3.2.18
docker tag ${MY_REGISTRY}/k8s-gcr-io-pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1
docker tag ${MY_REGISTRY}/k8s-gcr-io-coredns:1.1.3 k8s.gcr.io/coredns:1.1.3

echo ""
echo "=========================================================="
echo "Pull Kubernetes 1.11.2 Images FINISHED."
echo "into registry.cn-hangzhou.aliyuncs.com/openthings, "
echo "           by openthings@https://my.oschina.net/u/2306127."
echo "=========================================================="

echo ""

把上面的內容保存爲腳本文件,運行便可。

而後再去運行kubeadm init進行集羣的初始化工做。

而後安裝Istio 1.0

Istio 1.0快速安裝到Kubernetes集羣

Kubenetes服務不啓動問題

重啓系統後,發現kubelet服務沒有起來,首先檢查:

nano /etc/fstab
#註釋掉裏面的swap一行。

最後,/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件加入KUBELET_CGROUP_ARGS和KUBELET_EXTRA_ARGS參數,注意在啓動參數中也要加入,以下:

[Service]

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"

ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_CGROUP_ARGS $KUBELET_EXTRA_ARGS

!而後重啓kubelet服務,運行:

systemctl daemon-reload
systemctl restart kubelet
相關文章
相關標籤/搜索