从绫开始的k3s到istio(一):安装K3S
从绫开始的k3s到istio(一):安装K3S
因为k8s太大了嘛,就一直想搞也莫得银子。正巧从逼乎上看到了k3s,也是挺有意思,正好我服务器也能勉强带的动(2C4G)就搞了一个。这个系列主要使用k3s+istio。从k3s安装,配置资源服务,部署代码,自动化构建到状态监控等,会一直更新下去。
K3S安装
安装前有几点注意:
hostname。
因为k3s的node节点有命名规则,只允许字母、数字和中划线(
-)。并且节点名称默认名称使用hostname,因此某些云服务商的默认命名可能有问题,比如VM_6。这种节点是无法创建成功的,因此我们首先要重命名hostname。sudo hostnamectl set-hostname <newhostname>用istio代替traefik做反向代理
因为traefik不支持mysql、redis等协议代理,因此我们用istio做反代
国内源安装k3s
curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="server --no-deploy=traefik --kube-apiserver-arg service-node-port-range=1-65535" sh -关于安装参数,我们一条一条来解释:
INSTALL_K3S_MIRROR:使用国内源安装
INSTALL_K3S_EXEC:安装参数
- –no-deploy=traefik:禁用traefik代理。traefik是k3s自带的反向代理,因为我们这里要使用istio做反代,所以把默认的traefik禁用。
- –kube-apiserver-arg service-node-port-range=1-65535:端口映射范围,api-server默认可映射到宿主的端口范围是30000+,但是我们有些资源或者服务要映射到外部供外部调用,比如80、443、3306等……因此要更改默认范围。前面的–kube-apiserver-arg表示这是一个k8s服务的配置参数。具体可参考文档额外的配置选项。
安装kubectl
# 用阿里源安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl安装验证
检查节点状态
$ kubectl get node NAME STATUS ROLES AGE VERSION vm6 Ready master 5d23h v1.18.3+k3s1检查节点的污点情况
# 请检查节点的污点情况,如果是false,则下面可以略过 $ kubectl describe node vm6 | grep Unschedulable Unschedulable: false # 因为我只有一台服务器,所以仅部署了master节点,正常master节点是不允许运行pod的,这里是对master做了污化 # 移除node.kubernetes.io/unschedulable,或执行以下命令 $ kubectl taint nodes --all node-role.kubernetes.io/master- $ kubectl taint nodes --all node-role.kubernetes.io/master:PreferNoSchedule- # 这一步不确定性较大,如果都不可用,请自行根据文档解决,文档地址 # https://kubernetes.io/zh/docs/concepts/configuration/taint-and-toleration/#%E6%A6%82%E5%BF%B5检查dns解析情况
$ nslookup kubernetes.default Server: 10.0.0.10 Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local Name: kubernetes.default Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local # 如果显示NODOMAIN等,请修改/etc/resolv.conf,添加dnsip和search # 获取kube-dns的endpoint ip $ kubectl get endpoints -n kube-system | grep kube-dns kube-dns 10.42.0.54:53,10.42.0.54:9153,10.42.0.54:53 6d $ vim /etc/resolv.conf # nameserver放在第一行 nameserver 10.42.0.54 search default.svc.cluster.local svc.cluster.local svc.cluster.local cluster.local options ndots:5 # 若产生其他问题请根据文档解决 # https://kubernetes.io/zh/docs/tasks/debug-application-cluster/debug-service/#service-%E6%98%AF%E5%90%A6%E9%80%9A%E8%BF%87-dns-%E5%B7%A5%E4%BD%9C
文档地址
从绫开始的k3s到istio(一):安装K3S
https://note.0moe.cn/运维/2020/06/19/从绫开始的k3s到istio(一)/