該文章已更新,更新時間:2020-9-22 14:11:18
ubuntu16.04
docker 19.03.12
k8s 1.18.0
istio 1.5.0
准備工作:
swapoff -a
查看交換空間
free -h
避免開機啟動交換空間,打開下面的文件,注釋掉swap那一行
vim /etc/fstab
ufw disable
修改主機名,修改文件中的名字,集群中不同端點的名稱不同
vim /etc/hostname

再把登記的主機名稱改過來,修改127.0.1.1后面那個名字
vim /etc/hosts

固定IP:
vmware虛擬機-編輯-虛擬網絡編輯器
選擇vmnet8,nat模式,修改子網ip為192.168.8.0,按鈕全選

點擊nat設置,修改網關為192.168.8.2

虛擬機網絡適配器選擇使用nat模式
vim /etc/network/interfaces
在對應網卡下增加如下內容:
注意inet dhcp要改成static,dhcp表示動態,address改成自己的ip
sudo /etc/init.d/networking restart
配置本地dns,增加nameserver 192.168.8.2
vim /etc/resolvconf/resolv.conf.d/base

重啟
ping一下試試
ping baidu.com
配置DNS,打開DNS注釋,值為114.114.114.114
vim /etc/systemd/resolved.conf

設置時區
dpkg-reconfigure tzdata
選擇Asia,ShangHai
sudo apt-get install ntpdate
設置系統時間與網絡時間同步
ntpdate cn.pool.ntp.org
將系統時間寫入硬件時間
hwclock --systohc
配置完成后重啟。
docker安裝:
sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
安裝GPG證書
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
寫入軟件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
更新並安裝docker
sudo apt-get -y update sudo apt-get -y install docker-ce
配置鏡像加速,創建或修改/etc/docker/daemon.json文件,內容如下
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
重啟服務
sudo systemctl daemon-reload sudo systemctl restart docker
檢查加速器是否生效
sudo docker info
有如下提示:表示鏡像加速成功
Registry Mirrors: https://registry.docker-cn.com/
查看docker版本
docker version
k8s安裝
deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial main deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
apt-get update && apt-get install -y apt-transport-https
安裝GPG證書
如果提示root權限,就切換到root用戶
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
添加源
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main"
安裝
apt-get update apt-get install -y kubelet=1.18.0-00 kubeadm=1.18.0-00 kubectl=1.18.0-00
安裝完重啟計算機
創建配置目錄
cd /usr/local/
mkdir k8s
cd k8s
mkdir config
cd config
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
vim kubeadm.yml
apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.8.130 # 修改IP(虛擬機靜態IP,前面設置的) bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock name: k8s-master taints: - effect: NoSchedule key: node-role.kubernetes.io/master --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta2 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes controllerManager: {} dns: type: CoreDNS etcd: local: dataDir: /var/lib/etcd imageRepository: registry.aliyuncs.com/google_containers # 修改鏡像源 kind: ClusterConfiguration kubernetesVersion: v1.18.6 networking: dnsDomain: cluster.local podSubnet: "10.244.0.0/16" # 增加配置,用於節點間通信 serviceSubnet: 10.96.0.0/12 scheduler: {}
kubeadm config images list --config kubeadm.yml
拉取鏡像
kubeadm config images pull --config kubeadm.yml
如果pull失敗,就是網絡的問題了,另一個方案:從docker倉庫下載
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
查看鏡像
docker images

初始化
kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log
執行命令,已經提示你了
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
在k8s/config目錄下,執行:
vim calico.yaml
以下內容復制進去:
apiVersion: operator.tigera.io/v1 kind: Installation metadata: name: default spec: # Configures Calico networking. calicoNetwork: # Note: The ipPools section cannot be modified post-install. ipPools: - blockSize: 26 cidr: 10.244.0.0/16 encapsulation: VXLANCrossSubnet natOutgoing: Enabled nodeSelector: all()
執行命令:
kubectl create -f calico.yaml
觀察calico啟動,需要kexue上網,否則不能成功下載鏡像
watch kubectl get pods -n calico-system
等待所有pod均為running狀態

查看k8s相關pod運行情況
kubectl get pod -n kube-system

確保所有pod都是running
安裝Isito
kubectl taint nodes --all node-role.kubernetes.io/master-
下載istio
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.5.0 sh -
配置istioctl
cd istio-1.5.0 export PATH=$PWD/bin:$PATH
安裝istio
istioctl manifest apply --set profile=demo
確保所有istio有關pod都為running狀態
kubectl get pod -n istio-system

為default命名空間配置自動注入
kubectl label namespace default istio-injection=enabled kubectl get namespace -L istio-injection
解決每次重啟都要配置istioctl命令:
使用root用戶,修改/root/.bashrc文件,增加如下內容:
export PATH="$PATH:/usr/local/istio/istio-1.5.0/bin
注意根據安裝路徑,修改一下,重啟。
至此,docker,k8s,istio安裝完成。
以上安裝過程如出現問題,請及時反饋,望能有所幫助。
