K8S 安装(ubuntu环境)

1:默认是从谷歌下载,我们可以添加阿里的k8s源

​cat <<EOF > /etc/apt/sources.list.d/kubernetes.list
deb Index of /kubernetes/apt/ kubernetes-xenial main
EOF

2:执行以下命令进行下载

apt-get update && apt-get install -y apt-transport-https curl
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

1):可能报错 Err:6 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease The following signatures couldnt be verified because the public key is not available: NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB Reading package lists... Done W: GPG error: https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease: The following signatures couldnt be verified because the public key is not available: NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB E: The repository https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease is not signed. N: Updating from such a repository cant be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.

解决方法: 执行以下命令,给阿里云源添加key:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FEEA9169307EA071

3:执行下面命令测试是否正常

kubeadm init --image-repository registry.aliyuncs.com/google_containers

1):可能报错 error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR Swap]: running with swap on is not supported. Please disable swap [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher

解决方法:

swapoff  -a
sed -ri s/.*swap.*/#&/ /etc/fstab

2):可能报错 HTTP call equal to curl -sSL http://localhost:10248/healthz failed with error: Get "http://localhost:10248/healthz": dial tcp 127.0.0.1:10248: connect: connection refused.

解决办法:

create daemon.json
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"]}

systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

sudo kubeadm reset
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers

4:修改TAG标签

查看当前从阿里云获取的镜像

docker images

registry.aliyuncs.com/google_containers/kube-apiserver            v1.22.3

然后执行,查看需要修改成什么tag标签

kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.22.3

使用 docker tag {旧名称:版本} {新名称:版本} ,将镜像改名。

例:

docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.3 k8s.gcr.io/kube-apiserver:v1.22.3

5:使主节点生效

添加环境变量

export KUBECONFIG=/etc/kubernetes/admin.conf

添加网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

此时如果显示无法找到 raw.githubusercontent.com,则需要找到其对应的IP,放在/etc/hosts文件内,该文件默认为只读,需要先修改该文件的权限

185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com

如果仍旧不行,那就搞个VPN试试吧

flannel镜像

#每个节点都需要拉取镜像
docker pull lwolf/flannel:v0.12.0
# 为什么要打tag,因为kube-flannel.yaml文件里面的镜像名称就是quay.io/coreos/flannel:v0.12.0-amd64
docker tag lwolf/flannel:v0.12.0 quay.io/coreos/flannel:v0.12.0-amd64

dns插件的安装与应用

没有网络插件的话,dns也不能正常起作用

kubectl get svc -n kube-system -o wide #获取dns服务的ip地址
nslookup svc-nginx.default.svc.cluster.local 10.96.0.10 只能完整域名查找,并且要包含dns服务器的ip
经验分享 程序员 微信小程序 职场和发展