k8s权威指南学习笔记(1)
k8s安装配置指南
kubeadm安装
安装kubeadm
kubeadm是为了简化集群安装过程引入的工具
大致步骤为换源,然后包管理工具安装以下套件
yum install -y kubelet kubeadm kubectl
修改kubeadm的默认配置
kubeadm config print init-defaults # 输出kubeadm init默认参数
kubeadm config print join-defaults # 输出kubeadm join的默认参数
使用以下命令将默认配置保存备用
kubeadm config print init-defaults > init.default.yaml
下载kubenetes相关镜像
为了加快k8s创建集群过程,可预先下载images
kubeadm config images list # 查看镜像列表
kubeadm config images pull --config=init-config.yaml# 预下载镜像
kubeadm config images pull --image-repository=http://registry.cn-hangzhou.aliyuncs.com/google_containers # 或者这样
注:如果访问不了k8s.gcr.io,则需修改/etc/docker/daemon.json
中的registry-mirrors
项,改为国内地址。
换源是个很麻烦的问题,以下是另一种方案
kubeadm config images list # 查看所需镜像列表
images=( # 下面的镜像应该去除"k8s.gcr.io/"的前缀,版本换成上面获取到的版本
kube-apiserver:v1.12.1
kube-controller-manager:v1.12.1
kube-scheduler:v1.12.1
kube-proxy:v1.12.1
pause:3.1
etcd:3.2.24
coredns:1.2.2
)
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
# 使用脚本拉取
该方案来源:https://zhuanlan.zhihu.com/p/46341911
使用kube init 安装master节点
kubeadm init # 初始化
kubeadm init phase preflight # 只做预检查
kubeadm init --ignore-preflight-errors # 跳过预检查进行初始化
注意:如果是在启动了kubelet之后再拉取的镜像,请重启kubelet。不然kubeadm会识别不到刚刚拉取的镜像
ps:最后还是挂梯子init完了,有个镜像的名字和要求的不一样,懒得改tag了
对于root用户,直接键入export KUBECONFIG=/etc/kubernetes/admin.conf
后即可使用kubectl查看control plane的信息,对于其他用户,需要使用另外的步骤,这些步骤都会在安装完成后显示出来,我贴在下面
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.0.2.15:6443 --token sddm7y.7eebnrzpl2koekx1 \
--discovery-token-ca-cert-hash sha256:77ed4804b2c367c1f3eb0b3e7114fdbed2bc94748d26d04d14d22af67fbb7e7e
如果不执行这些步骤,会出现以下报错
The connection to the server localhost:8080 was refused - did you specify the right host or port?
还要注意的一点是,kubeadm默认的安装过程不包含网络插件(CNI)的初始化,这些需要另外的步骤了。
加入节点
在节点配置好环境后,将上面的kubeadm join
输入到另一节点即可。
安装CNI网络插件
略
二进制形式部署安全高可用k8s集群
master高可用架构
- master中的kube-apiserver、kube-controller-manager、kube-scheduler至少以三个节点的多实例方式部署
- master启用基于CA认证的HTTPS安全机制
- etcd以至少三个节点的集群模式部署
- etcd启用CA认证的HTTPS安全机制
- master启用RBAC授权模式
在三个(或多个)master节点前,通过一个负载均衡器提供对客户端唯一访问入口地址。
CA根证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=网址" -days 36500 -out ca.crt
- -subj: “/CN”的值为master主机名或IP地址
- -days:设置证书的有效期
- 将生成的
ca.key
和ca.crt
保存至/etc/kubernetes/pki
目录下
看到这里发现后面的看不太懂了,先跳一跳
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kawhicurry's Blog!
评论