在 Power Systems 平台上也使用 Kubernetes!
在Power架构上的Linux与x86架构有什么不同吗?
基本上,Power系統和x86系統相同。
但是,顯然在Power系統中無法運行x86的映像,所以需要適應其架構的映像。
只需注意這一點,就可以像使用x86一樣使用。
另外,我們認為使用Power系統的許多人在從Power系統訪問互聯網時需要使用代理,所以在這篇文章中我們想介紹使用代理的步驟。
组成
我在以下环境中尝试了使用kubeadm命令搭建只有一个节点运行的Kubernetes(单主节点集群)。
操作系统:RHEL 7.9 LE
内存:4GB
CPU:2核(POWER8)
存储:50GB
代理设置
首先,在.bashrc或.bash_profile文件中设置以下环境变量。
如果不正确地设置NO_PROXY以访问自己的节点,稍后可能会遇到问题。
export http_proxy="http://10.91.0.1:8080"
export https_proxy="http://10.91.0.1:8080"
export ftp_proxy="http://10.91.0.1:8080"
export proxy="http://10.91.0.1:8080/"
export NO_PROXY="localhost,10.91.XX.XX"
export no_proxy="localhost,10.91.XX.XX"
再次,请将以下设置放入/etc/rhsm/rhsm.conf文件中。
# an http proxy server to use
proxy_hostname = 10.91.0.1
# The scheme to use for the proxy when updating repo definitions, if needed
# e.g. http or https
proxy_scheme = http
# port for http proxy server
proxy_port = 8080
订阅注册
因为需要server-extra和server-optional仓库来引入Docker,所以需要进行订阅注册。
subscription-manager register --username XXXXXX --autosubscribe
然后,启用附加存储库。
subscription-manager repos --enable=rhel-7-server-extras-rpms
subscription-manager repos --enable=rhel-7-server-optional-rpms
将自己的主机添加到/etc/hosts文件中。
为了让自己的主机名能够解析,将自己的主机名添加到hosts文件中预先配置好。
10.91.XX.XX k8snode
引入Docker
我按照RedHat文档中的说明安装了Docker。
在RHEL 7中获取Docker
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html-single/getting_started_with_containers/index#getting_docker_in_rhel_7
yum install docker device-mapper-libs device-mapper-event-libs
systemctl start docker.service
systemctl enable docker.service
我們也需要在Docker中設置代理。
mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://10.91.0.1:8080/" "HTTPS_PROXY=http://10.91.0.1:8080/" "NO_PROXY=10.91.xx.xx/16"
重新启动Docker守护程序,并使用docker info命令确认代理已设置。
systemctl daemon-reload
systemctl restart docker
docker info
只是现在才说,我会将防火墙暂时停止。
我记错了,但我已将SELinux设置为permissive或disable。
systemctl disable firewalld
systemctl stop firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
我会禁用swap。
sudo swapoff -a
别忘了编辑 /etc/fstab。
UUID=d06071e3-4760-4d1b-98d3-891566cbf0c3 / ext4 defaults 0 0
#/swap.img none swap sw 0 0
Kubernetes 的实施
添加一个为了引入 Kubernetes 的仓库。
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-ppc64le
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
我会安装kubelet、kubeadm和kubectl。
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet
使用kubeadm进行Kubernetes的配置。
首先,进行dry-run以确认没有错误,然后进行正式配置。
“–pod-network-cidr=”用于指定在Kubernetes集群内使用的CIDR。
kubeadm init --pod-network-cidr=192.168.0.0/16 --dry-run
kubeadm init --pod-network-cidr=192.168.0.0/16
成功后,您将获得以下输出。
这些信息将用于以后访问Kubernetes,因此请务必妥善保存。
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
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.91.133.55:6443 --token 5yu18p.kf9k01j8ndzfbok4 \
--discovery-token-ca-cert-hash sha256:d6e4c68bcc8347e71d946dbc7992c474c17170ce262cc9fa36b3dc980cd887f1
为了通过admin访问kubernetes,立即复制 ~/.kube/config 文件。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
最初的状态下,为了防止Pod放置在主节点上,主节点被注入了脏数据,需要解除脏数据。
kubectl get node
kubectl describe node <自ノード>
kubectl taint nodes <自ノード> node-role.kubernetes.io/master:NoSchedule-
我们已经完成了Kubernetes的部署。
安装Calico
当在多个节点上使用时,需要引入CNI。
以下是引入Calico的步骤介绍。
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
文献引用
使用 kubeadm 创建单主节点集群
https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
使用kubeadm创建一个单一的主集群。
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
在本地部署中安装Calico