实际生产环境集群或单机AllInOne安装推荐
https://github.com/easzlab/kubeasz
注意:
- 该项目的
kubernetes_dashboard
的服务对外暴露采用的是NodePort
方式 - 访问
kubernetes_dashboard
需要使用firefox浏览器
分块手动安装便于理解和学习
环境: 两台装有Ubuntu的机器 一台作为master 一台作为work node
更改ubuntu的apt源
替换cn.archive.ubuntu.com为mirrors.163.com
sudo nano /etc/apt/sources.list
sudo apt update
复制代码
固定当前IP更改主机名
$HOSTNAME 根据具体角色来确定 比如master,node1
sudo hostnamectl set-hostname $HOSTNAME
sudo nano /etc/hosts
复制代码
sudo bash -c 'cat <<EOF >/etc/netplan/01-network-manager-all.yaml
network:
ethernets:
ens33:
dhcp4: no
addresses: [192.168.2.107/24]
gateway4: 192.168.2.1
nameservers:
addresses: [192.168.2.1]
EOF'
sudo netplan apply
sudo
复制代码
反向代理gcr.io,quay.io
配置目的主要是不想在yaml文件中改image源 无法反向代理k8s.gcr.io如果有谁知道怎么处理,请告知我
sudo apt install nginx
sudo bash -c 'cat <<EOF >/etc/nginx/conf.d/proxy.conf
server {
listen 80;
server_name gcr.io;
location / {
proxy_pass http://gcr.azk8s.cn;
}
}
server {
listen 80;
listen 443 ssl;
server_name quay.io;
location / {
proxy_pass http://quay.azk8s.cn;
}
}
EOF'
sudo systemctl restart nginx
sudo bash -c 'cat >>/etc/hosts<<EOF
127.0.0.1 quay.io
127.0.0.1 gcr.io
EOF'
复制代码
### 安装Docker
将当前用户添加到docker组sudo usermod -aG docker $USER
重新登录以使更改生效
启动docker并使其能够在后台驻留sudo systemctl start docker
sudo systemctl enable docker
关闭Swap
sudo swapoff -a
sudo nano /etc/fstab
注释掉swap.img
开头的行
添加key和源
添加k8s GPG key:curl http://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
添加k8s国内源 (注意版本代号为xenial而不是yakkety):
sudo bash -c 'cat << EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF'
复制代码
sudo apt-get update
安装必要的软件
sudo apt-get install docker.io kubeadm kubelet kubectl -y
若想安装指定的版本:sudo apt-get install kubeadm=1.10.2-00 kubectl=1.10.2-00 kubelet=1.10.2-00
设置docker mirror
sudo bash -c 'cat << EOF >/etc/docker/daemon.json
{
"registry-mirrors": ["https://hub-mirror.c.163.com"],
"insecure-registries": ["gcr.io", "k8s.gcr.io", "quay.io"]
}
EOF'
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码
使用国内云或azure镜像
此步骤可跳过,在下一本的初始化master参数中可以指定image仓库 仅master机器需要操作
获取镜像列表
kubeadm config images list
由于官方镜像地址被墙,所以我们需要首先获取所需镜像以及它们的版本。然后从国内镜像站获取。
首先输出kubeadm默认配置:kubeadm config print init-defaults > kubeadm-init.yaml
将imageRepository的值修改成 registry.cn-hangzhou.aliyuncs.com/google_containers 或改成gcr.io/google_containers
拉取镜像
sudo kubeadm config images pull --config kubeadm-init.yaml
或者跳过以上步骤,不使用配置文件直接通过命令拉取
sudo kubeadm config images pull --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
复制代码
获取镜像列表后可以通过下面的脚本get-images.sh从国内获取:
images=( # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本
kube-apiserver:v1.17.3
kube-controller-manager:v1.17.3
kube-scheduler:v1.17.3
kube-proxy:v1.17.3
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
复制代码
初始化master
sudo kubeadm init --image-repository=gcr.io/google_containers
若需指定pod网络地址块加入如下参数,请注意不要与宿主机所在网络地址块冲突--pod-network-cidr=10.0.0.0/16
注意初始化master后会输出node加入到集群中的token,以下token根据自己的集群输出会有所不同,后期可以通过kubeadm token create --print-join-command
命令生成 :
kubeadm join 192.168.2.107:6443 --token u59vc3.1x0k41qw6ygg969h \
--discovery-token-ca-cert-hash sha256:efb58a0a6d502f49049d04f9d9c532a32b449b7498f4746021671edcf95d4160
复制代码
普通用户设置权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
安装flannel网络
注意raw.githubusercontent.com有访问频率限制
curl -k https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml >>kube-flannel.yml
kubectl apply -f kube-flannel.yml
复制代码
node部分
配置好apt源即可
安装必要的软件
sudo apt-get install docker.io kubeadm kubelet -y
根据master在kubeadm init 步骤得到的加入节点命令加入到集群中
sudo kubeadm join 192.168.2.107:6443 --token dytw66.s6w4iifft8y0nl61 --discovery-token-ca-cert-hash sha256:d8a5ce9c29455b516620779e49069b9245df3a7c13686f421fdc82f958363304
复制代码
如果提示加入时10250端口被占用,这是之前初始化过node节点但未成功加入集群导致解决方法
sudo kubeadm reset
复制代码
.然后执行 kubeadm join 添加节点到集群